Skip to contentSkip to conversation

Add gobject introspection support to oe-core

PATCH In review Alexander Kanavin 10 participants 66 messages Nov 9, 2015 – Mar 10, 2016

lore
Share & tools
lore
#0 lore raw

cover Add gobject introspection support to oe-core

1. Introduction

This patchset adds support for gobject introspection to oe-core. Gir files go to -dev packages, typelib files go to main packages (they are packaged together with libraries that are introspected).

The work is based on a meta-gir layer, which was used as a proof of concept; overall approach is same and some implementation ideas were used, but this implementation is otherwise different, and hopefully simpler and cleaner.

2. 30 second tutorial for adding introspection support to a package:

a. Inherit gobject-introspection class (or a class that inherits it, such as gnome-base).

b. Make sure introspection is not disabled anywhere in the recipe or its includes.

c. Try to build the recipe; if this results in build errors that look like something is unable to find .so libraries, check where these libraries are in the source tree and add GIR_EXTRA_LIBS_PATH=${B}/something/.libs to the recipe.

c. Any other errors probably mean that introspection support in a package is not entirely standard, and breaks down in a cross-compilation environment. Custom-made fixing is needed then.

3. How to verify that introspection works in an image:

a. Build core-image-sato.

b. Start terminal, start python3 in the terminal.

c. Type out something like:

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

from gi.repository import GLib
GLib.get_host_name()

d. Also, try something more advanced, for example:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/introduction.html

4. Request for testing - I would like this patchset to be checked on three levels:

a. Test it in all of the build environments you have. Let me know any errors or warnings. Also let me know, if some package can be built with introspection enabled, but is not.

b. Check the patchset for correct use of Yocto idioms. It touches a lot of things in a lot of different ways, and maybe there are better ways to do what it does.

c. Check that the overall design is sensible: how things work is hopefully explained in comments and commit messages.

5. Known issues:

- there is no way to globally switch off the whole thing at the moment; this should probably be a DISTRO_FEATURE (also see the next item)

- qemu-ppc64 crashes out immediately; so anything that supports introspection cannot be built on that architecture:
Invalid data memory access: 0x00000040d89c5008
...

- gcr introspection is disabled in x86_64, because introspection helper binary goes into an infinite loop under qemu (on that architecture only).

- gcr and libsecret introspection is disabled in mips64, because introspection helper binary fails an assertion in libgpg-error

- webkit introspection is disabled in powerpc, because qemu-ppc crashes out when running g-ir-compiler

- the patchset has not been tested with layers in meta-oe; just making oe-core build without errors on all standard architectures has been a big, long task.

- the whole thing should be documented in Yocto manuals

The following changes since commit fc45deac89ef63ca1c44e763c38ced7dfd72cbe1:

build-appliance-image: Update to jethro head revision (2015-11-03 14:03:03 +0000)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib akanavin/gobject-introspection-experimental
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=akanavin/gobject-introspection-experimental

Alexander Kanavin (29):
qemu.bbclass: add qemu_wrapper_cmdline()
qemu: don't blacklist mips64 when building runners of userspace
binaries
gobject-introspection: add the recipe
gtk-doc-stub: remove introspection stubs gobject-introspection.bbclass: add a class that enables gobject
introspection
python3-native: use the previous version of python-config script
avahi-ui: remove the dependency on python-pygtk by disabling
avahi-discover
python-pygtk: remove the recipe
avahi: enable gobject-introspection
udev: enable gobject introspection
vala: enable the use of vapigen by packages with vala support
gcr: enable generation of vapi files using vapigen
gdk-pixbuf: enable gobject introspection
gconf: enable gobject-introspection
gtk+: enable gobject introspection
gtk+3: enable gobject-introspection
libsecret: enable generation of vapi files using vapigen
clutter: enable gobject introspection
vala.bbclass: remove pre-packaged vapigen.m4 from tarballs libsoup-2.4: enable gobject introspection
at-spi2-core: enable gobject introspection
gstreamer: enable gobject introspection gnomebase.bbclass: enable gobject introspection
webkitgtk: enable gobject introspection
gcr: disable gobject introspection on x86-64 for now
gcr: disable gobject-introspection on mips64
libsecret: disable gobject-introspection on mips64
webkitgtk: disable gobject-introspection on powerpc packagegroup-core-x11-sato: add python-pygobject and gtk+3

 meta/classes/gnomebase.bbclass                     |   5 +-
 meta/classes/gobject-introspection.bbclass         |  36 +++
 meta/classes/qemu.bbclass                          |  23 +-
 meta/classes/vala.bbclass                          |   6 +
 meta/conf/distro/include/distro_alias.inc          |   1 -
 meta/recipes-connectivity/avahi/avahi-ui_0.6.31.bb |  16 +-
 meta/recipes-connectivity/avahi/avahi.inc          |  12 +-
 .../packagegroups/packagegroup-self-hosted.bb      |   1 -
 meta/recipes-core/udev/udev.inc                    |  10 +-
 ...file.am-don-t-hardcode-g-ir-compiler-name.patch |  27 ++
 ...c-use-PKG_CONFIG_SYSROOT_PATH-when-findin.patch |  32 +++
 ....am-use-libtool-when-running-g-ir-scanner.patch |  26 ++
 ...c-add-sysroot-path-to-GI_DATADIR-don-t-se.patch |  41 +++
 .../python/python-pygobject_2.28.3.bb              |  53 ----
 .../python/python-pygobject_3.18.0.bb              |  29 ++
 .../python/python-pygtk/acinclude.m4               |  90 ------
 .../add-gtk-types.defs-into-gdk.c-dependence.patch |  32 ---
 .../python/python-pygtk/fix-gtkunixprint.patch     |  20 --
 .../python/python-pygtk/fix-pygtk-2.0.pc.patch     |  13 -
 .../python/python-pygtk/nodocs.patch               |  15 -
 .../prevent_to_get_display_during_import.patch     |  16 --
 .../python/python-pygtk/python-pygtk2/acinclude.m4 |  90 ------
 .../update-dependences-of-defs.c.patch             |  38 ---
 .../recipes-devtools/python/python-pygtk_2.24.0.bb |  55 ----
 .../python/python3-native_3.4.3.bb                 |   1 +
 ...the-shell-version-of-python-config-that-w.patch |  38 +++
 meta/recipes-devtools/qemu/qemu-targets.inc        |   2 +-
 meta/recipes-devtools/vala/vala.inc                |  10 +
 ...001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch |  38 +++
 meta/recipes-devtools/vala/vala_0.28.0.bb          |   4 +-
 meta/recipes-gnome/gcr/gcr_3.16.0.bb               |  22 +-
 meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.8.bb |   7 +-
 meta/recipes-gnome/gnome/gconf_3.2.6.bb            |   6 +-
 ...config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch |  99 +++++++
 ...01-giscanner-add-a-use-ldd-wrapper-option.patch |  48 ++++
 ...1-giscanner-add-use-binary-wrapper-option.patch |  52 ++++
 ...c-add-host-gi-and-gi-cross-wrapper-option.patch | 158 +++++++++++
 .../gobject-introspection_1.44.0.bb                | 146 ++++++++++
 .../gsettings-desktop-schemas_3.16.1.bb            |   2 +-
 meta/recipes-gnome/gtk+/gtk+.inc                   |   9 +-
 meta/recipes-gnome/gtk+/gtk+3.inc                  |  10 +-
 ...t-Import-introspection-stub-machinery-too.patch | 305 +++++++++++++++++++++
 .../recipes-gnome/gtk-doc-stub/gtk-doc-stub_git.bb |   6 +-
 meta/recipes-gnome/librsvg/librsvg_2.40.10.bb      |   3 -
 meta/recipes-gnome/libsecret/libsecret_0.18.2.bb   |  14 +-
 ...ation-paths-for-.gir-and-.typelib-as-reco.patch |  32 +++
 meta/recipes-gnome/libwnck/libwnck3_3.14.0.bb      |   3 +-
 meta/recipes-graphics/clutter/clutter-1.0.inc      |   5 +-
 meta/recipes-graphics/clutter/clutter-gst-3.0.inc  |   4 +-
 meta/recipes-graphics/clutter/clutter-gtk-1.0.inc  |   3 +-
 meta/recipes-graphics/cogl/cogl-1.0.inc            |   8 +-
 meta/recipes-graphics/mx/mx.inc                    |   5 +-
 meta/recipes-graphics/pango/pango.inc              |   3 +-
 ...op-introspection-macros-from-acinclude.m4.patch | 121 ++++++++
 meta/recipes-graphics/pango/pango_1.36.8.bb        |   1 +
 .../recipes-multimedia/gstreamer/gst-player_git.bb |   2 +-
 .../gstreamer/gst-plugins-package.inc              |   1 +
 ...-don-t-hardcode-libtool-name-when-running.patch |  42 +++
 .../gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb    |   1 +
 .../gstreamer/gstreamer1.0-plugins-base.inc        |   4 +
 ...-don-t-hardcode-libtool-name-when-running.patch | 168 ++++++++++++
 ...-prefix-calls-to-pkg-config-with-PKG_CONF.patch | 298 ++++++++++++++++++++
 ...ssing-include-directories-when-calling-in.patch |  28 ++
 ...ncorrect-reference-to-gstreamer-sdp-in-Ma.patch |  27 ++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |   4 +
 .../gstreamer/gstreamer1.0-plugins.inc             |  10 +-
 .../gstreamer/gstreamer1.0-rtsp-server.inc         |   9 +-
 ...ode-libtool-name-when-using-introspection.patch |  27 ++
 .../gstreamer/gstreamer1.0-rtsp-server_1.4.5.bb    |   2 +
 meta/recipes-multimedia/gstreamer/gstreamer1.0.inc |  12 +-
 .../packagegroups/packagegroup-core-x11-sato.bb    |   2 +
 ...Introspection.cmake-prefix-variables-obta.patch |  27 ++
 ...ng-introspection-files-add-CMAKE_C_FLAGS-.patch |  40 +++
 meta/recipes-sato/webkit/webkitgtk_2.8.5.bb        |  13 +-
 meta/recipes-support/atk/at-spi2-core_2.16.0.bb    |   4 +-
 meta/recipes-support/atk/atk_2.16.0.bb             |   2 +-
 meta/recipes-support/libsoup/libsoup-2.4_2.50.0.bb |   2 +-
 ...file.am-install-gir-typelib-using-datadir.patch |  34 +++
 meta/recipes-support/vte/vte.inc                   |   4 +-
 meta/recipes-support/vte/vte_0.28.2.bb             |   3 +-
 80 files changed, 2106 insertions(+), 512 deletions(-)
 create mode 100644 meta/classes/gobject-introspection.bbclass
 create mode 100644 meta/recipes-core/udev/udev/0001-Makefile.am-don-t-hardcode-g-ir-compiler-name.patch
 create mode 100644 meta/recipes-core/udev/udev/0001-configure.ac-use-PKG_CONFIG_SYSROOT_PATH-when-findin.patch
 create mode 100644 meta/recipes-core/udev/udev/0002-Makefile.am-use-libtool-when-running-g-ir-scanner.patch
 create mode 100644 meta/recipes-devtools/python/python-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygobject_2.28.3.bb
 create mode 100644 meta/recipes-devtools/python/python-pygobject_3.18.0.bb
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/acinclude.m4
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/nodocs.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk_2.24.0.bb
 create mode 100644 meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
 create mode 100644 meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-use-ldd-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-use-binary-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-and-gi-cross-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection_1.44.0.bb
 create mode 100644 meta/recipes-gnome/gtk-doc-stub/files/0001-Revert-Import-introspection-stub-machinery-too.patch
 create mode 100644 meta/recipes-gnome/libwnck/files/0001-Fix-installation-paths-for-.gir-and-.typelib-as-reco.patch
 create mode 100644 meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/0001-Don-t-hardcode-libtool-name-when-using-introspection.patch
 create mode 100644 meta/recipes-sato/webkit/files/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
 create mode 100644 meta/recipes-sato/webkit/files/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
 create mode 100644 meta/recipes-support/vte/vte-0.28.2/0001-Makefile.am-install-gir-typelib-using-datadir.patch
Signature · 1 line
2.1.4
#1 lore raw

PATCH 1/29 qemu.bbclass: add qemu_wrapper_cmdline()

The class had qemu_run_binary() which was not suitable for gobject-introspection, as it required the name of the binary to run.

qemu_wrapper_cmdline() returns just the command line string needed to run binaries, and does not require the binary name.

---
 meta/classes/qemu.bbclass | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)
meta/classes/qemu.bbclass +14 -9
index 601f587..fe69425 100644
@@ -13,7 +13,19 @@ def qemu_target_binary(data):
         target_arch = "ppc64"
 
     return "qemu-" + target_arch
-#
+
+def qemu_wrapper_cmdline(data, rootfs_path, library_paths):
+    import string
+
+    qemu_binary = qemu_target_binary(data)
+    if qemu_binary == "qemu-allarch":
+        qemu_binary = "qemuwrapper"
+
+    qemu_options = data.getVar("QEMU_OPTIONS", True)    
+
+    return "PSEUDO_UNLOAD=1 " + qemu_binary + " " + qemu_options + " -L " + rootfs_path\
+            + " -E LD_LIBRARY_PATH=" + string.join(library_paths, ":") + " "
+
 # Next function will return a string containing the command that is needed to
 # to run a certain binary through qemu. For example, in order to make a certain
 # postinstall scriptlet run at do_rootfs time and running the postinstall is
@@ -23,17 +35,10 @@ def qemu_target_binary(data):
 # ${@qemu_run_binary(d, '$D', '/usr/bin/test_app')} [test_app arguments]
 #
 def qemu_run_binary(data, rootfs_path, binary):
-    qemu_binary = qemu_target_binary(data)
-    if qemu_binary == "qemu-allarch":
-        qemu_binary = "qemuwrapper"
-
     libdir = rootfs_path + data.getVar("libdir", False)
     base_libdir = rootfs_path + data.getVar("base_libdir", False)
-    qemu_options = data.getVar("QEMU_OPTIONS", True)
 
-    return "PSEUDO_UNLOAD=1 " + qemu_binary + " " + qemu_options + " -L " + rootfs_path\
-            + " -E LD_LIBRARY_PATH=" + libdir + ":" + base_libdir + " "\
-            + rootfs_path + binary
+    return qemu_wrapper_cmdline(data, rootfs_path, [libdir, base_libdir]) + rootfs_path + binary
 
 # QEMU_EXTRAOPTIONS is not meant to be directly used, the extensions are 
 # PACKAGE_ARCH, not overrides and hence have to do this dance. Simply being arch 
Signature · 1 line
2.1.4
#2 lore raw

PATCH 2/29 qemu: don't blacklist mips64 when building runners of userspace binaries

In reply to Alexander Kanavin
---
 meta/recipes-devtools/qemu/qemu-targets.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-devtools/qemu/qemu-targets.inc +1 -1
index 5c35655..a3e46a8 100644
@@ -7,7 +7,7 @@ def get_qemu_target_list(d):
     archs = d.getVar('QEMU_TARGETS', True).split()
     tos = d.getVar('HOST_OS', True)
     softmmuonly = ""
-    for arch in ['mips64', 'mips64el', 'ppcemb']:
+    for arch in ['ppcemb']:
         if arch in archs:
             softmmuonly += arch + "-softmmu,"
             archs.remove(arch)
Signature · 1 line
2.1.4
#3 lore raw

PATCH 3/29 gobject-introspection: add the recipe

In reply to Alexander Kanavin

The recipe has comments that explain what is going on and why.

Also, there are three patches necessary to make it work in Yocto cross-compilation environment; they will be submitted upstream.

---
 ...config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch |  99 +++++++++++++
 ...01-giscanner-add-a-use-ldd-wrapper-option.patch |  48 +++++++
 ...1-giscanner-add-use-binary-wrapper-option.patch |  52 +++++++
 ...c-add-host-gi-and-gi-cross-wrapper-option.patch | 158 +++++++++++++++++++++
 .../gobject-introspection_1.44.0.bb                | 146 +++++++++++++++++++
 5 files changed, 503 insertions(+)
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-use-ldd-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-use-binary-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-and-gi-cross-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection_1.44.0.bb
meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch new file +99 -0
new file mode 100644
index 0000000..4c374bd
@@ -0,0 +1,99 @@
+From bf63d603cdd38c88b7981918263bc0c1ddac8144 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Thu, 8 Oct 2015 18:30:35 +0300
+Subject: [PATCH 1/4] Prefix pkg-config paths with PKG_CONFIG_SYSROOT_DIR
+ environment variable
+
+This environment variable sets the location of sysroot directory in cross-compilation
+environments; if the variable is not set, the prefix will be empty.
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <[email protected]>
+
+---
+ Makefile-gir.am     | 18 +++++++++---------
+ m4/introspection.m4 | 12 ++++++------
+ 2 files changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/Makefile-gir.am b/Makefile-gir.am
+index 9aca664..09b9360 100644
+--- a/Makefile-gir.am
++++ b/Makefile-gir.am
+@@ -55,8 +55,8 @@ else
+ endif
+ 
+ # glib
+-GLIB_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir glib-2.0)/glib-2.0
+-GLIB_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir glib-2.0)
++GLIB_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir glib-2.0)/glib-2.0
++GLIB_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir glib-2.0)
+ 
+ GLIB_LIBRARY=glib-2.0
+ 
+@@ -92,8 +92,8 @@ GLib-2.0.gir: g-ir-scanner g-ir-compiler$(EXEEXT)
+ gir/DBusGLib-1.0.typelib: GObject-2.0.gir
+ 
+ # gobject
+-GOBJECT_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gobject-2.0)/glib-2.0
+-GOBJECT_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gobject-2.0)
++GOBJECT_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gobject-2.0)/glib-2.0
++GOBJECT_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gobject-2.0)
+ 
+ GOBJECT_LIBRARY=gobject-2.0
+ 
+@@ -120,8 +120,8 @@ GObject_2_0_gir_FILES = \
+ BUILT_GIRSOURCES += GObject-2.0.gir
+ 
+ # gmodule
+-GMODULE_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gmodule-2.0)/glib-2.0
+-GMODULE_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gmodule-2.0)
++GMODULE_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gmodule-2.0)/glib-2.0
++GMODULE_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gmodule-2.0)
+ 
+ GMODULE_LIBRARY=gmodule-2.0
+ 
+@@ -146,13 +146,13 @@ GModule_2_0_gir_FILES = $(GLIB_INCLUDEDIR)/gmodule.h \
+ BUILT_GIRSOURCES += GModule-2.0.gir
+ 
+ # gio
+-GIO_INCLUDEDIR=$(shell "${PKG_CONFIG}" --variable=includedir gio-2.0)/glib-2.0
+-GIO_LIBDIR=$(shell "${PKG_CONFIG}" --variable=libdir gio-2.0)
++GIO_INCLUDEDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gio-2.0)/glib-2.0
++GIO_LIBDIR=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=libdir gio-2.0)
+ 
+ GIO_LIBRARY=gio-2.0
+ 
+ if HAVE_GIO_UNIX
+-GIO_UNIX_HDRS=$(shell "${PKG_CONFIG}" --variable=includedir gio-unix-2.0)/gio-unix-2.0/gio/*.h
++GIO_UNIX_HDRS=$(PKG_CONFIG_SYSROOT_DIR)$(shell "${PKG_CONFIG}" --variable=includedir gio-unix-2.0)/gio-unix-2.0/gio/*.h
+ GIO_UNIX_PACKAGES = gio-unix-2.0
+ else
+ GIO_UNIX_HDRS=
+diff --git a/m4/introspection.m4 b/m4/introspection.m4
+index d89c3d9..d2c60de 100644
+--- a/m4/introspection.m4
++++ b/m4/introspection.m4
+@@ -56,14 +56,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
+     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_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
++       INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
++       INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
++       INTROSPECTION_GIRDIR=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
++       INTROSPECTION_TYPELIBDIR=$PKG_CONFIG_SYSROOT_DIR"$($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
++       INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+     fi
+     AC_SUBST(INTROSPECTION_SCANNER)
+     AC_SUBST(INTROSPECTION_COMPILER)
+-- 
+2.1.4
+
meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-use-ldd-wrapper-option.patch new file +48 -0

48 lines not on this page · raw message

meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-use-binary-wrapper-option.patch new file +52 -0

52 lines not on this page · raw message

meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-and-gi-cross-wrapper-option.patch new file +158 -0

158 lines not on this page · raw message

meta/recipes-gnome/gobject-introspection/gobject-introspection_1.44.0.bb new file +146 -0

146 lines not on this page · raw message

Signature · 1 line
2.1.4
#4 lore raw

PATCH 4/29 gtk-doc-stub: remove introspection stubs

In reply to Alexander Kanavin

As we provide the full introspection support, we need to remove the stubs from this package that conflict with it.

---
 ...t-Import-introspection-stub-machinery-too.patch | 305 +++++++++++++++++++++
 .../recipes-gnome/gtk-doc-stub/gtk-doc-stub_git.bb |   6 +-
 2 files changed, 309 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-gnome/gtk-doc-stub/files/0001-Revert-Import-introspection-stub-machinery-too.patch
meta/recipes-gnome/gtk-doc-stub/files/0001-Revert-Import-introspection-stub-machinery-too.patch new file +305 -0
new file mode 100644
index 0000000..80b0521
@@ -0,0 +1,305 @@
+From d636be29bf95396b4e27fcd17ff84cb7091cca91 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Thu, 8 Oct 2015 15:37:40 +0300
+Subject: [PATCH] Revert "Import introspection stub machinery too"
+
+This reverts commit 3dfd0a09de696ec8c544762747f8a0f77153622e.
+As we provide the full introspection support, we need to remove
+the stubs from this package that conflict with it.
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ Makefile               |   4 --
+ Makefile.introspection | 163 -------------------------------------------------
+ introspection.m4       |  96 -----------------------------
+ 3 files changed, 263 deletions(-)
+ delete mode 100644 Makefile.introspection
+ delete mode 100644 introspection.m4
+
+diff --git a/Makefile b/Makefile
+index 7cb6ce5..ad4231a 100644
+--- a/Makefile
++++ b/Makefile
+@@ -23,7 +23,3 @@ install: $(bin_programs)
+ 
+ 	mkdir -p $(DESTDIR)$(datarootdir)/aclocal/
+ 	install -m 0644 $(srcdir)/gtk-doc.m4 $(DESTDIR)$(datarootdir)/aclocal/gtk-doc.m4
+-
+-	mkdir -p $(DESTDIR)$(datarootdir)/gobject-introspection-1.0
+-	install -m 0644 $(srcdir)/Makefile.introspection $(DESTDIR)$(datarootdir)/gobject-introspection-1.0/Makefile.introspection
+-	install -m 0644 $(srcdir)/introspection.m4 $(DESTDIR)$(datarootdir)/aclocal/introspection.m4
+diff --git a/Makefile.introspection b/Makefile.introspection
+deleted file mode 100644
+index 755dd15..0000000
+--- a/Makefile.introspection
++++ /dev/null
+@@ -1,163 +0,0 @@
+-# -*- Mode: make -*-
+-# Copyright 2009-2010 Johan Dahlin
+-#
+-# This file is free software; the author(s) gives unlimited
+-# permission to copy and/or distribute it, with or without
+-# modifications, as long as this notice is preserved.
+-#
+-# * Input variables:
+-#
+-#   INTROSPECTION_GIRS - List of GIRS that should be generated
+-#   INTROSPECTION_SCANNER - Command to invoke scanner, normally set by
+-#      GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4
+-#   INTROSPECTION_SCANNER_ARGS - Additional args to pass in to the scanner
+-#   INTROSPECTION_SCANNER_ENV - Environment variables to set before running
+-#      the scanner
+-#   INTROSPECTION_COMPILER - Command to invoke compiler, normally set by
+-#      GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4
+-#   INTROSPECTION_COMPILER_ARGS - Additional args to pass in to the compiler
+-#
+-# * Simple tutorial
+-#
+-# Add this to configure.ac:
+-#   -Wno-portability to AM_INIT_AUTOMAKE
+-#   GOBJECT_INTROSPECTION_CHECK([0.6.7])
+-#
+-# Add this to Makefile.am where your library/program is built:
+-#   include $(INTROSPECTION_MAKEFILE)
+-#   INTROSPECTION_GIRS = YourLib-1.0.gir
+-#   YourLib_1_0_gir_NAMESPACE = YourLib
+-#   YourLib_1_0_gir_VERSION = 1.0
+-#   YourLib_1_0_gir_LIBS = libyourlib.la
+-#   YourLib_1_0_gir_FILES = $(libyourlib_1_0_SOURCES)
+-#   girdir = $(datadir)/gir-1.0
+-#   dist_gir_DATA = YourLib-1.0.gir
+-#   typelibdir = $(libdir)/girepository-1.0
+-#   typelib_DATA = YourLib-1.0.typelib
+-#   CLEANFILES = $(dist_gir_DATA) $(typelib_DATA)
+-#
+-
+-# Make sure the required variables are set, these should under normal
+-# circumstances come from introspection.m4
+-$(if $(INTROSPECTION_SCANNER),,$(error Need to define INTROSPECTION_SCANNER))
+-$(if $(INTROSPECTION_COMPILER),,$(error Need to define INTROSPECTION_COMPILER))
+-
+-# Private functions
+-
+-## Transform the gir filename to something which can reference through a variable
+-## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir
+-_gir_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1))))
+-
+-# Namespace and Version is either fetched from the gir filename
+-# or the _NAMESPACE/_VERSION variable combo
+-_gir_namespace = $(or $($(_gir_name)_NAMESPACE),$(firstword $(subst -, ,$(notdir $(1)))))
+-_gir_version = $(or $($(_gir_name)_VERSION),$(lastword $(subst -, ,$(1:.gir=))))
+-
+-# _PROGRAM is an optional variable which needs it's own --program argument
+-_gir_program = $(if $($(_gir_name)_PROGRAM),--program=$($(_gir_name)_PROGRAM))
+-
+-# Variables which provides a list of things
+-_gir_libraries = $(foreach lib,$($(_gir_name)_LIBS),--library=$(lib))
+-_gir_packages = $(foreach pkg,$($(_gir_name)_PACKAGES),--pkg=$(pkg))
+-_gir_includes = $(foreach include,$($(_gir_name)_INCLUDES),--include=$(include))
+-_gir_export_packages = $(foreach pkg,$($(_gir_name)_EXPORT_PACKAGES),--pkg-export=$(pkg))
+-
+-# Reuse the LIBTOOL variable from automake if it's set, but
+-# work around MSYS weirdness: When running g-ir-scanner, MSYS changes
+-# a command-line argument --libtool="/bin/sh ../../libtool" into
+-# --libtool=c:/opt/msys/1.0/bin/libtool. So just use sh.exe without path
+-# because we already "know" where the libtool configure produced is.
+-_gir_libtool = $(if $(findstring MINGW32,$(shell uname -s)),--libtool="$(top_builddir)/libtool",$(if $(LIBTOOL),--libtool="$(LIBTOOL)"))
+-
+-# Macros for AM_SILENT_RULES prettiness
+-_gir_verbosity = $(if $(AM_DEFAULT_VERBOSITY),$(AM_DEFAULT_VERBOSITY),1)
+-
+-_gir_silent_scanner_prefix = $(_gir_silent_scanner_prefix_$(V))
+-_gir_silent_scanner_prefix_ = $(_gir_silent_scanner_prefix_$(_gir_verbosity))
+-_gir_silent_scanner_prefix_0 = @echo "  GISCAN $(1)";
+-_gir_silent_scanner_opts = $(_gir_silent_scanner_opts_$(V))
+-_gir_silent_scanner_opts_ = $(_gir_silent_scanner_opts_$(_gir_verbosity))
+-_gir_silent_scanner_opts_0 = --quiet
+-
+-_gir_silent_compiler = $(_gir_silent_compiler_$(V))
+-_gir_silent_compiler_ = $(_gir_silent_compiler_$(_gir_verbosity))
+-_gir_silent_compiler_0 = @echo "  GICOMP $(1)";
+-
+-#
+-# Creates a GIR by scanning C headers/sources
+-# $(1) - Name of the gir file (output)
+-#
+-# If output is Gtk-2.0.gir then you should name the variables like
+-# Gtk_2_0_gir_NAMESPACE, Gtk_2_0_gir_VERSION etc.
+-# Required variables:
+-# FILES - C sources and headers which should be scanned
+-#
+-# One of these variables are required:
+-# LIBS - Library where the symbol represented in the gir can be found
+-# PROGRAM - Program where the symbol represented in the gir can be found
+-#
+-# Optional variables
+-# NAMESPACE - Namespace of the gir, first letter capital,
+-#   rest should be lower case, for instance: 'Gtk', 'Clutter', 'ClutterGtk'.
+-#   If not present the namespace will be fetched from the gir filename,
+-#   the part before the first dash. For 'Gtk-2.0', namespace will be 'Gtk'.
+-# VERSION - Version of the gir, if not present, will be fetched from gir
+-# filename, the part after the first dash. For 'Gtk-2.0', version will be '2.0'.
+-# LIBTOOL - Command to invoke libtool, usually set by automake
+-# SCANNERFLAGS - Flags to pass in to the scanner, see g-ir-scanner(1) for a list
+-# CFLAGS - Flags to pass in to the parser when scanning headers
+-# LDFLAGS - Linker flags used by the scanner
+-# PACKAGES - list of pkg-config names which cflags are required to parse
+-#   the headers of this gir
+-# INCLUDES - Gir files to include without the .gir suffix, for instance
+-#   GLib-2.0, Gtk-2.0. This is needed for all libraries which you depend on that
+-#   provides introspection information.
+-# EXPORT_PACKAGES - list of pkg-config names that are provided by this gir.
+-#   By default the names in the PACKAGES variable will be used.
+-#
+-
+-define introspection-scanner
+-
+-# Basic sanity check, to make sure required variables are set
+-$(if $($(_gir_name)_FILES),,$(error Need to define $(_gir_name)_FILES))
+-$(if $(or $(findstring --header-only,$($(_gir_name)_SCANNERFLAGS)),
+-          $($(_gir_name)_LIBS),
+-          $($(_gir_name)_PROGRAM)),,
+-    $(error Need to define $(_gir_name)_LIBS or $(_gir_name)_PROGRAM))
+-
+-# Only dependencies we know are actually filenames goes into _FILES, make
+-# sure these are built before running the scanner. Libraries and programs
+-# needs to be added manually.
+-$(1): $$($(_gir_name)_FILES)
+-	@ $(MKDIR_P) $(dir $(1))
+-	$(_gir_silent_scanner_prefix) $(INTROSPECTION_SCANNER_ENV) $(INTROSPECTION_SCANNER) $(_gir_silent_scanner_opts) \
+-	$(INTROSPECTION_SCANNER_ARGS) \
+-	  --namespace=$(_gir_namespace) \
+-	  --nsversion=$(_gir_version) \
+-	  $(_gir_libtool) \
+-	  $(_gir_packages) \
+-	  $(_gir_includes) \
+-	  $(_gir_export_packages) \
+-	  $(_gir_program) \
+-	  $(_gir_libraries) \
+-	  $($(_gir_name)_SCANNERFLAGS) \
+-	  $($(_gir_name)_CFLAGS) \
+-	  $($(_gir_name)_LDFLAGS) \
+-	  $$^ \
+-	  --output $(1)
+-endef
+-
+-$(foreach gir,$(INTROSPECTION_GIRS),$(eval $(call introspection-scanner,$(gir))))
+-
+-#
+-# Compiles a gir into a typelib
+-# $(1): gir filename (input)
+-# $(2): typelib filename (output)
+-#
+-define introspection-compiler
+-$(_gir_silent_compiler) $(INTROSPECTION_COMPILER) $(INTROSPECTION_COMPILER_ARGS) --includedir=. $(1) -o $(2)
+-endef
+-
+-# Simple rule to compile a typelib.
+-%.typelib: %.gir
+-	$(call introspection-compiler,$<,$@)
+diff --git a/introspection.m4 b/introspection.m4
+deleted file mode 100644
+index d89c3d9..0000000
+--- a/introspection.m4
++++ /dev/null
+@@ -1,96 +0,0 @@
+-dnl -*- mode: autoconf -*-
+-dnl Copyright 2009 Johan Dahlin
+-dnl
+-dnl This file is free software; the author(s) gives unlimited
+-dnl permission to copy and/or distribute it, with or without
+-dnl modifications, as long as this notice is preserved.
+-dnl
+-
+-# serial 1
+-
+-m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
+-[
+-    AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+-    AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+-    AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
+-
+-    dnl enable/disable introspection
+-    m4_if([$2], [require],
+-    [dnl
+-        enable_introspection=yes
+-    ],[dnl
+-        AC_ARG_ENABLE(introspection,
+-                  AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
+-                                 [Enable introspection for this build]),, 
+-                                 [enable_introspection=auto])
+-    ])dnl
+-
+-    AC_MSG_CHECKING([for gobject-introspection])
+-
+-    dnl presence/version checking
+-    AS_CASE([$enable_introspection],
+-    [no], [dnl
+-        found_introspection="no (disabled, use --enable-introspection to enable)"
+-    ],dnl
+-    [yes],[dnl
+-        PKG_CHECK_EXISTS([gobject-introspection-1.0],,
+-                         AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
+-        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
+-                         found_introspection=yes,
+-                         AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
+-    ],dnl
+-    [auto],[dnl
+-        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
+-	dnl Canonicalize enable_introspection
+-	enable_introspection=$found_introspection
+-    ],dnl
+-    [dnl	
+-        AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
+-    ])dnl
+-
+-    AC_MSG_RESULT([$found_introspection])
+-
+-    INTROSPECTION_SCANNER=
+-    INTROSPECTION_COMPILER=
+-    INTROSPECTION_GENERATE=
+-    INTROSPECTION_GIRDIR=
+-    INTROSPECTION_TYPELIBDIR=
+-    if test "x$found_introspection" = "xyes"; then
+-       INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+-       INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+-       INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+-       INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+-       INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+-       INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+-       INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+-       INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+-    fi
+-    AC_SUBST(INTROSPECTION_SCANNER)
+-    AC_SUBST(INTROSPECTION_COMPILER)
+-    AC_SUBST(INTROSPECTION_GENERATE)
+-    AC_SUBST(INTROSPECTION_GIRDIR)
+-    AC_SUBST(INTROSPECTION_TYPELIBDIR)
+-    AC_SUBST(INTROSPECTION_CFLAGS)
+-    AC_SUBST(INTROSPECTION_LIBS)
+-    AC_SUBST(INTROSPECTION_MAKEFILE)
+-
+-    AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
+-])
+-
+-
+-dnl Usage:
+-dnl   GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
+-
+-AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
+-[
+-  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
+-])
+-
+-dnl Usage:
+-dnl   GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
+-
+-
+-AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
+-[
+-  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
+-])
+-- 
+2.1.4
+
meta/recipes-gnome/gtk-doc-stub/gtk-doc-stub_git.bb +4 -2
index 40f3243..69b406a 100644
@@ -4,12 +4,14 @@ SECTION = "x11/base"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
-PROVIDES = "gtk-doc gobject-introspection-stub"
+PROVIDES = "gtk-doc"
 
 SRCREV = "1dea266593edb766d6d898c79451ef193eb17cfa"
 PV = "1.1+git${SRCPV}"
 
-SRC_URI = "git://git.gnome.org/${BPN}"
+SRC_URI = "git://git.gnome.org/${BPN} \
+	   file://0001-Revert-Import-introspection-stub-machinery-too.patch \
+	  "
 
 S = "${WORKDIR}/git"
 
Signature · 1 line
2.1.4
#5 lore raw

PATCH 5/29 gobject-introspection.bbclass: add a class that enables gobject introspection

In reply to Alexander Kanavin
---
 meta/classes/gobject-introspection.bbclass | 36 ++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 meta/classes/gobject-introspection.bbclass
meta/classes/gobject-introspection.bbclass new file +36 -0
new file mode 100644
index 0000000..be4f5d4
@@ -0,0 +1,36 @@
+# Inherit this class in recipes to enable building their introspection files
+
+EXTRA_OECONF_append = " --enable-introspection"
+UNKNOWN_CONFIGURE_WHITELIST_append = " --enable-introspection"
+
+DEPENDS_append = " gobject-introspection"
+
+# This is necessary for python scripts to succeed - distutils
+# failes if these are not set
+export BUILD_SYS
+export HOST_SYS
+
+# This is used by introspection tools to find .gir includes
+export XDG_DATA_DIRS = "${STAGING_DATADIR}"
+
+do_configure_prepend_class-target () {
+    # introspection.m4 pre-packaged with upstream tarballs does not yet
+    # have our fixes
+    mkdir -p ${S}/m4
+    cp ${STAGING_DIR_TARGET}/${datadir}/aclocal/introspection.m4 ${S}/m4
+
+    # Sometimes tarballs package it in common/ instead of m4/,
+    # remove that too.
+    rm -f ${S}/common/introspection.m4
+    rm -f ${S}/common/m4/introspection.m4
+}
+
+
+# .typelib files are needed at runtime and so they go to the main package
+# (so they'll be together with libraries they support).
+FILES_${PN}_append = " ${libdir}/girepository-*/*.typelib" 
+    
+# .gir files go to dev package, as they're needed for developing (but not for running)
+# things that depends on introspection.
+FILES_${PN}-dev_append = " ${datadir}/gir-*/*.gir"
+
Signature · 1 line
2.1.4
#6 lore raw

PATCH 6/29 python3-native: use the previous version of python-config script

In reply to Alexander Kanavin

In python 3.4 python-config was rewritten in shell, ironically to support cross-compilation:
https://bugs.python.org/issue16235

This new shell version is broken in several ways, and doesn't have our oe-specific tweaks. Let's revert to the old script, which is still provided.

---
 .../python/python3-native_3.4.3.bb                 |  1 +
 ...the-shell-version-of-python-config-that-w.patch | 38 ++++++++++++++++++++++
 2 files changed, 39 insertions(+)
 create mode 100644 meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
meta/recipes-devtools/python/python3-native_3.4.3.bb +1 -0
index 464ff05..6b949b9 100644
@@ -26,6 +26,7 @@ file://makerace.patch \
 ${DISTRO_SRC_URI} \
 file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
 file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
+file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
 "
 SRC_URI[md5sum] = "7d092d1bba6e17f0d9bd21b49e441dd5"
 SRC_URI[sha256sum] = "b5b3963533768d5fc325a4d7a6bd6f666726002d696f1d399ec06b043ea996b8"
meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch new file +38 -0
new file mode 100644
index 0000000..b7e0ac6
@@ -0,0 +1,38 @@
+From 045c99b5f1eb6e4e0d8ad1ef9f0ba6574f738150 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Fri, 23 Oct 2015 12:25:09 +0300
+Subject: [PATCH] Do not use the shell version of python-config that was
+ introduced in 3.4
+
+Revert instead to the original python version: it has our tweaks and
+outputs directories correctly.
+
+Upstream-Status: Inappropriate [oe-specific]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ Makefile.pre.in | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index d7fc9a0..47e60bc 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -1270,12 +1270,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
+ 	sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py
+ 	# Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
+ 	sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
+-	# On Darwin, always use the python version of the script, the shell
+-	# version doesn't use the compiler customizations that are provided
+-	# in python (_osx_support.py).
+-	if test `uname -s` = Darwin; then \
+-		cp python-config.py python-config; \
+-	fi
++	# In OpenEmbedded, always use the python version of the script, the shell
++	# version is broken in multiple ways, and doesn't return correct directories
++	cp python-config.py python-config
+ 
+ 
+ # Install the include files
+-- 
+2.1.4
+
Signature · 1 line
2.1.4
#7 lore raw

PATCH 7/29 avahi-ui: remove the dependency on python-pygtk by disabling avahi-discover

In reply to Alexander Kanavin

python-pygtk is removed in a separate commit; the reasons for that are explained in that commit's message.

---
 meta/recipes-connectivity/avahi/avahi-ui_0.6.31.bb | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)
meta/recipes-connectivity/avahi/avahi-ui_0.6.31.bb +6 -8
index 0d42b90..11066e2 100644
@@ -19,11 +19,11 @@ SRC_URI[sha256sum] = "8372719b24e2dd75de6f59bb1315e600db4fd092805bd1201ed0cb651a
 
 DEPENDS += "avahi gtk+ libglade"
 
-AVAHI_GTK = "--enable-gtk --disable-gtk3"
+AVAHI_GTK = "--enable-gtk --disable-gtk3 --disable-pygtk"
 
 S = "${WORKDIR}/avahi-${PV}"
 
-PACKAGES = "${PN} ${PN}-utils ${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN}-doc python-avahi avahi-discover avahi-discover-standalone"
+PACKAGES = "${PN} ${PN}-utils ${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN}-doc python-avahi avahi-discover"
 
 FILES_${PN} = "${libdir}/libavahi-ui*.so.*"
 FILES_${PN}-dbg += "${libdir}/.debug/libavah-ui*"
@@ -33,13 +33,11 @@ FILES_${PN}-staticdev += "${libdir}/libavahi-ui.a"
 FILES_${PN}-utils = "${bindir}/b* ${datadir}/applications/b*"
 
 FILES_python-avahi = "${PYTHON_SITEPACKAGES_DIR}/avahi ${PYTHON_SITEPACKAGES_DIR}/avahi_discover"
-FILES_avahi-discover = "${bindir}/avahi-discover \
-                        ${datadir}/applications/avahi-discover.desktop \
-                        ${datadir}/avahi/interfaces/avahi-discover*"
-FILES_avahi-discover-standalone = "${bindir}/avahi-discover-standalone \
-                                   ${datadir}/avahi/interfaces/avahi-discover.glade"
+FILES_avahi-discover = "${datadir}/applications/avahi-discover.desktop \
+                        ${datadir}/avahi/interfaces/avahi-discover* \
+                        ${bindir}/avahi-discover-standalone \
+                        ${datadir}/avahi/interfaces/avahi-discover.glade"
 
-RDEPENDS_avahi-discover = "python-avahi python-pygtk"
 RDEPENDS_python-avahi = "python-core python-dbus"
 
 
Signature · 1 line
2.1.4
#8 lore raw

PATCH 8/29 python-pygtk: remove the recipe

In reply to Alexander Kanavin

python-pygtk hasn't been updated in several years, is incompatible with the current version of pygobject, and is generally obsolete as all modern python gtk apps use introspection directly.

---
 meta/conf/distro/include/distro_alias.inc          |  1 -
 .../packagegroups/packagegroup-self-hosted.bb      |  1 -
 .../python/python-pygtk/acinclude.m4               | 90 ----------------------
 .../add-gtk-types.defs-into-gdk.c-dependence.patch | 32 --------
 .../python/python-pygtk/fix-gtkunixprint.patch     | 20 -----
 .../python/python-pygtk/fix-pygtk-2.0.pc.patch     | 13 ----
 .../python/python-pygtk/nodocs.patch               | 15 ----
 .../prevent_to_get_display_during_import.patch     | 16 ----
 .../python/python-pygtk/python-pygtk2/acinclude.m4 | 90 ----------------------
 .../update-dependences-of-defs.c.patch             | 38 ---------
 .../recipes-devtools/python/python-pygtk_2.24.0.bb | 55 -------------
 11 files changed, 371 deletions(-)
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/acinclude.m4
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/nodocs.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk_2.24.0.bb
meta/conf/distro/include/distro_alias.inc +0 -1
index ca333c8..6368d6d 100644
@@ -402,7 +402,6 @@ DISTRO_PN_ALIAS_pn-python-mako = "Fedora=python-mako Opensuse=python-Mako"
 DISTRO_PN_ALIAS_pn-python-pycairo = "Meego=pycairo Fedora=pycairo Ubuntu=pycairo Debian=pycairo"
 DISTRO_PN_ALIAS_pn-python-pycurl = "Debian=python-pycurl Ubuntu=python-pycurl"
 DISTRO_PN_ALIAS_pn-python-pygobject = "Meego=pygobject2 Fedora=pygobject2 Ubuntu=pygobject Debian=pygobject"
-DISTRO_PN_ALIAS_pn-python-pygtk = "Debian=python-gtk2 Fedora=pygtk2 OpenSuSE=python-gtk"
 DISTRO_PN_ALIAS_pn-python-pyrex = "Mandriva=python-pyrex Ubuntu=python-pyrex"
 DISTRO_PN_ALIAS_pn-python-scons = "Fedora=scons OpenSuSE=scons Ubuntu=scons Mandriva=scons Debian=scons"
 DISTRO_PN_ALIAS_pn-python-setuptools = "Mandriva=python-setup OpenSuSE=python-setup-git"
meta/recipes-core/packagegroups/packagegroup-self-hosted.bb +0 -1
index d38be26..b8573fb 100644
@@ -190,7 +190,6 @@ RDEPENDS_packagegroup-self-hosted-graphics = "\
     libsdl \
     libsdl-dev \
     libx11-dev \
-    python-pygtk \
     gtk-theme-clearlooks \
     xdg-utils \
     epiphany \
meta/recipes-devtools/python/python-pygtk/acinclude.m4 deleted +0 -90

90 lines not on this page · raw message

meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch deleted +0 -32
deleted file mode 100644
index df0f9cd..0000000
@@ -1,32 +0,0 @@
-Upstream-Status: Submitted
-
-add gtk-types.defs into gdk.c dependence
-
-gdk.c depends on gtk-types.defs but
-gdk/Makefile.am miss this. This will cause
-build error sometimes when built
-with multi-jobbing, so add gtk-types.defs into
-gdk.c dependence.
-
-Signed-off-by: Song.Li <[email protected]>
-Signed-off-by: Jackie Huang <[email protected]>
----
- gtk/Makefile.am |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/gtk/Makefile.am b/gtk/Makefile.am
-index 7bb5d0c..4a88351 100644
---- a/gtk/Makefile.am
-+++ b/gtk/Makefile.am
-@@ -214,7 +214,7 @@ gtkunixprint.defs: $(GTKUNIXPRINT_DEFS) Makefile
- gtkunixprint-types.defs: $(GTKUNIXPRINT_TYPES_DEFS) Makefile
- 	$(CREATEDEFS) $@ $(GTKUNIXPRINT_TYPES_DEFS)
- 
--gdk.c: gdk-types.defs gdk.defs $(GDK_OVERRIDES)
-+gdk.c: gdk-types.defs gtk-types.defs gdk.defs $(GDK_OVERRIDES)
- gtk.c: gdk-types.defs gtk-types.defs gtk.defs gdk-types.defs $(GTK_OVERRIDES)
- _gtk_la_CFLAGS = $(PYCAIRO_CFLAGS) $(GTK_CFLAGS)
- _gtk_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gtk
--- 
-1.7.4
-
meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch deleted +0 -20
deleted file mode 100644
index 16c0e8e..0000000
@@ -1,20 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Saul Wold <[email protected]>
-
-Index: pygtk-2.24.0/gtk/gtkunixprint.override
-===================================================================
---- pygtk-2.24.0.orig/gtk/gtkunixprint.override
-+++ pygtk-2.24.0/gtk/gtkunixprint.override
-@@ -102,11 +102,6 @@ _wrap_gtk_print_job_get_surface(PyGObjec
-     if (pyg_error_check(&error))
-         return NULL;
- 
--#if PYCAIRO_VERSION_HEX >= 0x1010600
--    return PycairoSurface_FromSurface(cairo_surface_reference(surface), NULL);
--#else
--    return PycairoSurface_FromSurface(cairo_surface_reference(surface), NULL, NULL);
--#endif
- }
- %%
- override gtk_print_job_send kwargs
meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch deleted +0 -13
deleted file mode 100644
index b6156540..0000000
@@ -1,13 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: pygtk-2.24.0/pygtk-2.0.pc.in
-===================================================================
---- pygtk-2.24.0.orig/pygtk-2.0.pc.in
-+++ pygtk-2.24.0/pygtk-2.0.pc.in
-@@ -1,5 +1,6 @@
- prefix=@prefix@
- exec_prefix=@exec_prefix@
-+libdir=@libdir@
- includedir=@includedir@
- datarootdir=@datarootdir@
- datadir=@datadir@
meta/recipes-devtools/python/python-pygtk/nodocs.patch deleted +0 -15
deleted file mode 100644
index f07309a..0000000
@@ -1,15 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: pygtk-2.17.0/Makefile.am
-===================================================================
---- pygtk-2.17.0.orig/Makefile.am
-+++ pygtk-2.17.0/Makefile.am
-@@ -4,7 +4,7 @@ if BUILD_GTK
-   GTK_SUBDIR = gtk
- endif
- 
--SUBDIRS = . $(GTK_SUBDIR) examples tests docs
-+SUBDIRS = . $(GTK_SUBDIR) examples tests
- 
- PLATFORM_VERSION = 2.0
- 
meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch deleted +0 -16
deleted file mode 100644
index 833038e..0000000
@@ -1,16 +0,0 @@
-Upstream-Status: Pending
-
-Index: pygtk-2.10.4/gtk/__init__.py
-===================================================================
---- pygtk-2.10.4.orig/gtk/__init__.py	2007-11-27 19:27:05.000000000 -0300
-+++ pygtk-2.10.4/gtk/__init__.py	2007-11-27 19:28:22.000000000 -0300
-@@ -78,7 +78,8 @@
- 
- keysyms = LazyModule('keysyms', locals())
- 
--_init()
-+if not hasattr(sys.modules['__main__'], 'python_launcher_enabled'):
-+    _init()
- 
- # CAPI
- _PyGtk_API = _gtk._PyGtk_API
meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 deleted +0 -90

90 lines not on this page · raw message

meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch deleted +0 -38
deleted file mode 100644
index 3ed954e..0000000
@@ -1,38 +0,0 @@
-From dc024e9079bbffbb44436ba3e70a758ebad5520f Mon Sep 17 00:00:00 2001
-From: "Song.Li" <[email protected]>
-Date: Sat, 5 Jan 2013 14:55:59 +0800
-Subject: [PATCH] update dependences of defs.c in Makefile.am
-
-In gtk/Makefile.am, defs.c should dependes on gdk-types.defs and
-gtk-types.defs, otherwise it fails occasionally when parallel compile.
-The error message:
-"IOError: [Errno 2] No such file or directory: 'gtk-types.defs'"
-
-Add them to dependences of defs.c to fix this issue.
-
-Upstream-Status: Submitted
-https://bugzilla.gnome.org/show_bug.cgi?id=702706
-
-Signed-off-by: Song.Li <[email protected]>
-Signed-off-by: Kai Kang <[email protected]>
-
----
- gtk/Makefile.am |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gtk/Makefile.am b/gtk/Makefile.am
-index 7bb5d0c..91826cb 100644
---- a/gtk/Makefile.am
-+++ b/gtk/Makefile.am
-@@ -289,7 +289,7 @@ if HAVE_GIO_TYPES_DEFS
- extra_codegen_args += --register $(PYGOBJECT_DEFSDIR)/gio-types.defs
- endif
- 
--.defs.c: 
-+.defs.c: gdk-types.defs gtk-types.defs
- 	($(PYTHON) $(CODEGENDIR)/codegen.py \
- 	   $(PYGTK_CODEGEN_DEFINES) \
- 	    -I $(srcdir) \
--- 
-1.7.9.5
-
meta/recipes-devtools/python/python-pygtk_2.24.0.bb deleted +0 -55

55 lines not on this page · raw message

Signature · 1 line
2.1.4
#13 lore raw

PATCH 9/29 avahi: enable gobject-introspection

In reply to Alexander Kanavin
---
 meta/recipes-connectivity/avahi/avahi-ui_0.6.31.bb |  2 ++
 meta/recipes-connectivity/avahi/avahi.inc          | 12 +++++++-----
 2 files changed, 9 insertions(+), 5 deletions(-)
meta/recipes-connectivity/avahi/avahi-ui_0.6.31.bb +2 -0
index 11066e2..5dabbae 100644
@@ -67,5 +67,7 @@ do_install_append () {
 	rm ${D}${mandir}/man1/a*
 	rm ${D}${mandir}/man5 -rf
 	rm ${D}${mandir}/man8 -rf
+        rm ${D}${libdir}/girepository-1.0/ -rf
+        rm ${D}${datadir}/gir-1.0/ -rf
 }
 
meta/recipes-connectivity/avahi/avahi.inc +7 -5
index 825197d..14f487e 100644
@@ -40,10 +40,9 @@ USERADD_PARAM_avahi-autoipd = "--system --home /var/run/avahi-autoipd \
                               -c \"Avahi autoip daemon\" \
                               avahi-autoipd"
 
-inherit autotools pkgconfig update-rc.d gettext useradd
+inherit autotools pkgconfig update-rc.d gettext useradd gobject-introspection
 
-EXTRA_OECONF = "--disable-introspection \
-             --with-avahi-priv-access-group=adm \
+EXTRA_OECONF = "--with-avahi-priv-access-group=adm \
              --disable-stack-protector \
              --disable-gdbm \
              --disable-mono \
@@ -70,6 +69,9 @@ do_configure_prepend() {
     sed 's:AM_CHECK_PYMOD:echo "no pymod" #AM_CHECK_PYMOD:g' -i ${S}/configure.ac
 }
 
+do_compile_prepend() {
+    export GIR_EXTRA_LIBS_PATH="${B}/avahi-common/.libs:${B}/avahi-client/.libs:${B}/avahi-glib/.libs"
+}
 
 PACKAGES =+ "avahi-daemon libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib libavahi-ui avahi-autoipd avahi-utils"
 
@@ -82,7 +84,7 @@ FILES_avahi-autoipd = "${sbindir}/avahi-autoipd \
                        ${sysconfdir}/udhcpc.d/00avahi-autoipd \
                        ${sysconfdir}/udhcpc.d/99avahi-autoipd"
 FILES_libavahi-common = "${libdir}/libavahi-common.so.*"
-FILES_libavahi-core = "${libdir}/libavahi-core.so.*"
+FILES_libavahi-core = "${libdir}/libavahi-core.so.* ${libdir}/girepository-1.0/AvahiCore*.typelib"
 FILES_avahi-daemon = "${sbindir}/avahi-daemon \
                       ${sysconfdir}/avahi/avahi-daemon.conf \
                       ${sysconfdir}/avahi/hosts \
@@ -99,7 +101,7 @@ FILES_avahi-dnsconfd = "${sbindir}/avahi-dnsconfd \
                         ${sysconfdir}/avahi/avahi-dnsconfd.action \
                         ${sysconfdir}/init.d/avahi-dnsconfd"
 FILES_libavahi-glib = "${libdir}/libavahi-glib.so.*"
-FILES_libavahi-gobject = "${libdir}/libavahi-gobject.so.*"
+FILES_libavahi-gobject = "${libdir}/libavahi-gobject.so.*  ${libdir}/girepository-1.0/Avahi*.typelib"
 FILES_avahi-utils = "${bindir}/avahi-*"
 
 RDEPENDS_${PN}-dev = "avahi-daemon (= ${EXTENDPKGV}) libavahi-core (= ${EXTENDPKGV}) libavahi-client (= ${EXTENDPKGV})"
Signature · 1 line
2.1.4
#14 lore raw

PATCH 10/29 udev: enable gobject introspection

In reply to Alexander Kanavin
---
 meta/recipes-core/udev/udev.inc                    | 10 ++++---
 ...file.am-don-t-hardcode-g-ir-compiler-name.patch | 27 ++++++++++++++++++
 ...c-use-PKG_CONFIG_SYSROOT_PATH-when-findin.patch | 32 ++++++++++++++++++++++
 ....am-use-libtool-when-running-g-ir-scanner.patch | 26 ++++++++++++++++++
 4 files changed, 91 insertions(+), 4 deletions(-)
 create mode 100644 meta/recipes-core/udev/udev/0001-Makefile.am-don-t-hardcode-g-ir-compiler-name.patch
 create mode 100644 meta/recipes-core/udev/udev/0001-configure.ac-use-PKG_CONFIG_SYSROOT_PATH-when-findin.patch
 create mode 100644 meta/recipes-core/udev/udev/0002-Makefile.am-use-libtool-when-running-g-ir-scanner.patch
meta/recipes-core/udev/udev.inc +6 -4
index c378ae3..ea5fb24 100644
@@ -19,6 +19,9 @@ PROVIDES = "libgudev"
 
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
            file://0001-Fixing-keyboard_force_release.sh-shell-script-path.patch \
+           file://0001-configure.ac-use-PKG_CONFIG_SYSROOT_PATH-when-findin.patch \
+           file://0002-Makefile.am-use-libtool-when-running-g-ir-scanner.patch \
+           file://0001-Makefile.am-don-t-hardcode-g-ir-compiler-name.patch \
            file://avoid-mouse-autosuspend.patch \
            file://run.rules \
            file://udev.rules \
@@ -33,12 +36,11 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
            file://run-ptest \
            file://init"
 
-inherit autotools pkgconfig update-rc.d ptest
+inherit autotools pkgconfig update-rc.d ptest gobject-introspection
 RDEPENDS_${PN}-ptest += "make perl python"
 
 libexecdir = "${base_libdir}"
-EXTRA_OECONF = "--disable-introspection \
-                --with-rootlibdir=${base_libdir} \
+EXTRA_OECONF = "--with-rootlibdir=${base_libdir} \
                 --with-pci-ids-path=${datadir}/pci.ids \
                 ac_cv_file__usr_share_pci_ids=no \
                 ac_cv_file__usr_share_hwdata_pci_ids=no \
@@ -72,7 +74,7 @@ FILES_${PN}-dbg += "${libexecdir}/.debug"
 FILES_${PN}-dbg += "${base_libdir}/udev/.debug/"
 FILES_${PN}-dbg += "${base_libdir}/udev/.debug/*"
 FILES_${PN}-dbg += "${nonarch_base_libdir}/udev/.debug/*"
-FILES_${PN}-dev = "${datadir}/pkgconfig/udev.pc \
+FILES_${PN}-dev += "${datadir}/pkgconfig/udev.pc \
                    ${includedir}/libudev.h ${libdir}/libudev.so ${libdir}/libudev.la \
                    ${libdir}/libudev.a ${libdir}/pkgconfig/libudev.pc \
                    ${includedir}/gudev* ${libdir}/libgudev*.so ${libdir}/libgudev*.la \
meta/recipes-core/udev/udev/0001-Makefile.am-don-t-hardcode-g-ir-compiler-name.patch new file +27 -0
new file mode 100644
index 0000000..859c47c
@@ -0,0 +1,27 @@
+From c00a9a5cca2fe805c5c3de85ad3962df55927bbc Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Tue, 3 Nov 2015 15:49:48 +0200
+Subject: [PATCH] Makefile.am: don't hardcode g-ir-compiler name
+
+Upstream-Status: Inappropriate [upstream is dead]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index c7e7447..9d32acc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -469,7 +469,7 @@ src/gudev/GUdev-1.0.gir: libgudev-1.0.la $(G_IR_SCANNER)
+ 		$(top_srcdir)/src/gudev/gudevenumerator.c
+ 
+ src/gudev/GUdev-1.0.typelib: src/gudev/GUdev-1.0.gir $(G_IR_COMPILER)
+-	$(AM_V_GEN)g-ir-compiler $< -o $@
++	$(AM_V_GEN)$(G_IR_COMPILER) $< -o $@
+ 
+ girdir = $(GIRDIR)
+ gir_DATA = src/gudev/GUdev-1.0.gir
+-- 
+2.1.4
+
meta/recipes-core/udev/udev/0001-configure.ac-use-PKG_CONFIG_SYSROOT_PATH-when-findin.patch new file +32 -0
new file mode 100644
index 0000000..658e924
@@ -0,0 +1,32 @@
+From 54fd0dfd3b2961afe8c1bcd06b9cdf08f9df0a92 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Thu, 29 Oct 2015 14:04:08 +0200
+Subject: [PATCH 1/2] configure.ac: use PKG_CONFIG_SYSROOT_PATH when finding
+ out the location of introspection binaries
+
+Upstream-Status: Inappropriate [upstream is dead]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0500313..689c6b9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -134,9 +134,9 @@ AC_ARG_ENABLE([introspection],
+ AS_IF([test "x$enable_introspection" = "xyes"], [
+        PKG_CHECK_MODULES([INTROSPECTION], [gobject-introspection-1.0 >= 0.6.2])
+        AC_DEFINE([ENABLE_INTROSPECTION], [1], [enable GObject introspection support])
+-       AC_SUBST([G_IR_SCANNER], [$($PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0)])
+-       AC_SUBST([G_IR_COMPILER], [$($PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0)])
+-       AC_SUBST([G_IR_GENERATE], [$($PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0)])
++       AC_SUBST([G_IR_SCANNER], [$PKG_CONFIG_SYSROOT_DIR$($PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0)])
++       AC_SUBST([G_IR_COMPILER], [$PKG_CONFIG_SYSROOT_DIR$($PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0)])
++       AC_SUBST([G_IR_GENERATE], [$PKG_CONFIG_SYSROOT_DIR$($PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0)])
+        AC_SUBST([GIRDIR], [$($PKG_CONFIG --define-variable=datadir=${datadir} --variable=girdir gobject-introspection-1.0)])
+        AC_SUBST([GIRTYPELIBDIR], [$($PKG_CONFIG --define-variable=libdir=${libdir} --variable=typelibdir gobject-introspection-1.0)])
+ ])
+-- 
+2.1.4
+
meta/recipes-core/udev/udev/0002-Makefile.am-use-libtool-when-running-g-ir-scanner.patch new file +26 -0
new file mode 100644
index 0000000..b5373fc
@@ -0,0 +1,26 @@
+From 47bdabf2e07dee5e09d171653c2dbe9fee009a5b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Thu, 29 Oct 2015 14:05:26 +0200
+Subject: [PATCH 2/2] Makefile.am: use --libtool when running g-ir-scanner
+
+Upstream-Status: Inappropriate [upstream is dead]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index 2e32e69..c7e7447 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -443,6 +443,7 @@ src/gudev/GUdev-1.0.gir: libgudev-1.0.la $(G_IR_SCANNER)
+ 		--warn-all \
+ 		--namespace GUdev \
+ 		--nsversion=1.0 \
++                --libtool=$(LIBTOOL) \
+ 		--include=GObject-2.0 \
+ 		--library=gudev-1.0 \
+ 		--library-path=$(top_builddir)/src \
+-- 
+2.1.4
+
Signature · 1 line
2.1.4
#15 lore raw

PATCH 11/29 vala: enable the use of vapigen by packages with vala support

In reply to Alexander Kanavin

Now that gobject-introspection is supported, generation of .vapi files for develeloping Vala code against gobject-based libraries should be supported as well.

---
 meta/recipes-devtools/vala/vala.inc                | 10 ++++++
 ...001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch | 38 ++++++++++++++++++++++
 meta/recipes-devtools/vala/vala_0.28.0.bb          |  4 ++-
 3 files changed, 51 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch
meta/recipes-devtools/vala/vala.inc +10 -0
index 63056fd..a0ace39 100644
@@ -3,6 +3,9 @@ DESCRIPTION = "Vala is a C#-like language dedicated to ease GObject programming.
 Vala compiles to plain C and has no runtime environment nor penalities whatsoever."
 SECTION = "devel"
 DEPENDS = "bison-native flex-native libxslt-native glib-2.0"
+
+# vala-native contains a native version of vapigen, which we use instead of the target one
+DEPENDS_append_class-target = " vala-native"
 BBCLASSEXTEND = "native"
 HOMEPAGE = "http://vala-project.org"
 LICENSE = "LGPLv2.1"
@@ -16,3 +19,10 @@ inherit autotools pkgconfig
 FILES_${PN} += "${datadir}/${BPN}-${SHRT_VER}/vapi ${libdir}/${BPN}-${SHRT_VER}/"
 FILES_${PN}-doc += "${datadir}/devhelp"
 FILES_${PN}-dbg += "${libdir}/${BPN}-${SHRT_VER}/.debug"
+
+SYSROOT_PREPROCESS_FUNCS_append_class-target += "vapigen_sysroot_preprocess"
+
+# Link native vapigen into target sysroot so that it is used when building vapi files.
+vapigen_sysroot_preprocess() {
+        ln -f -s ${STAGING_BINDIR_NATIVE}/vapigen* ${STAGING_BINDIR}
+}
meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch new file +38 -0
new file mode 100644
index 0000000..ecab0fc
@@ -0,0 +1,38 @@
+From dbb1c58e86f2af4613f3ac9571d9b163d4bca675 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Fri, 23 Oct 2015 16:13:54 +0300
+Subject: [PATCH] vapigen.m4: use $PKG_CONFIG_SYSROOT_DIR
+
+This is necessary in cross-compiling environments, where directories
+returned by pkg-config should be prefixed with sysroot location.
+
+Upstream-Status: Pending [review in oe-core list]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ vapigen/vapigen.m4 | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/vapigen/vapigen.m4 b/vapigen/vapigen.m4
+index 2c435e7..6228991 100644
+--- a/vapigen/vapigen.m4
++++ b/vapigen/vapigen.m4
+@@ -82,12 +82,12 @@ AC_DEFUN([VAPIGEN_CHECK],
+ 
+   AS_CASE([$enable_vala],
+     [yes], [
+-      VAPIGEN=`$PKG_CONFIG --variable=vapigen $vapigen_pkg_name`
+-      VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir $vapigen_pkg_name`/vala/Makefile.vapigen
++      VAPIGEN=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=vapigen $vapigen_pkg_name`
++      VAPIGEN_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir $vapigen_pkg_name`/vala/Makefile.vapigen
+       AS_IF([test "x$2" = "x"], [
+-          VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir $vapigen_pkg_name`
++          VAPIGEN_VAPIDIR=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=vapidir $vapigen_pkg_name`
+         ], [
+-          VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned $vapigen_pkg_name`
++          VAPIGEN_VAPIDIR=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=vapidir_versioned $vapigen_pkg_name`
+         ])
+     ])
+ 
+-- 
+2.1.4
+
meta/recipes-devtools/vala/vala_0.28.0.bb +3 -1
index 120906c..de9a46b 100644
@@ -1,6 +1,8 @@
 require ${BPN}.inc
 
-SRC_URI += " file://0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch"
+SRC_URI += " file://0001-git-version-gen-don-t-append-dirty-if-we-re-not-in-g.patch \
+             file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch \
+"
 
 SRC_URI[md5sum] = "8d4ceac3451a0d5497e7be38e5e4c2ad"
 SRC_URI[sha256sum] = "0d9e3bd3f82145664875f7c29b2f544ba92d2814f75412948f774c0727fc977f"
Signature · 1 line
2.1.4
#16 lore raw

PATCH 12/29 gcr: enable generation of vapi files using vapigen

In reply to Alexander Kanavin
---
 meta/recipes-gnome/gcr/gcr_3.16.0.bb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
meta/recipes-gnome/gcr/gcr_3.16.0.bb +2 -2
index 4c9fe2e..40c0fe8 100644
@@ -5,9 +5,9 @@ BUGTRACKER = "https://bugzilla.gnome.org/"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
 
-DEPENDS = "gtk+3 p11-kit glib-2.0 libgcrypt vala"
+DEPENDS = "gtk+3 p11-kit glib-2.0 libgcrypt"
 
-inherit autotools gnomebase gtk-icon-cache gtk-doc
+inherit autotools gnomebase gtk-icon-cache gtk-doc vala
 
 SRC_URI[archive.md5sum] = "d5835680be0b6a838e02a528d5378d9c"
 SRC_URI[archive.sha256sum] = "ecfe8df41cc88158364bb15addc670b11e539fe844742983629ba2323888d075"
Signature · 1 line
2.1.4
#17 lore raw

PATCH 13/29 gdk-pixbuf: enable gobject introspection

In reply to Alexander Kanavin
---
 meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.8.bb | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.8.bb +2 -5
index 68f3850..02894fc 100644
@@ -23,7 +23,7 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
 SRC_URI[md5sum] = "4fed0d54432f1b69fc6e66e608bd5542"
 SRC_URI[sha256sum] = "4853830616113db4435837992c0aebd94cbb993c44dc55063cee7f72a7bef8be"
 
-inherit autotools pkgconfig gettext pixbufcache ptest-gnome
+inherit autotools pkgconfig gettext pixbufcache ptest-gnome gobject-introspection
 
 LIBV = "2.10.0"
 
@@ -42,15 +42,12 @@ PACKAGECONFIG[jpeg2000] = "--with-libjasper,--without-libjasper,jasper"
 PACKAGECONFIG[gio-sniff] = "--enable-gio-sniffing,--disable-gio-sniffing,,shared-mime-info"
 PACKAGECONFIG[x11] = "--with-x11,--without-x11,virtual/libx11"
 
-EXTRA_OECONF = "--disable-introspection"
-
 PACKAGES =+ "${PN}-xlib"
 
 FILES_${PN}-xlib = "${libdir}/*pixbuf_xlib*${SOLIBS}"
 ALLOW_EMPTY_${PN}-xlib = "1"
 
-FILES_${PN} = "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
-	${libdir}/lib*.so.*"
+FILES_${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
 
 FILES_${PN}-dev += " \
 	${bindir}/gdk-pixbuf-csource \
Signature · 1 line
2.1.4
#18 lore raw

PATCH 14/29 gconf: enable gobject-introspection

In reply to Alexander Kanavin
---
 meta/recipes-gnome/gnome/gconf_3.2.6.bb | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
meta/recipes-gnome/gnome/gconf_3.2.6.bb +3 -3
index 17fdafa..8bb5094 100644
@@ -3,8 +3,8 @@ SECTION = "x11/gnome"
 LICENSE = "LGPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
 
-DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native gobject-introspection-stub"
-DEPENDS_class-native = "glib-2.0-native dbus-native dbus-glib-native libxml2-native intltool-native gnome-common-native gobject-introspection-stub-native"
+DEPENDS = "glib-2.0 dbus dbus-glib libxml2 intltool-native"
+DEPENDS_class-native = "glib-2.0-native dbus-native dbus-glib-native libxml2-native intltool-native gnome-common-native gobject-introspection-native"
 
 
 inherit gnomebase gtk-doc gettext
@@ -20,7 +20,7 @@ SRC_URI[archive.sha256sum] = "1912b91803ab09a5eed34d364bf09fe3a2a9c96751fde03a4e
 S = "${WORKDIR}/GConf-${PV}"
 
 EXTRA_OECONF = "--enable-shared --disable-static --enable-debug=yes \
-                --disable-introspection --disable-orbit --with-openldap=no --disable-gtk"
+                --disable-orbit --with-openldap=no --disable-gtk"
 
 # Disable PolicyKit by default
 PACKAGECONFIG ??= ""
Signature · 1 line
2.1.4
#19 lore raw

PATCH 15/29 gtk+: enable gobject introspection

In reply to Alexander Kanavin
---
 meta/recipes-gnome/gtk+/gtk+.inc | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
meta/recipes-gnome/gtk+/gtk+.inc +6 -3
index a197b9d..3ccdbe8 100644
@@ -25,13 +25,12 @@ PACKAGECONFIG[x11] = "--with-x=yes --with-gdktarget=x11,--with-x=no,${X11DEPENDS
 # without --with-gdktarget=directfb it will check for cairo-xlib which isn't available without X11 DISTRO_FEATURE
 PACKAGECONFIG[directfb] = "--with-gdktarget=directfb,,directfb"
 
-inherit autotools gtk-doc pkgconfig update-alternatives gtk-immodules-cache
+inherit autotools gtk-doc pkgconfig update-alternatives gtk-immodules-cache gobject-introspection
 
 PACKAGES += "libgail gtk-demo"
 
-FILES_${PN} = "${bindir}/gtk-update-icon-cache-2.0 \
+FILES_${PN} += "${bindir}/gtk-update-icon-cache-2.0 \
 	${bindir}/gtk-query-immodules-2.0 \
-	${libdir}/lib*${SOLIBS} \
 	${datadir}/themes ${sysconfdir} \
 	${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so"
 
@@ -71,6 +70,10 @@ RRECOMMENDS_${PN}_libc-glibc = "${GTKGLIBC_RRECOMMENDS}"
 ALTERNATIVE_${PN} = "gtk-update-icon-cache"
 ALTERNATIVE_TARGET[gtk-update-icon-cache] = "${bindir}/gtk-update-icon-cache-2.0"
 
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs"
+}
+
 do_install () {
 	autotools_do_install
 
Signature · 1 line
2.1.4
#20 lore raw

PATCH 16/29 gtk+3: enable gobject-introspection

In reply to Alexander Kanavin
---
 meta/recipes-gnome/gtk+/gtk+3.inc | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
meta/recipes-gnome/gtk+/gtk+3.inc +6 -4
index 22a40d8..b7d30a9 100644
@@ -10,7 +10,7 @@ DEPENDS = "glib-2.0 cairo pango atk jpeg libpng gdk-pixbuf \
 
 LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
 
-inherit autotools pkgconfig gtk-doc update-alternatives gtk-immodules-cache gsettings distro_features_check
+inherit autotools pkgconfig gtk-doc update-alternatives gtk-immodules-cache gsettings distro_features_check gobject-introspection
 ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
 
 # This should be in autotools.bbclass, but until something elses uses it putting
@@ -28,9 +28,12 @@ EXTRA_OECONF += " \
                  --disable-xinerama \
                  --enable-modules \
                  --disable-cups \
-                 --disable-introspection \
 "
 
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs"
+}
+
 PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)} \
                    ${@bb.utils.contains("DISTRO_FEATURES", "opengl x11", "glx", "", d)} \
                    ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)}"
@@ -61,10 +64,9 @@ FILES_${PN}-demo = "${bindir}/gtk3-demo \
 # dependencies are present.
 RDEPENDS_${PN}-demo += "gdk-pixbuf-loader-png shared-mime-info"
 
-FILES_${PN} = "${bindir}/gtk-update-icon-cache-3.0 \
+FILES_${PN}_append = " ${bindir}/gtk-update-icon-cache-3.0 \
                ${bindir}/gtk-query-immodules-3.0 \
                ${bindir}/gtk-launch \
-               ${libdir}/lib*${SOLIBS} \
                ${datadir}/themes ${sysconfdir} ${datadir}/glib-2.0/schemas/ \
                ${libdir}/gtk-3.0/${LIBV}/engines/libpixmap.so \
                ${libdir}/gtk-3.0/modules/*.so"
Signature · 1 line
2.1.4
#21 lore raw

PATCH 17/29 libsecret: enable generation of vapi files using vapigen

In reply to Alexander Kanavin
---
 meta/recipes-gnome/libsecret/libsecret_0.18.2.bb | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
meta/recipes-gnome/libsecret/libsecret_0.18.2.bb +7 -2
index 8fc0018..707838c 100644
@@ -2,9 +2,9 @@ SUMMARY = "libsecret is a library for storing and retrieving passwords and other
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=23c2a5e0106b99d75238986559bb5fc6"
 
-inherit gnomebase gtk-doc
+inherit gnomebase gtk-doc vala
 
-DEPENDS = "glib-2.0 libgcrypt gettext-native"
+DEPENDS += "glib-2.0 libgcrypt gettext-native"
 
 EXTRA_OECONF += "--disable-manpages"
 
@@ -13,3 +13,8 @@ SRC_URI[archive.sha256sum] = "12fd288b012e1b2b1b54d586cd4c6507885715534644b4534b
 
 # http://errors.yoctoproject.org/Errors/Details/20228/
 ARM_INSTRUCTION_SET = "arm"
+
+# vapigen.m4 bundled with the tarball does not yet have our cross-compilation fixes
+do_configure_prepend() {
+    rm -f ${S}/build/m4/vapigen.m4
+}
Signature · 1 line
2.1.4
#22 lore raw

PATCH 18/29 clutter: enable gobject introspection

In reply to Alexander Kanavin
---
 meta/recipes-graphics/clutter/clutter-1.0.inc     | 5 ++---
 meta/recipes-graphics/clutter/clutter-gst-3.0.inc | 4 +---
 meta/recipes-graphics/clutter/clutter-gtk-1.0.inc | 3 +--
 meta/recipes-graphics/cogl/cogl-1.0.inc           | 8 +++++---
 meta/recipes-graphics/mx/mx.inc                   | 5 ++---
 5 files changed, 11 insertions(+), 14 deletions(-)
meta/recipes-graphics/clutter/clutter-1.0.inc +2 -3
index da21cee..0f059f9 100644
@@ -2,7 +2,7 @@ SUMMARY = "Graphics library for creating hardware-accelerated user interfaces"
 HOMEPAGE = "http://www.clutter-project.org/"
 LICENSE = "LGPLv2.1+"
 
-inherit clutter ptest-gnome
+inherit clutter ptest-gnome gobject-introspection
 
 DEPENDS = "pango glib-2.0 json-glib atk udev cogl-1.0"
 PACKAGE_BEFORE_PN += "${PN}-examples"
@@ -17,8 +17,7 @@ EDEPENDS_EVDEV = "libxkbcommon"
 ERDEPENDS_EVDEV = "xkeyboard-config"
 
 # Disable pretty much everything, override in platform specific set up
-EXTRA_OECONF += "--disable-introspection	\
-	     	 --disable-quartz-backend	\
+EXTRA_OECONF += "--disable-quartz-backend	\
 	     	 --disable-win32-backend	\
 	     	 --disable-gdk-backend		\
 	     	 --disable-cex100-backend	\
meta/recipes-graphics/clutter/clutter-gst-3.0.inc +1 -3
index d4fed71..b184e0f 100644
@@ -2,7 +2,7 @@ SUMMARY = "GStreamer integration library for Clutter"
 HOMEPAGE = "http://www.clutter-project.org/"
 LICENSE = "LGPLv2+"
 
-inherit clutter
+inherit clutter gobject-introspection
 
 SRC_URI += "file://0001-Install-example-binary-needed-for-core-image-clutter.patch"
 
@@ -10,8 +10,6 @@ DEPENDS = "gstreamer1.0-plugins-base gstreamer1.0-plugins-bad clutter-1.0"
 RDEPENDS_${PN} += "gstreamer1.0-meta-base"
 PACKAGES  =+ "${PN}-examples"
 
-EXTRA_OECONF += "--disable-introspection"
-
 FILES_${PN}          += "${libdir}/gstreamer-1.0/lib*.so"
 FILES_${PN}-dev      += "${libdir}/gstreamer-1.0/*.la"
 FILES_${PN}-dbg      += "${libdir}/gstreamer-1.0/.debug/lib*.so"
meta/recipes-graphics/clutter/clutter-gtk-1.0.inc +1 -2
index 45898b4..f411cfe 100644
@@ -2,11 +2,10 @@ SUMMARY = "Library for embedding a Clutter canvas in a GTK+ application"
 HOMEPAGE = "http://www.clutter-project.org/"
 LICENSE = "LGPLv2+"
 
-inherit clutter
+inherit clutter gobject-introspection
 
 DEPENDS = "clutter-1.0 gtk+3"
 PACKAGES  =+ "${PN}-examples"
 AUTOTOOLS_AUXDIR = "${S}/build"
 
-EXTRA_OECONF += "--disable-introspection"
 
meta/recipes-graphics/cogl/cogl-1.0.inc +5 -3
index 3da31c8..11425f9 100644
@@ -2,7 +2,7 @@ SUMMARY = "Modern 3D graphics API with associated utility APIs"
 HOMEPAGE = "http://wiki.clutter-project.org/wiki/Cogl"
 LICENSE = "MIT"
 
-inherit clutter
+inherit clutter gobject-introspection
 
 DEPENDS = "glib-2.0 gdk-pixbuf"
 PACKAGES =+ "${PN}-examples \
@@ -24,8 +24,7 @@ ERDEPENDS_GL    = "libgl"
 ERDEPENDS_GLES2 = "libgles2"
 
 # GLESv1 is rarely tested, so disable it
-EXTRA_OECONF += "--disable-introspection	\
-	       	 --enable-examples-install	\
+EXTRA_OECONF += "--enable-examples-install	\
 	       	 --enable-debug		 	\
 	       	 --disable-gles1		\
 	         --disable-cairo                \
@@ -56,6 +55,9 @@ PACKAGECONFIG ??= "cogl-pango gles2 \
                    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx egl-x11', '', d)} \
                    "
 
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/cogl/.libs"
+}
 
 FILES_${PN}-examples = "${bindir}/* ${datadir}/cogl/examples-data/*"
 FILES_libcogl = "${libdir}/libcogl${SOLIBS}"
meta/recipes-graphics/mx/mx.inc +2 -3
index ee7f186..024c4cf 100644
@@ -1,14 +1,13 @@
 SUMMARY = "Clutter based UI widget library"
 LICENSE = "LGPLv2.1"
 
-inherit clutter autotools-brokensep
+inherit clutter autotools-brokensep gobject-introspection
 
 DEPENDS = "clutter-1.0 dbus-glib gdk-pixbuf"
 
 SRC_URI = "http://source.clutter-project.org/sources/mx/${@get_verdir("${PV}")}/mx-${PV}.tar.xz"
 
-EXTRA_OECONF = "--disable-introspection		\
-	        --disable-gtk-doc		\
+EXTRA_OECONF = "--disable-gtk-doc		\
 	        --disable-gtk-widgets		\
 		--with-dbus			\
 		--with-winsys=none		\
Signature · 1 line
2.1.4
#23 lore raw

PATCH 19/29 vala.bbclass: remove pre-packaged vapigen.m4 from tarballs

In reply to Alexander Kanavin

We need to make sure that our fixed vapigen.m4 is used instead.

---
 meta/classes/vala.bbclass | 6 ++++++
 1 file changed, 6 insertions(+)
meta/classes/vala.bbclass +6 -0
index 9ff664a..615eb37 100644
@@ -16,3 +16,9 @@ FILES_${PN}-dev += "\
     ${datadir}/vala/vapi/*.deps \
     ${datadir}/gir-1.0 \
 "
+
+# Remove vapigen.m4 that is bundled with tarballs
+# because it does not yet have our cross-compile fixes
+do_configure_prepend() {
+        rm -f ${S}/m4/vapigen.m4
+}
Signature · 1 line
2.1.4
#24 lore raw

PATCH 20/29 libsoup-2.4: enable gobject introspection

In reply to Alexander Kanavin
---
 meta/recipes-support/libsoup/libsoup-2.4_2.50.0.bb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-support/libsoup/libsoup-2.4_2.50.0.bb +1 -1
index 044db31..a409da3 100644
@@ -22,7 +22,7 @@ SRC_URI[sha256sum] = "1e01365ac4af3817187ea847f9d3588c27eee01fc519a5a7cb212bb78b
 
 S = "${WORKDIR}/libsoup-${PV}"
 
-inherit autotools gettext pkgconfig
+inherit autotools gettext pkgconfig gobject-introspection
 
 # glib-networking is needed for SSL, proxies, etc.
 RRECOMMENDS_${PN} = "glib-networking"
Signature · 1 line
2.1.4
#25 lore raw

PATCH 21/29 at-spi2-core: enable gobject introspection

In reply to Alexander Kanavin
---
 meta/recipes-support/atk/at-spi2-core_2.16.0.bb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
meta/recipes-support/atk/at-spi2-core_2.16.0.bb +2 -2
index 7c12b54..2e9ce79 100644
@@ -13,11 +13,11 @@ SRC_URI[sha256sum] = "1c0b77fb8ce81abbf1d80c0afee9858b3f9229f673b7881995fe0fc16b
 
 DEPENDS = "dbus glib-2.0 virtual/libx11 libxi libxtst intltool-native gettext-native"
 
-inherit autotools gtk-doc pkgconfig distro_features_check
+inherit autotools gtk-doc pkgconfig distro_features_check gobject-introspection
 # depends on virtual/libx11
 REQUIRED_DISTRO_FEATURES = "x11"
 
-EXTRA_OECONF = "--disable-introspection --disable-xevie --with-dbus-daemondir=${bindir}"
+EXTRA_OECONF = "--disable-xevie --with-dbus-daemondir=${bindir}"
 
 FILES_${PN} += "${datadir}/dbus-1/services/*.service \
                 ${datadir}/dbus-1/accessibility-services/*.service"
Signature · 1 line
2.1.4
#26 lore raw

PATCH 22/29 gstreamer: enable gobject introspection

In reply to Alexander Kanavin
---
 .../recipes-multimedia/gstreamer/gst-player_git.bb |   2 +-
 .../gstreamer/gst-plugins-package.inc              |   1 +
 ...-don-t-hardcode-libtool-name-when-running.patch |  42 +++
 .../gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb    |   1 +
 .../gstreamer/gstreamer1.0-plugins-base.inc        |   4 +
 ...-don-t-hardcode-libtool-name-when-running.patch | 168 ++++++++++++
 ...-prefix-calls-to-pkg-config-with-PKG_CONF.patch | 298 +++++++++++++++++++++
 ...ssing-include-directories-when-calling-in.patch |  28 ++
 ...ncorrect-reference-to-gstreamer-sdp-in-Ma.patch |  27 ++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |   4 +
 .../gstreamer/gstreamer1.0-plugins.inc             |  10 +-
 .../gstreamer/gstreamer1.0-rtsp-server.inc         |   9 +-
 ...ode-libtool-name-when-using-introspection.patch |  27 ++
 .../gstreamer/gstreamer1.0-rtsp-server_1.4.5.bb    |   2 +
 meta/recipes-multimedia/gstreamer/gstreamer1.0.inc |  12 +-
 15 files changed, 630 insertions(+), 5 deletions(-)
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/0001-Don-t-hardcode-libtool-name-when-using-introspection.patch
meta/recipes-multimedia/gstreamer/gst-player_git.bb +1 -1
index 9850242..418324a 100644
@@ -16,7 +16,7 @@ SRCREV = "5386c5b984d40ef5434673ed62204e69aaf52645"
 
 S = "${WORKDIR}/git"
 
-inherit autotools gtk-doc lib_package pkgconfig distro_features_check
+inherit autotools gtk-doc lib_package pkgconfig distro_features_check gobject-introspection
 
 ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
 
meta/recipes-multimedia/gstreamer/gst-plugins-package.inc +1 -0
index cb1be06..cabf56f 100644
@@ -8,6 +8,7 @@ python split_gstreamer10_packages () {
 
     do_split_packages(d, glibdir, '^lib(.*)\.so\.*', 'lib%s', 'gstreamer %s library', extra_depends='', allow_links=True)
     do_split_packages(d, gst_libdir, 'libgst(.*)\.so$', d.expand('${PN}-%s'), 'GStreamer plugin for %s', postinst=postinst, extra_depends='')
+    do_split_packages(d, glibdir+'/girepository-1.0', 'Gst(.*)-1.0\.typelib$', d.expand('${PN}-%s-typelib'), 'GStreamer typelib file for %s', postinst=postinst, extra_depends='')
     do_split_packages(d, gst_libdir, 'libgst(.*)\.la$', d.expand('${PN}-%s-dev'), 'GStreamer plugin for %s (development files)', extra_depends=d.expand('${PN}-dev'))
     do_split_packages(d, gst_libdir, 'libgst(.*)\.a$', d.expand('${PN}-%s-staticdev'), 'GStreamer plugin for %s (static development files)', extra_depends=d.expand('${PN}-staticdev'))
 }
meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch new file +42 -0

42 lines not on this page · raw message

meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb +1 -0
index 6873669..bfa1377 100644
@@ -7,6 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \
 
 SRC_URI += "file://0001-gl-do-not-check-for-GL-GLU-EGL-GLES2-libs-if-disable.patch \
            file://0001-glimagesink-Downrank-to-marginal.patch \
+           file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch \
            "
 
 SRC_URI[md5sum] = "e0bb39412cf4a48fe0397bcf3a7cd451"
meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc +4 -0
index 47f3f40..13cd9d5 100644
@@ -37,3 +37,7 @@ EXTRA_OECONF += " \
 FILES_${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict"
 
 CACHED_CONFIGUREVARS_append_x86 = " ac_cv_header_emmintrin_h=no ac_cv_header_xmmintrin_h=no"
+
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/gst-libs/gst/tag/.libs:${B}/gst-libs/gst/video/.libs:${B}/gst-libs/gst/audio/.libs"
+}
meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch new file +168 -0

168 lines not on this page · raw message

meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch new file +298 -0

298 lines not on this page · raw message

meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch new file +28 -0
new file mode 100644
index 0000000..cb4e688
@@ -0,0 +1,28 @@
+From 08871a79a46685fbf3555987330ff80ba74885b1 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Mon, 26 Oct 2015 17:29:37 +0200
+Subject: [PATCH 3/4] riff: add missing include directories when calling
+ introspection scanner
+
+Upstream-Status: Pending [review on oe-core maillist]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ gst-libs/gst/riff/Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am
+index 009e86a..ba40f87 100644
+--- a/gst-libs/gst/riff/Makefile.am
++++ b/gst-libs/gst/riff/Makefile.am
+@@ -34,6 +34,8 @@ GstRiff-@[email protected]: $(INTROSPECTION_SCANNER) libgstriff-@GST_API_VERS
+ 		--strip-prefix=Gst \
+ 		--warn-all \
+ 		--c-include "gst/riff/riff.h" \
++                -I$(top_srcdir)/gst-libs \
++                -I$(top_builddir)/gst-libs \
+ 		--add-include-path=$(builddir)/../tag \
+ 		--add-include-path=$(builddir)/../audio \
+ 		--add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+-- 
+2.1.4
+
meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch new file +27 -0
new file mode 100644
index 0000000..6cf280b
@@ -0,0 +1,27 @@
+From 485294933e166c053903db524a03b3d1eed73e44 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Mon, 26 Oct 2015 17:30:14 +0200
+Subject: [PATCH 4/4] rtsp: drop incorrect reference to gstreamer-sdp in
+ Makefile.am
+
+Upstream-Status: Pending [review on oe-core maillist]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ gst-libs/gst/rtsp/Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am
+index 274529a..e2fb948 100644
+--- a/gst-libs/gst/rtsp/Makefile.am
++++ b/gst-libs/gst/rtsp/Makefile.am
+@@ -75,7 +75,6 @@ GstRtsp-@[email protected]: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+ 		--libtool="$(LIBTOOL)" \
+ 		--pkg gio-2.0 \
+ 		--pkg gstreamer-@GST_API_VERSION@ \
+-		--pkg gstreamer-sdp-@GST_API_VERSION@ \
+ 		--pkg-export gstreamer-rtsp-@GST_API_VERSION@ \
+ 		--add-init-section="gst_init(NULL,NULL);" \
+ 		--output $@ \
+-- 
+2.1.4
+
meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb +4 -0
index b09c2cb..e996123 100644
@@ -22,6 +22,10 @@ SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
             file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \
             file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \
             file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch \
+            file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch \
+            file://0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch \
+            file://0003-riff-add-missing-include-directories-when-calling-in.patch \
+            file://0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch \
 "
 
 SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"
meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc +8 -2
index f1783b7..7f2a063 100644
@@ -4,7 +4,7 @@ BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
 SECTION = "multimedia"
 DEPENDS = "gstreamer1.0"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig gobject-introspection
 
 GSTREAMER_1_0_DEBUG ?= "--disable-debug"
 GSTREAMER_1_0_GIT_BRANCH ?= "master"
@@ -55,5 +55,11 @@ delete_liblink_m4_file() {
 	rm "${S}/m4/lib-link.m4" || true
 }
 
-do_configure[prefuncs] += " delete_liblink_m4_file "
+delete_pkg_m4_file() {
+	# This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
+	rm "${S}/common/m4/pkg.m4" || true
+}
+
+do_configure[prefuncs] += " delete_liblink_m4_file delete_pkg_m4_file"
+
 
meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc +8 -1
index 28a9420..ebdfe20 100644
@@ -10,5 +10,12 @@ SRC_URI = "http://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz
 
 S = "${WORKDIR}/${PNREAL}-${PV}"
 
-inherit autotools pkgconfig 
+inherit autotools pkgconfig gobject-introspection
+
+delete_pkg_m4_file() {
+        # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
+        rm "${S}/common/m4/pkg.m4" || true
+}
+
+do_configure[prefuncs] += " delete_pkg_m4_file"
 
meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/0001-Don-t-hardcode-libtool-name-when-using-introspection.patch new file +27 -0
new file mode 100644
index 0000000..89d6384
@@ -0,0 +1,27 @@
+From 4a12569e5ae5be63cd92a9b178860026a99746b1 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Tue, 27 Oct 2015 16:55:45 +0200
+Subject: [PATCH] Don't hardcode libtool name when using introspection
+
+Upstream-Status: Pending [review on oe-core maillist]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ gst/rtsp-server/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst/rtsp-server/Makefile.am b/gst/rtsp-server/Makefile.am
+index 4fcd366..c67f5ab 100644
+--- a/gst/rtsp-server/Makefile.am
++++ b/gst/rtsp-server/Makefile.am
+@@ -87,7 +87,7 @@ GstRtspServer-@[email protected]: $(INTROSPECTION_SCANNER) libgstrtspserver-@
+ 		--include=Gst-@GST_API_VERSION@ \
+ 		--include=GstRtsp-@GST_API_VERSION@ \
+ 		--include=GstNet-@GST_API_VERSION@ \
+-		--libtool="$(top_builddir)/libtool" \
++		--libtool="$(LIBTOOL)" \
+ 		--pkg gstreamer-@GST_API_VERSION@ \
+ 		--pkg gstreamer-rtsp-@GST_API_VERSION@ \
+ 		--pkg gstreamer-net-@GST_API_VERSION@ \
+-- 
+2.1.4
+
meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.4.5.bb +2 -0
index bb9b42b..4af7075 100644
@@ -2,5 +2,7 @@ include gstreamer1.0-rtsp-server.inc
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
 
+SRC_URI += "file://0001-Don-t-hardcode-libtool-name-when-using-introspection.patch"
+
 SRC_URI[md5sum] = "a9f9b8899ec7ab33663cda7627db40d3"
 SRC_URI[sha256sum] = "3089254bd31b7c1f1cf2c034a3b3551f92878f9e3cab65cef3a901a04c0f1d37"
meta/recipes-multimedia/gstreamer/gstreamer1.0.inc +11 -1
index be8aa8f..d75cbde 100644
@@ -7,7 +7,7 @@ SECTION = "multimedia"
 LICENSE = "LGPLv2+"
 DEPENDS = "glib-2.0 libxml2 bison-native flex-native"
 
-inherit autotools pkgconfig gettext
+inherit autotools pkgconfig gettext gobject-introspection
 
 PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
 PACKAGECONFIG[check] = "--enable-check,--disable-check"
@@ -27,3 +27,13 @@ FILES_${PN} += " ${libdir}/gstreamer-1.0/*.so"
 FILES_${PN}-dev += " ${libdir}/gstreamer-1.0/*.la ${libdir}/gstreamer-1.0/*.a"
 FILES_${PN}-dbg += " ${libdir}/gstreamer-1.0/.debug/ ${libexecdir}/gstreamer-1.0/.debug/"
 
+delete_pkg_m4_file() {
+        # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
+        rm "${S}/common/m4/pkg.m4" || true
+}
+
+do_configure[prefuncs] += " delete_pkg_m4_file"
+
+do_compile_prepend() {
+        export GIR_EXTRA_LIBS_PATH="${B}/gst/.libs"
+}
Signature · 1 line
2.1.4
#27 lore raw

PATCH 23/29 gnomebase.bbclass: enable gobject introspection

In reply to Alexander Kanavin

This also requires various tweaks to recipes that depend on this class, which are included in this commit as well.

One of those tweaks is that pygobject is finally updated to the latest upstream release.

---
 meta/classes/gnomebase.bbclass                     |   5 +-
 ...c-add-sysroot-path-to-GI_DATADIR-don-t-se.patch |  41 +++++++
 .../python/python-pygobject_2.28.3.bb              |  53 ---------
 .../python/python-pygobject_3.18.0.bb              |  29 +++++
 .../gsettings-desktop-schemas_3.16.1.bb            |   2 +-
 meta/recipes-gnome/librsvg/librsvg_2.40.10.bb      |   3 -
 ...ation-paths-for-.gir-and-.typelib-as-reco.patch |  32 ++++++
 meta/recipes-gnome/libwnck/libwnck3_3.14.0.bb      |   3 +-
 meta/recipes-graphics/pango/pango.inc              |   3 +-
 ...op-introspection-macros-from-acinclude.m4.patch | 121 +++++++++++++++++++++
 meta/recipes-graphics/pango/pango_1.36.8.bb        |   1 +
 meta/recipes-support/atk/atk_2.16.0.bb             |   2 +-
 ...file.am-install-gir-typelib-using-datadir.patch |  34 ++++++
 meta/recipes-support/vte/vte.inc                   |   4 +-
 meta/recipes-support/vte/vte_0.28.2.bb             |   3 +-
 15 files changed, 268 insertions(+), 68 deletions(-)
 create mode 100644 meta/recipes-devtools/python/python-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygobject_2.28.3.bb
 create mode 100644 meta/recipes-devtools/python/python-pygobject_3.18.0.bb
 create mode 100644 meta/recipes-gnome/libwnck/files/0001-Fix-installation-paths-for-.gir-and-.typelib-as-reco.patch
 create mode 100644 meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch
 create mode 100644 meta/recipes-support/vte/vte-0.28.2/0001-Makefile.am-install-gir-typelib-using-datadir.patch
meta/classes/gnomebase.bbclass +1 -4
index d22ba5a..8310193 100644
@@ -20,7 +20,7 @@ FILES_${PN} += "${datadir}/application-registry  \
 
 FILES_${PN}-doc += "${datadir}/devhelp"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig gobject-introspection
 
 do_install_append() {
 	rm -rf ${D}${localstatedir}/lib/scrollkeeper/*
@@ -28,6 +28,3 @@ do_install_append() {
 	rm -f ${D}${datadir}/applications/*.cache
 }
 
-EXTRA_OECONF += "--disable-introspection"
-
-UNKNOWN_CONFIGURE_WHITELIST += "--disable-introspection"
meta/recipes-devtools/python/python-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch new file +41 -0

41 lines not on this page · raw message

meta/recipes-devtools/python/python-pygobject_2.28.3.bb deleted +0 -53

53 lines not on this page · raw message

meta/recipes-devtools/python/python-pygobject_3.18.0.bb new file +29 -0
new file mode 100644
index 0000000..366cfa9
@@ -0,0 +1,29 @@
+SUMMARY = "Python GObject bindings"
+SECTION = "devel/python"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
+
+inherit autotools pkgconfig gnomebase distutils3-base
+
+DEPENDS = "python3 glib-2.0 gnome-common"
+
+SRCNAME="pygobject"
+SRC_URI = " \
+    http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
+    file://0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch \
+"
+SRC_URI[md5sum] = "2ac5d4398e7ecabf64b3deb65c799516"
+SRC_URI[sha256sum] = "1c3ba1112d3713cd5c86260312bfeb0de1f84f18808e51072c50b29d46156dc9"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+BBCLASSEXTEND = "native"
+
+export STAGING_LIBDIR
+export STAGING_INCDIR
+export BUILD_SYS
+export HOST_SYS
+
+EXTRA_OECONF = "--disable-cairo"
+
+RDEPENDS_${PN} += "python3-setuptools"
meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.16.1.bb +1 -1
index f2f2c75..efb813a 100644
@@ -5,7 +5,7 @@ BUGTRACKER = "https://bugzilla.gnome.org/"
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
 
-DEPENDS = "glib-2.0 intltool-native gobject-introspection-stub-native"
+DEPENDS = "glib-2.0 intltool-native"
 
 inherit gnomebase gsettings gettext
 
meta/recipes-gnome/librsvg/librsvg_2.40.10.bb +0 -3
index 06552c2..ebaa408 100644
@@ -19,8 +19,6 @@ SRC_URI[archive.sha256sum] = "965c807438ce90b204e930ff80c92eba1606a2f6fd5ccfd093
 
 CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
 
-EXTRA_OECONF = "--disable-introspection --disable-vala"
-
 # The older ld (2.22) on the host (Centos 6.5) doesn't have the
 # -Bsymbolic-functions option, we can disable it for native.
 EXTRA_OECONF_append_class-native = " --enable-Bsymbolic=auto"
@@ -37,7 +35,6 @@ do_install_append() {
 }
 
 PACKAGES =+ "librsvg-gtk rsvg"
-FILES_${PN} = "${libdir}/*.so.*"
 FILES_${PN}-dbg += "${libdir}/gdk-pixbuf-2.0/*/loaders/.debug"
 FILES_rsvg = "${bindir}/rsvg* \
 	      ${datadir}/pixmaps/svg-viewer.svg \
meta/recipes-gnome/libwnck/files/0001-Fix-installation-paths-for-.gir-and-.typelib-as-reco.patch new file +32 -0
new file mode 100644
index 0000000..993c18a
@@ -0,0 +1,32 @@
+From c41bed70e28112246cc06d31b2cf39091d63b52d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Mon, 26 Oct 2015 19:43:21 +0200
+Subject: [PATCH] Fix installation paths for .gir and .typelib as recommended
+ by gobject-introspection documentation.
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ libwnck/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libwnck/Makefile.am b/libwnck/Makefile.am
+index 4a105e6..a0b249a 100644
+--- a/libwnck/Makefile.am
++++ b/libwnck/Makefile.am
+@@ -182,10 +182,10 @@ Wnck_3_0_gir_SCANNERFLAGS = --pkg-export=libwnck-3.0
+ Wnck_3_0_gir_FILES = $(introspection_sources)
+ INTROSPECTION_GIRS += Wnck-3.0.gir
+ 
+-girdir = $(INTROSPECTION_GIRDIR)
++girdir = $(datadir)/gir-1.0
+ gir_DATA = $(INTROSPECTION_GIRS)
+ 
+-typelibdir = $(INTROSPECTION_TYPELIBDIR)
++typelibdir = $(libdir)/girepository-1.0
+ typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+ 
+ CLEANFILES += $(gir_DATA) $(typelib_DATA)
+-- 
+2.1.4
+
meta/recipes-gnome/libwnck/libwnck3_3.14.0.bb +2 -1
index 3ee1ae9..b0da43e 100644
@@ -5,12 +5,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
 BPN = "libwnck"
 
 SECTION = "x11/libs"
-DEPENDS = "gobject-introspection-stub gtk+3 gdk-pixbuf-native libxres"
+DEPENDS = "gtk+3 gdk-pixbuf-native libxres"
 
 PACKAGECONFIG ??= "startup-notification"
 PACKAGECONFIG[startup-notification] = "--enable-startup-notification,--disable-startup-notification,startup-notification"
 
 inherit gnomebase
+SRC_URI += "file://0001-Fix-installation-paths-for-.gir-and-.typelib-as-reco.patch"
 SRC_URI[archive.md5sum] = "4538672e0d775fadedf10abeb8020047"
 SRC_URI[archive.sha256sum] = "f5080076346609b4c36394b879f3a86b92ced3b90a37cb54c8e9a14f00e7921c"
 
meta/recipes-graphics/pango/pango.inc +1 -2
index df0fdf6..cb38a0c 100644
@@ -38,8 +38,7 @@ EXTRA_AUTORECONF = ""
 # seems to go wrong with default cflags
 FULL_OPTIMIZATION_arm = "-O2"
 
-EXTRA_OECONF = "--disable-introspection \
-		--enable-explicit-deps=no \
+EXTRA_OECONF = "--enable-explicit-deps=no \
 	        --disable-debug \
 	        --with-mlprefix=${MLPREFIX}"
 
meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch new file +121 -0

121 lines not on this page · raw message

meta/recipes-graphics/pango/pango_1.36.8.bb +1 -0
index f4e4250..c9dae65 100644
@@ -4,6 +4,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
 
 SRC_URI += "file://run-ptest \
             file://multilib-fix-clean.patch \
+            file://0001-Drop-introspection-macros-from-acinclude.m4.patch \
 "
 
 SRC_URI[archive.md5sum] = "217a9a753006275215fa9fa127760ece"
meta/recipes-support/atk/atk_2.16.0.bb +1 -1
index 0f8f9b5..67a65d7 100644
@@ -18,4 +18,4 @@ SRC_URI[archive.sha256sum] = "095f986060a6a0b22eb15eef84ae9f14a1cf8082488faa6886
 BBCLASSEXTEND = "native"
 
 EXTRA_OECONF = "--disable-glibtest \
-                --disable-introspection"
+               "
meta/recipes-support/vte/vte-0.28.2/0001-Makefile.am-install-gir-typelib-using-datadir.patch new file +34 -0
new file mode 100644
index 0000000..6971b7b
@@ -0,0 +1,34 @@
+From 4d6c01666e50068935e116cb98f7d142936597ed Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Tue, 27 Oct 2015 15:23:54 +0200
+Subject: [PATCH] Makefile.am: install gir/typelib using $(datadir)
+
+This is recommended by gobject-introspection docs, and works
+in sysroot environments.
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ src/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 1971458..4929f0c 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -182,10 +182,10 @@ Vte_@VTE_API_VERSION_U@_gir_FILES = \
+ 
+ INTROSPECTION_GIRS += Vte-$(VTE_API_VERSION).gir
+ 
+-girdir = $(INTROSPECTION_GIRDIR)
++girdir = $(datadir)/gir-1.0
+ nodist_gir_DATA = $(INTROSPECTION_GIRS)
+ 
+-typelibdir = $(INTROSPECTION_TYPELIBDIR)
++typelibdir = $(libdir)/girepository-1.0
+ nodist_typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
+ 
+ CLEANFILES += $(nodist_gir_DATA) $(nodist_typelib_DATA)
+-- 
+2.1.4
+
meta/recipes-support/vte/vte.inc +2 -2
index 07b9e10..6cf860d 100644
@@ -1,13 +1,13 @@
 SUMMARY = "Virtual terminal emulator GTK+ widget library"
 BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
 LICENSE = "LGPLv2.0"
-DEPENDS = " glib-2.0 gtk+ intltool-native ncurses gobject-introspection-stub"
+DEPENDS = " glib-2.0 gtk+ intltool-native ncurses"
 RDEPENDS_libvte = "vte-termcap"
 
 inherit gnome gtk-doc distro_features_check
 ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
 
-EXTRA_OECONF = "--disable-python --disable-introspection"
+EXTRA_OECONF = "--disable-python"
 
 PACKAGES =+ "libvte vte-termcap"
 FILES_libvte = "${libdir}/*.so.* ${libexecdir}/gnome-pty-helper"
meta/recipes-support/vte/vte_0.28.2.bb +2 -1
index 8b4e7f7..c047d9f 100644
@@ -5,7 +5,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
 PR = "r6"
 
 SRC_URI += "file://obsolete_automake_macros.patch \
-            file://cve-2012-2738.patch"
+            file://cve-2012-2738.patch \
+            file://0001-Makefile.am-install-gir-typelib-using-datadir.patch"
 
 CFLAGS += "-D_GNU_SOURCE"
 
Signature · 1 line
2.1.4
#28 lore raw

PATCH 24/29 webkitgtk: enable gobject introspection

In reply to Alexander Kanavin
---
 ...Introspection.cmake-prefix-variables-obta.patch | 27 +++++++++++++++
 ...ng-introspection-files-add-CMAKE_C_FLAGS-.patch | 40 ++++++++++++++++++++++
 meta/recipes-sato/webkit/webkitgtk_2.8.5.bb        |  6 ++--
 3 files changed, 71 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-sato/webkit/files/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
 create mode 100644 meta/recipes-sato/webkit/files/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
meta/recipes-sato/webkit/files/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch new file +27 -0
new file mode 100644
index 0000000..fae3b0b
@@ -0,0 +1,27 @@
+From 317a5ac120c44987219bc03486cd2f2d1842c9b9 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Tue, 27 Oct 2015 16:02:19 +0200
+Subject: [PATCH] FindGObjectIntrospection.cmake: prefix variables obtained
+ from pkg-config with PKG_CONFIG_SYSROOT_DIR
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ Source/cmake/FindGObjectIntrospection.cmake | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Source/cmake/FindGObjectIntrospection.cmake b/Source/cmake/FindGObjectIntrospection.cmake
+index e1f49b4..03a4446 100644
+--- a/Source/cmake/FindGObjectIntrospection.cmake
++++ b/Source/cmake/FindGObjectIntrospection.cmake
+@@ -26,6 +26,7 @@ macro(_GIR_GET_PKGCONFIG_VAR _outvar _varname _extra_args)
+     else ()
+         string(REGEX REPLACE "[\r\n]" " " _result "${_result}")
+         string(REGEX REPLACE " +$" ""  _result "${_result}")
++        string(CONCAT _result $ENV{PKG_CONFIG_SYSROOT_DIR} "${_result}")
+         separate_arguments(_result)
+         set(${_outvar} ${_result} CACHE INTERNAL "")
+     endif ()
+-- 
+2.1.4
+
meta/recipes-sato/webkit/files/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch new file +40 -0
new file mode 100644
index 0000000..c4584c6
@@ -0,0 +1,40 @@
+From f42434706e2686b28ac7c2d0362665c51d26faad Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <[email protected]>
+Date: Wed, 28 Oct 2015 14:18:57 +0200
+Subject: [PATCH] When building introspection files, add CMAKE_C_FLAGS to the
+ compiler flags.
+
+g-ir-compiler is using a C compiler internally, so it needs to set
+the proper flags for it.
+
+Upstream-Status: Pending [review on oe-core list] 
+Signed-off-by: Alexander Kanavin <[email protected]>
+---
+ Source/WebKit2/PlatformGTK.cmake | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Source/WebKit2/PlatformGTK.cmake b/Source/WebKit2/PlatformGTK.cmake
+index 058c241..37d7412 100644
+--- a/Source/WebKit2/PlatformGTK.cmake
++++ b/Source/WebKit2/PlatformGTK.cmake
+@@ -823,7 +823,7 @@ add_custom_command(
+     OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
+     DEPENDS WebKit2
+     DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
+-    COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations LDFLAGS=
++    COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS} LDFLAGS=
+         LD_LIBRARY_PATH="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
+         ${INTROSPECTION_SCANNER}
+         --quiet
+@@ -863,7 +863,7 @@ add_custom_command(
+     OUTPUT ${CMAKE_BINARY_DIR}/WebKit2WebExtension-${WEBKITGTK_API_VERSION}.gir
+     DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
+     DEPENDS ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
+-    COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations LDFLAGS=
++    COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS} LDFLAGS=
+         LD_LIBRARY_PATH="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
+         ${INTROSPECTION_SCANNER}
+         --quiet
+-- 
+2.1.4
+
meta/recipes-sato/webkit/webkitgtk_2.8.5.bb +4 -2
index e29666a..f21dc4b 100644
@@ -14,11 +14,13 @@ SRC_URI = "\
   http://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
   file://0001-This-patch-fixes-a-command-line-that-is-too-long-ove.patch \
   file://gcc5.patch \
+  file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
+  file://0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch \
   "
 SRC_URI[md5sum] = "df79991848a5096d3a75289ebce547ae"
 SRC_URI[sha256sum] = "3d1f0c534935f43fd74df90f2648fcee672d60f1f57a30fa557a77891ae04d20"
 
-inherit cmake lib_package pkgconfig perlnative pythonnative distro_features_check
+inherit cmake lib_package pkgconfig perlnative pythonnative distro_features_check gobject-introspection
 
 # depends on libxt
 REQUIRED_DISTRO_FEATURES = "x11"
@@ -45,7 +47,7 @@ PACKAGECONFIG[libsecret] = "-DENABLE_CREDENTIAL_STORAGE=ON,-DENABLE_CREDENTIAL_S
 EXTRA_OECMAKE = " \
 		-DPORT=GTK \
 		-DCMAKE_BUILD_TYPE=Release \
-		-DENABLE_INTROSPECTION=OFF \
+		-DENABLE_INTROSPECTION=ON \
 		-DENABLE_GTKDOC=OFF \
 		-DENABLE_MINIBROWSER=ON \
 		"
Signature · 1 line
2.1.4
#29 lore raw

PATCH 25/29 gcr: disable gobject introspection on x86-64 for now

In reply to Alexander Kanavin
---
 meta/recipes-gnome/gcr/gcr_3.16.0.bb | 13 +++++++++++++
 1 file changed, 13 insertions(+)
meta/recipes-gnome/gcr/gcr_3.16.0.bb +13 -0
index 40c0fe8..ebe2873 100644
@@ -19,3 +19,16 @@ FILES_${PN} += " \
 
 # http://errors.yoctoproject.org/Errors/Details/20229/
 ARM_INSTRUCTION_SET = "arm"
+
+# on x86-64 the introspection binary goes into 
+# an infinite loop under qemu during compilation, 
+# printing the following:
+# 
+# gcrypt-Message: select() error: Bad address
+#
+# gcrypt-Message: select() error: Bad address
+#
+# gcrypt-Message: select() error: Bad address
+#
+# This will be investigated later.
+EXTRA_OECONF_append_x86-64 = " --disable-introspection"
Signature · 1 line
2.1.4
#30 lore raw

PATCH 26/29 gcr: disable gobject-introspection on mips64

In reply to Alexander Kanavin
---
 meta/recipes-gnome/gcr/gcr_3.16.0.bb | 5 +++++
 1 file changed, 5 insertions(+)
meta/recipes-gnome/gcr/gcr_3.16.0.bb +5 -0
index ebe2873..4f0aabf 100644
@@ -32,3 +32,8 @@ ARM_INSTRUCTION_SET = "arm"
 #
 # This will be investigated later.
 EXTRA_OECONF_append_x86-64 = " --disable-introspection"
+
+# Gcr-3.broken: poky/build-mips64/tmp/work/mips64-poky-linux/libgpg-error/1.19-r0/libgpg-error-1.19/src/posix-lock.c:119: get_lock_object: Assertion `!"sizeof lock obj"' failed.
+# qemu: uncaught target signal 6 (Aborted) - core dumped
+EXTRA_OECONF_append_mips64 = " --disable-introspection"
+
Signature · 1 line
2.1.4
#31 lore raw

PATCH 27/29 libsecret: disable gobject-introspection on mips64

In reply to Alexander Kanavin
---
 meta/recipes-gnome/libsecret/libsecret_0.18.2.bb | 5 +++++
 1 file changed, 5 insertions(+)
meta/recipes-gnome/libsecret/libsecret_0.18.2.bb +5 -0
index 707838c..8f9d105 100644
@@ -18,3 +18,8 @@ ARM_INSTRUCTION_SET = "arm"
 do_configure_prepend() {
     rm -f ${S}/build/m4/vapigen.m4
 }
+
+# Secret-1: poky/build-mips64/tmp/work/mips64-poky-linux/libgpg-error/1.19-r0/libgpg-error-1.19/src/posix-lock.c:119: get_lock_object: Assertion `!"sizeof lock obj"' failed.
+# qemu: uncaught target signal 6 (Aborted) - core dumped
+EXTRA_OECONF_append_mips64 = " --disable-introspection"
+
Signature · 1 line
2.1.4
#32 lore raw

PATCH 28/29 webkitgtk: disable gobject-introspection on powerpc

In reply to Alexander Kanavin
---
 meta/recipes-sato/webkit/webkitgtk_2.8.5.bb | 7 +++++++
 1 file changed, 7 insertions(+)
meta/recipes-sato/webkit/webkitgtk_2.8.5.bb +7 -0
index f21dc4b..5402f5e 100644
@@ -74,3 +74,10 @@ FILES_${PN}-dbg += "${libdir}/webkitgtk/webkit2gtk-4.0/.debug/*"
 
 # http://errors.yoctoproject.org/Errors/Details/20370/
 ARM_INSTRUCTION_SET = "arm"
+
+# Invalid data memory access: 0x00000000
+# ...
+# qemu: uncaught target signal 11 (Segmentation fault) - core dumped
+# Segmentation fault
+EXTRA_OECMAKE_append_powerpc = " -DENABLE_INTROSPECTION=OFF "
+
Signature · 1 line
2.1.4
#33 lore raw

PATCH 29/29 packagegroup-core-x11-sato: add python-pygobject and gtk+3

In reply to Alexander Kanavin

This allows easy testing of introspection for example using
http://python-gtk-3-tutorial.readthedocs.org/en/latest/introduction.html

---
 meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb | 2 ++
 1 file changed, 2 insertions(+)
meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb +2 -0
index 6679db8..49f3583 100644
@@ -40,6 +40,8 @@ RDEPENDS_${PN}-base = "\
     ${NETWORK_MANAGER} \
     udev-extraconf \
     ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio-server pulseaudio-client-conf-sato', '', d)} \
+    python-pygobject \
+    gtk+3 \
     "
 
 # pcmanfm doesn't work on mips
Signature · 1 line
2.1.4
#9 lore raw

Re: [PATCH 08/29] python-pygtk: remove the recipe

In reply to Alexander Kanavin

Are the pygtk changes directly related to the introspection changes? If not then maybe they should happen in another patch set.

Jussi

Quoted 542 lines · Alexander Kanavin

python-pygtk hasn't been updated in several years, is incompatible with the current version of pygobject, and is generally obsolete as all modern python gtk apps use introspection directly.

---
 meta/conf/distro/include/distro_alias.inc          |  1 -
 .../packagegroups/packagegroup-self-hosted.bb      |  1 -
 .../python/python-pygtk/acinclude.m4               | 90
----------------------
 .../add-gtk-types.defs-into-gdk.c-dependence.patch | 32 --------
 .../python/python-pygtk/fix-gtkunixprint.patch     | 20 -----
 .../python/python-pygtk/fix-pygtk-2.0.pc.patch     | 13 ----
 .../python/python-pygtk/nodocs.patch               | 15 ----
 .../prevent_to_get_display_during_import.patch     | 16 ----
 .../python/python-pygtk/python-pygtk2/acinclude.m4 | 90
----------------------
 .../update-dependences-of-defs.c.patch             | 38 ---------
 .../recipes-devtools/python/python-pygtk_2.24.0.bb | 55 -------------
 11 files changed, 371 deletions(-)
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/acinclude.m4
 delete mode 100644
meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch
 delete mode 100644
meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch
 delete mode 100644
meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/nodocs.patch
 delete mode 100644
meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch
 delete mode 100644
meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4
 delete mode 100644
meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk_2.24.0.bb
meta/conf/distro/include/distro_alias.inc +0 -0
index ca333c8..6368d6d 100644
@@ -402,7 +402,6 @@ DISTRO_PN_ALIAS_pn-python-mako = "Fedora=python-mako

Opensuse=python-Mako"
DISTRO_PN_ALIAS_pn-python-pycairo = "Meego=pycairo Fedora=pycairo
Ubuntu=pycairo Debian=pycairo"
DISTRO_PN_ALIAS_pn-python-pycurl = "Debian=python-pycurl
Ubuntu=python-pycurl"
DISTRO_PN_ALIAS_pn-python-pygobject = "Meego=pygobject2 Fedora=pygobject2
Ubuntu=pygobject Debian=pygobject" -DISTRO_PN_ALIAS_pn-python-pygtk = "Debian=python-gtk2 Fedora=pygtk2 OpenSuSE=python-gtk"
DISTRO_PN_ALIAS_pn-python-pyrex = "Mandriva=python-pyrex
Ubuntu=python-pyrex"
DISTRO_PN_ALIAS_pn-python-scons = "Fedora=scons OpenSuSE=scons
Ubuntu=scons Mandriva=scons Debian=scons"
DISTRO_PN_ALIAS_pn-python-setuptools = "Mandriva=python-setup
OpenSuSE=python-setup-git"

meta/recipes-core/packagegroups/packagegroup-self-hosted.bb +0 -1
index d38be26..b8573fb 100644
@@ -190,7 +190,6 @@ RDEPENDS_packagegroup-self-hosted-graphics = "\
     libsdl \
     libsdl-dev \
     libx11-dev \
-    python-pygtk \
     gtk-theme-clearlooks \
     xdg-utils \
     epiphany \
meta/recipes-devtools/python/python-pygtk/acinclude.m4 deleted +0 -2
deleted file mode 100644
index 53518fb..0000000
@@ -1,90 +0,0 @@
-## this one is commonly used with AM_PATH_PYTHONDIR ...
-dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND

[,ACTION-IF-NOT-FOUND]]])

meta/recipes-devtools/python/python-pygtk/acinclude.m4 deleted +0 -38
-dnl Check if a module containing a given symbol is visible to python.
-AC_DEFUN(AM_CHECK_PYMOD,
-[AC_REQUIRE([AM_PATH_PYTHON])
-py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
-AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
-AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
-ifelse([$2],[], [prog="
-import sys
-try:
-        import $1
-except ImportError:
-        sys.exit(1)
-except:
-        sys.exit(0)
-sys.exit(0)"], [prog="
-import $1
-$1.$2"])
-if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
-  then
-    eval "py_cv_mod_$py_mod_var=yes"
-  else
-    eval "py_cv_mod_$py_mod_var=no"
-  fi
-])
-py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
-if test "x$py_val" != xno; then
-  AC_MSG_RESULT(yes)
-  ifelse([$3], [],, [$3
-])dnl
-else
-  AC_MSG_RESULT(no)
-  ifelse([$4], [],, [$4
-])dnl
-fi
-])
-
-dnl a macro to check for ability to create python extensions
-dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE],

[ACTION-IF-NOT-POSSIBLE])

meta/recipes-devtools/python/python-pygtk/acinclude.m4 deleted +0 -7
-dnl function also defines PYTHON_INCLUDES
-AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
-[AC_REQUIRE([AM_PATH_PYTHON])
-AC_MSG_CHECKING(for headers required to compile python extensions)
-dnl deduce PYTHON_INCLUDES
-AC_ARG_WITH(python-includes,
-       [  --with-python-includes=DIR  path to Python includes],

py_exec_prefix=$withval)

meta/recipes-devtools/python/python-pygtk/acinclude.m4 deleted +0 -44
-if test x$py_exec_prefix != x; then
-PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-else
-py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
-py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
-PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
-if test "$py_prefix" != "$py_exec_prefix"; then
-  PYTHON_INCLUDES="$PYTHON_INCLUDES
-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-fi
-fi
-AC_SUBST(PYTHON_INCLUDES)
-dnl check if the headers exist:
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
-AC_TRY_CPP([#include <Python.h>],dnl
-[AC_MSG_RESULT(found)
-$1],dnl
-[AC_MSG_RESULT(not found)
-$2])
-CPPFLAGS="$save_CPPFLAGS"
-])
-
-dnl
-dnl JH_ADD_CFLAG(FLAG)
-dnl checks whether the C compiler supports the given flag, and if so, adds
-dnl it to $CFLAGS.  If the flag is already present in the list, then the
-dnl check is not performed.
-AC_DEFUN([JH_ADD_CFLAG],
-[
-case " $CFLAGS " in
-*@<:@\ \ @:>@$1@<:@\   \ @:>@*)
-  ;;
-*)
-  save_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $1"
-  AC_MSG_CHECKING([whether [$]CC understands $1])
-  AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
-  AC_MSG_RESULT($jh_has_option)
-  if test $jh_has_option = no; then
-    CFLAGS="$save_CFLAGS"
-  fi
-  ;;
-esac])

diff --git a/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch b/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch deleted file mode 100644
index df0f9cd..0000000
---
a/meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch +++ /dev/null

meta/recipes-devtools/python/python-pygtk/acinclude.m4 deleted +0 -27
@@ -1,32 +0,0 @@
-Upstream-Status: Submitted
-
-add gtk-types.defs into gdk.c dependence
-
-gdk.c depends on gtk-types.defs but
-gdk/Makefile.am miss this. This will cause
-build error sometimes when built
-with multi-jobbing, so add gtk-types.defs into
-gdk.c dependence.
-
-Signed-off-by: Song.Li <[email protected]>
-Signed-off-by: Jackie Huang <[email protected]>
----
- gtk/Makefile.am |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/gtk/Makefile.am b/gtk/Makefile.am
-index 7bb5d0c..4a88351 100644
---- a/gtk/Makefile.am
-+++ b/gtk/Makefile.am
-@@ -214,7 +214,7 @@ gtkunixprint.defs: $(GTKUNIXPRINT_DEFS) Makefile
- gtkunixprint-types.defs: $(GTKUNIXPRINT_TYPES_DEFS) Makefile
-       $(CREATEDEFS) $@ $(GTKUNIXPRINT_TYPES_DEFS)
-
--gdk.c: gdk-types.defs gdk.defs $(GDK_OVERRIDES)
-+gdk.c: gdk-types.defs gtk-types.defs gdk.defs $(GDK_OVERRIDES)
- gtk.c: gdk-types.defs gtk-types.defs gtk.defs gdk-types.defs

$(GTK_OVERRIDES)
- _gtk_la_CFLAGS = $(PYCAIRO_CFLAGS) $(GTK_CFLAGS)
- _gtk_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gtk
---
-1.7.4
-
diff --git a/meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch b/meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch deleted file mode 100644
index 16c0e8e..0000000

meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch deleted +0 -14
@@ -1,20 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Saul Wold <[email protected]>
-
-Index: pygtk-2.24.0/gtk/gtkunixprint.override
-===================================================================
---- pygtk-2.24.0.orig/gtk/gtkunixprint.override
-+++ pygtk-2.24.0/gtk/gtkunixprint.override
-@@ -102,11 +102,6 @@ _wrap_gtk_print_job_get_surface(PyGObjec
-     if (pyg_error_check(&error))
-         return NULL;
-
--#if PYCAIRO_VERSION_HEX >= 0x1010600
--    return PycairoSurface_FromSurface(cairo_surface_reference(surface),

NULL);
--#else
-- return PycairoSurface_FromSurface(cairo_surface_reference(surface),
NULL, NULL);
--#endif
- }
- %%
- override gtk_print_job_send kwargs
diff --git a/meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch b/meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch deleted file mode 100644
index b6156540..0000000

meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch deleted +0 -13
@@ -1,13 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: pygtk-2.24.0/pygtk-2.0.pc.in
-===================================================================
---- pygtk-2.24.0.orig/pygtk-2.0.pc.in
-+++ pygtk-2.24.0/pygtk-2.0.pc.in
-@@ -1,5 +1,6 @@
- prefix=@prefix@
- exec_prefix=@exec_prefix@
-+libdir=@libdir@
- includedir=@includedir@
- datarootdir=@datarootdir@
- datadir=@datadir@
meta/recipes-devtools/python/python-pygtk/nodocs.patch deleted +0 -15
deleted file mode 100644
index f07309a..0000000
@@ -1,15 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: pygtk-2.17.0/Makefile.am
-===================================================================
---- pygtk-2.17.0.orig/Makefile.am
-+++ pygtk-2.17.0/Makefile.am
-@@ -4,7 +4,7 @@ if BUILD_GTK
-   GTK_SUBDIR = gtk
- endif
-
--SUBDIRS = . $(GTK_SUBDIR) examples tests docs
-+SUBDIRS = . $(GTK_SUBDIR) examples tests
-
- PLATFORM_VERSION = 2.0
-

diff --git a/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch b/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch deleted file mode 100644
index 833038e..0000000
---
a/meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch +++ /dev/null

meta/recipes-devtools/python/python-pygtk/nodocs.patch deleted +0 -16
@@ -1,16 +0,0 @@
-Upstream-Status: Pending
-
-Index: pygtk-2.10.4/gtk/__init__.py
-===================================================================
---- pygtk-2.10.4.orig/gtk/__init__.py  2007-11-27 19:27:05.000000000 -0300
-+++ pygtk-2.10.4/gtk/__init__.py       2007-11-27 19:28:22.000000000 -0300
-@@ -78,7 +78,8 @@
-
- keysyms = LazyModule('keysyms', locals())
-
--_init()
-+if not hasattr(sys.modules['__main__'], 'python_launcher_enabled'):
-+    _init()
-
- # CAPI
- _PyGtk_API = _gtk._PyGtk_API

diff --git a/meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 b/meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 deleted file mode 100644
index 53518fb..0000000

meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 deleted +0 -2
@@ -1,90 +0,0 @@
-## this one is commonly used with AM_PATH_PYTHONDIR ...
-dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND

[,ACTION-IF-NOT-FOUND]]])

meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 deleted +0 -38
-dnl Check if a module containing a given symbol is visible to python.
-AC_DEFUN(AM_CHECK_PYMOD,
-[AC_REQUIRE([AM_PATH_PYTHON])
-py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
-AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
-AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
-ifelse([$2],[], [prog="
-import sys
-try:
-        import $1
-except ImportError:
-        sys.exit(1)
-except:
-        sys.exit(0)
-sys.exit(0)"], [prog="
-import $1
-$1.$2"])
-if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
-  then
-    eval "py_cv_mod_$py_mod_var=yes"
-  else
-    eval "py_cv_mod_$py_mod_var=no"
-  fi
-])
-py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
-if test "x$py_val" != xno; then
-  AC_MSG_RESULT(yes)
-  ifelse([$3], [],, [$3
-])dnl
-else
-  AC_MSG_RESULT(no)
-  ifelse([$4], [],, [$4
-])dnl
-fi
-])
-
-dnl a macro to check for ability to create python extensions
-dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE],

[ACTION-IF-NOT-POSSIBLE])

meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 deleted +0 -7
-dnl function also defines PYTHON_INCLUDES
-AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
-[AC_REQUIRE([AM_PATH_PYTHON])
-AC_MSG_CHECKING(for headers required to compile python extensions)
-dnl deduce PYTHON_INCLUDES
-AC_ARG_WITH(python-includes,
-       [  --with-python-includes=DIR  path to Python includes],

py_exec_prefix=$withval)

meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 deleted +0 -44
-if test x$py_exec_prefix != x; then
-PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-else
-py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
-py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
-PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
-if test "$py_prefix" != "$py_exec_prefix"; then
-  PYTHON_INCLUDES="$PYTHON_INCLUDES
-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
-fi
-fi
-AC_SUBST(PYTHON_INCLUDES)
-dnl check if the headers exist:
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
-AC_TRY_CPP([#include <Python.h>],dnl
-[AC_MSG_RESULT(found)
-$1],dnl
-[AC_MSG_RESULT(not found)
-$2])
-CPPFLAGS="$save_CPPFLAGS"
-])
-
-dnl
-dnl JH_ADD_CFLAG(FLAG)
-dnl checks whether the C compiler supports the given flag, and if so, adds
-dnl it to $CFLAGS.  If the flag is already present in the list, then the
-dnl check is not performed.
-AC_DEFUN([JH_ADD_CFLAG],
-[
-case " $CFLAGS " in
-*@<:@\ \ @:>@$1@<:@\   \ @:>@*)
-  ;;
-*)
-  save_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $1"
-  AC_MSG_CHECKING([whether [$]CC understands $1])
-  AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
-  AC_MSG_RESULT($jh_has_option)
-  if test $jh_has_option = no; then
-    CFLAGS="$save_CFLAGS"
-  fi
-  ;;
-esac])

diff --git a/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch b/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch deleted file mode 100644
index 3ed954e..0000000
---
a/meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch +++ /dev/null

meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4 deleted +0 -38
@@ -1,38 +0,0 @@
-From dc024e9079bbffbb44436ba3e70a758ebad5520f Mon Sep 17 00:00:00 2001
-From: "Song.Li" <[email protected]>
-Date: Sat, 5 Jan 2013 14:55:59 +0800
-Subject: [PATCH] update dependences of defs.c in Makefile.am
-
-In gtk/Makefile.am, defs.c should dependes on gdk-types.defs and
-gtk-types.defs, otherwise it fails occasionally when parallel compile.
-The error message:
-"IOError: [Errno 2] No such file or directory: 'gtk-types.defs'"
-
-Add them to dependences of defs.c to fix this issue.
-
-Upstream-Status: Submitted
-https://bugzilla.gnome.org/show_bug.cgi?id=702706
-
-Signed-off-by: Song.Li <[email protected]>
-Signed-off-by: Kai Kang <[email protected]>
-
----
- gtk/Makefile.am |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gtk/Makefile.am b/gtk/Makefile.am
-index 7bb5d0c..91826cb 100644
---- a/gtk/Makefile.am
-+++ b/gtk/Makefile.am
-@@ -289,7 +289,7 @@ if HAVE_GIO_TYPES_DEFS
- extra_codegen_args += --register $(PYGOBJECT_DEFSDIR)/gio-types.defs
- endif
-
--.defs.c:
-+.defs.c: gdk-types.defs gtk-types.defs
-       ($(PYTHON) $(CODEGENDIR)/codegen.py \
-          $(PYGTK_CODEGEN_DEFINES) \
-           -I $(srcdir) \
---
-1.7.9.5
-
meta/recipes-devtools/python/python-pygtk_2.24.0.bb deleted +0 -13
deleted file mode 100644
index 79b3110..0000000
@@ -1,55 +0,0 @@
-SUMMARY = "Python bindings for the GTK+ UI toolkit"
-SECTION = "devel/python"
-# needs gtk+ 2.17.x
-DEPENDS = "gtk+ libglade python-pycairo python-pygobject"
-RDEPENDS_${PN} = "python-shell python-pycairo python-pygobject"
-PROVIDES = "python-pygtk2"
-SRCNAME = "pygtk"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-
-PR = "r1"
-
-SRC_URI = "

ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.24/${SRCNAME}-${PV}.tar.bz2 \

meta/recipes-devtools/python/python-pygtk_2.24.0.bb deleted +0 -10
-           file://add-gtk-types.defs-into-gdk.c-dependence.patch \
-           file://fix-gtkunixprint.patch \
-           file://prevent_to_get_display_during_import.patch \
-           file://nodocs.patch \
-          file://fix-pygtk-2.0.pc.patch \
-           file://acinclude.m4 \
-           file://update-dependences-of-defs.c.patch"
-
-SRC_URI[md5sum] = "a1051d5794fd7696d3c1af6422d17a49"
-SRC_URI[sha256sum] =

"cd1c1ea265bd63ff669e92a2d3c2a88eb26bcd9e5363e0f82c896e649f206912"

meta/recipes-devtools/python/python-pygtk_2.24.0.bb deleted +0 -14
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-EXTRA_OECONF = "--disable-docs
--with-python-includes=${STAGING_INCDIR}/../"
-
-inherit autotools pkgconfig distutils-base distro_features_check
-
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
-
-do_configure_prepend() {
-       install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
-       sed -i \
-               -e s:'`$PKG_CONFIG --variable defsdir

pygobject-2.0`':\"${STAGING_DATADIR}/pygobject/2.0/defs\":g \
- -e s:'`$PKG_CONFIG --variable=pygtkincludedir
pygobject-2.0`':\"${STAGING_INCDIR}/pygtk-2.0\":g \
- -e s:'`$PKG_CONFIG --variable=datadir
pygobject-2.0`':\"${STAGING_DATADIR}\":g \
- -e s:'`$PKG_CONFIG --variable codegendir
pygobject-2.0`':\"${STAGING_DATADIR}/pygobject/2.0/codegen\":g \
- -e s:'`$PKG_CONFIG --variable=fixxref
pygobject-2.0`':\"${STAGING_DATADIR}/pygobject/xsl/fixxref.py\":g \

meta/recipes-devtools/python/python-pygtk_2.24.0.bb deleted +0 -6
-               ${S}/configure.ac
-}
-
-# dirty fix #2: fix build system paths leaking in
-do_install_append() {
-       sed -i -e '1s|^#!.*python|#!/usr/bin/env python|'

${D}${bindir}/pygtk-demo

meta/recipes-devtools/python/python-pygtk_2.24.0.bb deleted +0 -8
-}
-
-PACKAGES =+ "${PN}-demo"
-FILES_${PN}-demo = " ${bindir}/pygtk-demo ${libdir}/pygtk "
-RDEPENDS_${PN}-demo = "python-pygtk python-stringold python-lang"
-
-# todo: revamp packaging, package demo seperatly
-FILES_${PN}-dev += " ${libdir}/pygtk/2.0 ${bindir}/pygtk-*

${datadir}/pygtk/2.0"
-
--
2.1.4

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

#10 lore raw

Re: [PATCH 08/29] python-pygtk: remove the recipe

Quoted 2 lines · Jussi Kukkonen

Are the pygtk changes directly related to the introspection changes? If not then maybe they should happen in another patch set.

They are; pygtk requires an old (2.x) non-introspection based version of pygobject, and the introspection patchset updates pygobject to latest 3.x release which is a much thinner layer on top of libgirepository and is incompatible with pygtk.

Alex

#11 lore raw

Re: [PATCH 08/29] python-pygtk: remove the recipe

Quoted 11 lines · Alexander Kanavin
Quoted 3 lines · Jussi Kukkonen

Are the pygtk changes directly related to the introspection changes? If not then maybe they should happen in another patch set.

They are; pygtk requires an old (2.x) non-introspection based version of pygobject, and the introspection patchset updates pygobject to latest 3.x release which is a much thinner layer on top of libgirepository and is incompatible with pygtk.

Oh I see that now: It's patch 23 in the series for anyone else looking. I think this should be pointed out more visibly: the patchset essentially removes gtk2 python support, a feature we've had so far.

Maintaining python-gobject-2 and python-gtk-2 should be possible alongside the GI-based versions, but A) it only makes sense if there's real demand and B) it obviously doesn't have to happen in oe-core.

Jussi

#12 lore raw

Re: [PATCH 08/29] python-pygtk: remove the recipe

Quoted 12 lines · On Tuesday 10 November 2015 16:18:00 Jussi Kukkonen wrote:

On 10 November 2015 at 15:25, Alexander Kanavin <

Quoted 8 lines · [email protected]> wrote:
Quoted 2 lines · Jussi Kukkonen

Are the pygtk changes directly related to the introspection changes? If not then maybe they should happen in another patch set.

They are; pygtk requires an old (2.x) non-introspection based version of pygobject, and the introspection patchset updates pygobject to latest 3.x release which is a much thinner layer on top of libgirepository and is incompatible with pygtk.

Quoted 7 lines

Oh I see that now: It's patch 23 in the series for anyone else looking. I think this should be pointed out more visibly: the patchset essentially removes gtk2 python support, a feature we've had so far.

Maintaining python-gobject-2 and python-gtk-2 should be possible alongside the GI-based versions, but A) it only makes sense if there's real demand and B) it obviously doesn't have to happen in oe-core.

Note that this does mean we will no longer be able to build a build-appliance- image that includes Hob, since that requires PyGTK 2. However that's probably fine as Hob is deprecated already and is supposed to be going away in the 2.1 release (to be effectively replaced by Toaster, once the latter's functionality is on par). I just wanted to make a note of this since if nothing else this change will force us to consider what we're going to do with the build appliance going forward.

Cheers,
Paul

Signature · 2 lines
Paul Eggleton
Intel Open Source Technology Centre
#34 lore raw
In reply to Alexander Kanavin
Quoted 11 lines · Alexander Kanavin

1. Introduction

This patchset adds support for gobject introspection to oe-core. Gir files go to -dev packages, typelib files go to main packages (they are packaged together with libraries that are introspected).

The work is based on a meta-gir layer, which was used as a proof of concept; overall approach is same and some implementation ideas were used, but this implementation is otherwise different, and hopefully simpler and cleaner.

I have a concern since this uses QEMU. What do we do for BSPs that do NOT have QEMU support?

I realize QEMU supports most of the major arch families, but once we enable certain tuning flags and such there are a fair number of common configurations that do not have QEMU support.

Quoted 9 lines

2. 30 second tutorial for adding introspection support to a package:

a. Inherit gobject-introspection class (or a class that inherits it, such as gnome-base).

b. Make sure introspection is not disabled anywhere in the recipe or its includes.

Quoted 8 lines

c. Try to build the recipe; if this results in build errors that look like something is unable to find .so libraries, check where these libraries are in the source tree and add GIR_EXTRA_LIBS_PATH=${B}/something/.libs to the recipe.

c. Any other errors probably mean that introspection support in a package is not entirely standard, and breaks down in a cross-compilation environment. Custom-made fixing is needed then.

Is there a way that the qemu calls can be replaced by calls to an actual running board (via SSH perhaps) to get the necessary information? While inconvenient this might be a valid workaround.

Also is there any facility to caching the gobject responses (other then standard sstate-cache) so for machine that do not have QEMU support we can used a cached set of responses? (I'm not sure if these responses could be considered to be a global cache, or if they are distribution specific in configuration. Likely the later.)

Quoted 26 lines

3. How to verify that introspection works in an image:

a. Build core-image-sato.

b. Start terminal, start python3 in the terminal.

c. Type out something like:

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

from gi.repository import GLib
GLib.get_host_name()

d. Also, try something more advanced, for example:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/introduction.html

4. Request for testing - I would like this patchset to be checked on three levels:

a. Test it in all of the build environments you have. Let me know any errors or warnings. Also let me know, if some package can be built with introspection enabled, but is not.

b. Check the patchset for correct use of Yocto idioms. It touches a lot of things in a lot of different ways, and maybe there are better ways to do what it does.

Quoted 8 lines

c. Check that the overall design is sensible: how things work is hopefully explained in comments and commit messages.

5. Known issues:

- there is no way to globally switch off the whole thing at the moment; this should probably be a DISTRO_FEATURE (also see the next item)

I agree. For tunes where QEMU can't be used there should be a way to switch this behavior off. I don't know if it should be a DISTRO_FEATURE or other switch.

Quoted 5 lines

- qemu-ppc64 crashes out immediately; so anything that supports introspection cannot be built on that architecture:
Invalid data memory access: 0x00000040d89c5008
...

Quoted 8 lines

- gcr introspection is disabled in x86_64, because introspection helper binary goes into an infinite loop under qemu (on that architecture only).

- gcr and libsecret introspection is disabled in mips64, because introspection helper binary fails an assertion in libgpg-error

- webkit introspection is disabled in powerpc, because qemu-ppc crashes out when running g-ir-compiler

We should definitely inspect the items above and see if any of them are bugs in the built software or due to the QEMU application environment.

Quoted 2 lines

- the patchset has not been tested with layers in meta-oe; just making oe-core build without errors on all standard architectures has been a big, long task.

Thanks for the work. Hopefully this and the work to follow will make it easier to build more complex gobject based components in the future.

Quoted 162 lines

- the whole thing should be documented in Yocto manuals

The following changes since commit fc45deac89ef63ca1c44e763c38ced7dfd72cbe1:

build-appliance-image: Update to jethro head revision (2015-11-03 14:03:03 +0000)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib akanavin/gobject-introspection-experimental
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=akanavin/gobject-introspection-experimental

Alexander Kanavin (29):
qemu.bbclass: add qemu_wrapper_cmdline()
qemu: don't blacklist mips64 when building runners of userspace
binaries
gobject-introspection: add the recipe
gtk-doc-stub: remove introspection stubs gobject-introspection.bbclass: add a class that enables gobject
introspection
python3-native: use the previous version of python-config script
avahi-ui: remove the dependency on python-pygtk by disabling
avahi-discover
python-pygtk: remove the recipe
avahi: enable gobject-introspection
udev: enable gobject introspection
vala: enable the use of vapigen by packages with vala support
gcr: enable generation of vapi files using vapigen
gdk-pixbuf: enable gobject introspection
gconf: enable gobject-introspection
gtk+: enable gobject introspection
gtk+3: enable gobject-introspection
libsecret: enable generation of vapi files using vapigen
clutter: enable gobject introspection
vala.bbclass: remove pre-packaged vapigen.m4 from tarballs libsoup-2.4: enable gobject introspection
at-spi2-core: enable gobject introspection
gstreamer: enable gobject introspection gnomebase.bbclass: enable gobject introspection
webkitgtk: enable gobject introspection
gcr: disable gobject introspection on x86-64 for now
gcr: disable gobject-introspection on mips64
libsecret: disable gobject-introspection on mips64
webkitgtk: disable gobject-introspection on powerpc packagegroup-core-x11-sato: add python-pygobject and gtk+3

 meta/classes/gnomebase.bbclass                     |   5 +-
 meta/classes/gobject-introspection.bbclass         |  36 +++
 meta/classes/qemu.bbclass                          |  23 +-
 meta/classes/vala.bbclass                          |   6 +
 meta/conf/distro/include/distro_alias.inc          |   1 -
 meta/recipes-connectivity/avahi/avahi-ui_0.6.31.bb |  16 +-
 meta/recipes-connectivity/avahi/avahi.inc          |  12 +-
 .../packagegroups/packagegroup-self-hosted.bb      |   1 -
 meta/recipes-core/udev/udev.inc                    |  10 +-
 ...file.am-don-t-hardcode-g-ir-compiler-name.patch |  27 ++
 ...c-use-PKG_CONFIG_SYSROOT_PATH-when-findin.patch |  32 +++
 ....am-use-libtool-when-running-g-ir-scanner.patch |  26 ++
 ...c-add-sysroot-path-to-GI_DATADIR-don-t-se.patch |  41 +++
 .../python/python-pygobject_2.28.3.bb              |  53 ----
 .../python/python-pygobject_3.18.0.bb              |  29 ++
 .../python/python-pygtk/acinclude.m4               |  90 ------
 .../add-gtk-types.defs-into-gdk.c-dependence.patch |  32 ---
 .../python/python-pygtk/fix-gtkunixprint.patch     |  20 --
 .../python/python-pygtk/fix-pygtk-2.0.pc.patch     |  13 -
 .../python/python-pygtk/nodocs.patch               |  15 -
 .../prevent_to_get_display_during_import.patch     |  16 --
 .../python/python-pygtk/python-pygtk2/acinclude.m4 |  90 ------
 .../update-dependences-of-defs.c.patch             |  38 ---
 .../recipes-devtools/python/python-pygtk_2.24.0.bb |  55 ----
 .../python/python3-native_3.4.3.bb                 |   1 +
 ...the-shell-version-of-python-config-that-w.patch |  38 +++
 meta/recipes-devtools/qemu/qemu-targets.inc        |   2 +-
 meta/recipes-devtools/vala/vala.inc                |  10 +
 ...001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch |  38 +++
 meta/recipes-devtools/vala/vala_0.28.0.bb          |   4 +-
 meta/recipes-gnome/gcr/gcr_3.16.0.bb               |  22 +-
 meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.30.8.bb |   7 +-
 meta/recipes-gnome/gnome/gconf_3.2.6.bb            |   6 +-
 ...config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch |  99 +++++++
 ...01-giscanner-add-a-use-ldd-wrapper-option.patch |  48 ++++
 ...1-giscanner-add-use-binary-wrapper-option.patch |  52 ++++
 ...c-add-host-gi-and-gi-cross-wrapper-option.patch | 158 +++++++++++
 .../gobject-introspection_1.44.0.bb                | 146 ++++++++++
 .../gsettings-desktop-schemas_3.16.1.bb            |   2 +-
 meta/recipes-gnome/gtk+/gtk+.inc                   |   9 +-
 meta/recipes-gnome/gtk+/gtk+3.inc                  |  10 +-
 ...t-Import-introspection-stub-machinery-too.patch | 305 +++++++++++++++++++++
 .../recipes-gnome/gtk-doc-stub/gtk-doc-stub_git.bb |   6 +-
 meta/recipes-gnome/librsvg/librsvg_2.40.10.bb      |   3 -
 meta/recipes-gnome/libsecret/libsecret_0.18.2.bb   |  14 +-
 ...ation-paths-for-.gir-and-.typelib-as-reco.patch |  32 +++
 meta/recipes-gnome/libwnck/libwnck3_3.14.0.bb      |   3 +-
 meta/recipes-graphics/clutter/clutter-1.0.inc      |   5 +-
 meta/recipes-graphics/clutter/clutter-gst-3.0.inc  |   4 +-
 meta/recipes-graphics/clutter/clutter-gtk-1.0.inc  |   3 +-
 meta/recipes-graphics/cogl/cogl-1.0.inc            |   8 +-
 meta/recipes-graphics/mx/mx.inc                    |   5 +-
 meta/recipes-graphics/pango/pango.inc              |   3 +-
 ...op-introspection-macros-from-acinclude.m4.patch | 121 ++++++++
 meta/recipes-graphics/pango/pango_1.36.8.bb        |   1 +
 .../recipes-multimedia/gstreamer/gst-player_git.bb |   2 +-
 .../gstreamer/gst-plugins-package.inc              |   1 +
 ...-don-t-hardcode-libtool-name-when-running.patch |  42 +++
 .../gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb    |   1 +
 .../gstreamer/gstreamer1.0-plugins-base.inc        |   4 +
 ...-don-t-hardcode-libtool-name-when-running.patch | 168 ++++++++++++
 ...-prefix-calls-to-pkg-config-with-PKG_CONF.patch | 298 ++++++++++++++++++++
 ...ssing-include-directories-when-calling-in.patch |  28 ++
 ...ncorrect-reference-to-gstreamer-sdp-in-Ma.patch |  27 ++
 .../gstreamer/gstreamer1.0-plugins-base_1.4.5.bb   |   4 +
 .../gstreamer/gstreamer1.0-plugins.inc             |  10 +-
 .../gstreamer/gstreamer1.0-rtsp-server.inc         |   9 +-
 ...ode-libtool-name-when-using-introspection.patch |  27 ++
 .../gstreamer/gstreamer1.0-rtsp-server_1.4.5.bb    |   2 +
 meta/recipes-multimedia/gstreamer/gstreamer1.0.inc |  12 +-
 .../packagegroups/packagegroup-core-x11-sato.bb    |   2 +
 ...Introspection.cmake-prefix-variables-obta.patch |  27 ++
 ...ng-introspection-files-add-CMAKE_C_FLAGS-.patch |  40 +++
 meta/recipes-sato/webkit/webkitgtk_2.8.5.bb        |  13 +-
 meta/recipes-support/atk/at-spi2-core_2.16.0.bb    |   4 +-
 meta/recipes-support/atk/atk_2.16.0.bb             |   2 +-
 meta/recipes-support/libsoup/libsoup-2.4_2.50.0.bb |   2 +-
 ...file.am-install-gir-typelib-using-datadir.patch |  34 +++
 meta/recipes-support/vte/vte.inc                   |   4 +-
 meta/recipes-support/vte/vte_0.28.2.bb             |   3 +-
 80 files changed, 2106 insertions(+), 512 deletions(-)
 create mode 100644 meta/classes/gobject-introspection.bbclass
 create mode 100644 meta/recipes-core/udev/udev/0001-Makefile.am-don-t-hardcode-g-ir-compiler-name.patch
 create mode 100644 meta/recipes-core/udev/udev/0001-configure.ac-use-PKG_CONFIG_SYSROOT_PATH-when-findin.patch
 create mode 100644 meta/recipes-core/udev/udev/0002-Makefile.am-use-libtool-when-running-g-ir-scanner.patch
 create mode 100644 meta/recipes-devtools/python/python-pygobject/0001-configure.ac-add-sysroot-path-to-GI_DATADIR-don-t-se.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygobject_2.28.3.bb
 create mode 100644 meta/recipes-devtools/python/python-pygobject_3.18.0.bb
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/acinclude.m4
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/add-gtk-types.defs-into-gdk.c-dependence.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/fix-gtkunixprint.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/fix-pygtk-2.0.pc.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/nodocs.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/prevent_to_get_display_during_import.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/python-pygtk2/acinclude.m4
 delete mode 100644 meta/recipes-devtools/python/python-pygtk/update-dependences-of-defs.c.patch
 delete mode 100644 meta/recipes-devtools/python/python-pygtk_2.24.0.bb
 create mode 100644 meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
 create mode 100644 meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-a-use-ldd-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-giscanner-add-use-binary-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0002-configure.ac-add-host-gi-and-gi-cross-wrapper-option.patch
 create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection_1.44.0.bb
 create mode 100644 meta/recipes-gnome/gtk-doc-stub/files/0001-Revert-Import-introspection-stub-machinery-too.patch
 create mode 100644 meta/recipes-gnome/libwnck/files/0001-Fix-installation-paths-for-.gir-and-.typelib-as-reco.patch
 create mode 100644 meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-riff-add-missing-include-directories-when-calling-in.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/0001-Don-t-hardcode-libtool-name-when-using-introspection.patch
 create mode 100644 meta/recipes-sato/webkit/files/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
 create mode 100644 meta/recipes-sato/webkit/files/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
 create mode 100644 meta/recipes-support/vte/vte-0.28.2/0001-Makefile.am-install-gir-typelib-using-datadir.patch
#35 lore raw
Quoted 3 lines · Mark Hatle

Is there a way that the qemu calls can be replaced by calls to an actual running board (via SSH perhaps) to get the necessary information? While inconvenient this might be a valid workaround.

Theoretically, yes. Copy the sysroot and the build tree to the board (to some safe location, obviously), then execute the arch-dependent bits of the process remotely, then copy the output files back. Slow, but doable. The executable wrapper mechanism for that is already provided by the patchset.

I would however first seriously look into reengineering g-o so that it's architecture-independent, and doesn't require such awful contortions. Primarily, two things:
1) It should be easy to build transient introspection binaries for the native architecture, instead of building them for the target together with the rest of the package. Those binaries produce textual output (essentially a list of classes/signals/properties) which is architecture-independent.
2) The binary introspection database in .typelib files should not be a raw dump of a C structure, and should be actually the same on all architectures.

Quoted 5 lines

Also is there any facility to caching the gobject responses (other then standard sstate-cache) so for machine that do not have QEMU support we can used a cached set of responses? (I'm not sure if these responses could be considered to be a global cache, or if they are distribution specific in configuration. Likely the later.)

This requires custom bitbake support I'm afraid, a specialist needs to answer this.

Alex

#36 lore raw
Quoted 5 lines · Alexander Kanavin
Quoted 3 lines · Mark Hatle

Is there a way that the qemu calls can be replaced by calls to an actual running board (via SSH perhaps) to get the necessary information? While inconvenient this might be a valid workaround.

Quoted 8 lines

Theoretically, yes. Copy the sysroot and the build tree to the board (to some safe location, obviously), then execute the arch-dependent bits of the process remotely, then copy the output files back. Slow, but doable. The executable wrapper mechanism for that is already provided by the patchset.

I would however first seriously look into reengineering g-o so that it's architecture-independent, and doesn't require such awful contortions.

I don't disagree with you there...

Quoted 10 lines

Primarily, two things:
1) It should be easy to build transient introspection binaries for the native architecture, instead of building them for the target together with the rest of the package. Those binaries produce textual output (essentially a list of classes/signals/properties) which is architecture-independent.
2) The binary introspection database in .typelib files should not be a raw dump of a C structure, and should be actually the same on all architectures.

Quoted 9 lines
Quoted 5 lines

Also is there any facility to caching the gobject responses (other then standard sstate-cache) so for machine that do not have QEMU support we can used a cached set of responses? (I'm not sure if these responses could be considered to be a global cache, or if they are distribution specific in configuration. Likely the later.)

This requires custom bitbake support I'm afraid, a specialist needs to answer this.

Let me rephrase. Instead of calling out to qemu (or a real target) for a gobject and result. Can the result be cached (like we do with the config-site info?) This would allow me to run say a MIPS64 n64 gobject build, cache the results and use it on my octeon3 build (which can't run in QEMU.)

--Mark

Quoted 3 lines

Alex

#37 lore raw
Quoted 7 lines · Mark Hatle

Let me rephrase. Instead of calling out to qemu (or a real target) for a gobject and result. Can the result be cached (like we do with the config-site
info?) This would allow me to run say a MIPS64 n64 gobject build, cache the
results and use it on my octeon3 build (which can't run in QEMU.)

The metadata contains stuff like type sizes and alignment but wouldn't it be possible to have some sort of map from machine to close-enough qemu machine? So for octeon3 is qemumips64 is close enough, run that.

(to be honest I thought the qemu runner support as used by the postinsts already did this)

Ross

#38 lore raw
Quoted 10 lines · Ross

On 10 November 2015 at 16:39, Mark Hatle <[email protected] <mailto:[email protected]>> wrote:

Let me rephrase. Instead of calling out to qemu (or a real target) for a gobject and result. Can the result be cached (like we do with the config-site info?) This would allow me to run say a MIPS64 n64 gobject build, cache the results and use it on my octeon3 build (which can't run in QEMU.)

Quoted 6 lines

The metadata contains stuff like type sizes and alignment but wouldn't it be possible to have some sort of map from machine to close-enough qemu machine? So for octeon3 is qemumips64 is close enough, run that.

(to be honest I thought the qemu runner support as used by the postinsts already did this)

That would work in many cases.. the problem is that it requires "yet another" sysroot or whatnot to be able to build the runner.

(I think QEMU supports pretty much all of the major, and some minor architectures these days... it just doesn't support many of the semi-specific optimizations.)

--Mark

Quoted 1 line

Ross

#39 lore raw
Quoted 18 lines · Mark Hatle
Quoted 10 lines · Ross

On 10 November 2015 at 16:39, Mark Hatle <[email protected] <mailto:[email protected]>> wrote:

Let me rephrase. Instead of calling out to qemu (or a real target) for a gobject and result. Can the result be cached (like we do with the config-site info?) This would allow me to run say a MIPS64 n64 gobject build, cache the results and use it on my octeon3 build (which can't run in QEMU.)

Quoted 6 lines

The metadata contains stuff like type sizes and alignment but wouldn't it be possible to have some sort of map from machine to close-enough qemu machine? So for octeon3 is qemumips64 is close enough, run that.

(to be honest I thought the qemu runner support as used by the postinsts already did this)

Quoted 6 lines

That would work in many cases.. the problem is that it requires "yet another" sysroot or whatnot to be able to build the runner.

(I think QEMU supports pretty much all of the major, and some minor architectures these days... it just doesn't support many of the semi-specific optimizations.)

As I understand it, there are at least two ways we could solve this:

a) build a native version of the recipe and run that to get the introspection data
b) cache the introspection data and reuse it

There are obviously advantages and disadvantages to each but as I understand it the data is architecture independent.

Using qemu is the least ugly from a build performance impact though without getting into cache problems.

Cheers,

Richard

#40 lore raw
In reply to Mark Hatle
Quoted 4 lines · Mark Hatle

Let me rephrase. Instead of calling out to qemu (or a real target) for a gobject and result. Can the result be cached (like we do with the config-site info?) This would allow me to run say a MIPS64 n64 gobject build, cache the results and use it on my octeon3 build (which can't run in QEMU.)

Why does gobject-introspection (presumably giscanner, right?) need to run binaries on the target at all? I thought it operated mostly on the source code.

p.

#41 lore raw
Quoted 4 lines · Phil Blundell

Why does gobject-introspection (presumably giscanner, right?) need to run binaries on the target at all? I thought it operated mostly on the source code.

Same reason gtk-doc's scanner executes code: vast amounts of relevant information can't reliably be extracted from source but is trivial to introspect at runtime (GObject hierarchy, properties, signals, etc).

Ross

#42 lore raw
Quoted 4 lines · Ross

On 10 November 2015 at 23:10, Phil Blundell <[email protected] <mailto:[email protected]>> wrote:

Quoted 8 lines

Why does gobject-introspection (presumably giscanner, right?) need to run binaries on the target at all? I thought it operated mostly on the source code.

Same reason gtk-doc's scanner executes code: vast amounts of relevant information can't reliably be extracted from source but is trivial to introspect at runtime (GObject hierarchy, properties, signals, etc).

I wonder if any of this could be 'discovered' via objdump or readelf.

In the past we did something like this by setting 'return' values as strings in a program. We let the compiler optimize the settings (ensuring only the real value was retained) and then used objdump to read the string out of the binary.
It worked really well for this type of thing.

Problem of course is when the binary is not self sufficient and requires others to be linked so the optimization is not possible.

--Mark

Quoted 1 line

Ross

#43 lore raw
In reply to Burton, Ross
Quoted 10 lines · Ross

On 10 November 2015 at 23:10, Phil Blundell <[email protected] <mailto:[email protected]>> wrote:
Why does gobject-introspection (presumably giscanner, right?) need to run binaries on the target at all? I thought it operated mostly on the source code.

Same reason gtk-doc's scanner executes code: vast amounts of relevant information can't reliably be extracted from source but is trivial to introspect at runtime (GObject hierarchy, properties, signals, etc).

so its not truly cross build friendly, We should try to see if this can be fed in artificial information which can be stored in some config files, similar to autoconf caching IMO.

Quoted 7 lines

Ross

Signature · 4 lines
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
#46 lore raw
In reply to Mark Hatle
Quoted 8 lines · Mark Hatle
Quoted 3 lines

This requires custom bitbake support I'm afraid, a specialist needs to answer this.

Let me rephrase. Instead of calling out to qemu (or a real target) for a gobject and result. Can the result be cached (like we do with the config-site info?) This would allow me to run say a MIPS64 n64 gobject build, cache the results and use it on my octeon3 build (which can't run in QEMU.)

The results in this case are .typelib files. They are raw dumps of a C structure in memory - different compilers may produce different binary representations of those. I wouldn't trust that they are the same and that it's okay to copy them around like this. What makes you confident that they are?

Alex

#44 lore raw
In reply to Burton, Ross
Quoted 4 lines · Ross

On 10 November 2015 at 23:10, Phil Blundell <[email protected] <mailto:[email protected]>> wrote:

Quoted 8 lines

Why does gobject-introspection (presumably giscanner, right?) need to run binaries on the target at all? I thought it operated mostly on the source code.

Same reason gtk-doc's scanner executes code: vast amounts of relevant information can't reliably be extracted from source but is trivial to introspect at runtime (GObject hierarchy, properties, signals, etc).

Yep; the real problem is that GObject is implementing OOP semantics in a language that doesn't natively support them. So you can't extract information about those either from the source code, or from the finished binaries, or during binary build. The only way to do it is to run the actual binary and ask it to describe itself.

Alex

#45 lore raw
Quoted 9 lines · Alexander Kanavin
Quoted 3 lines

Same reason gtk-doc's scanner executes code: vast amounts of relevant information can't reliably be extracted from source but is trivial to introspect at runtime (GObject hierarchy, properties, signals, etc).

Yep; the real problem is that GObject is implementing OOP semantics in a language that doesn't natively support them. So you can't extract information about those either from the source code, or from the finished binaries, or during binary build. The only way to do it is to run the actual binary and ask it to describe itself.

FWIW, I also think that GObject made a disastrous decision to avoid a high-level IDL with a preprocessor-to-C tool to describe those things (similar to what Qt does with Qt-specific extensions to C++); instead, they force everyone to write GObject boilerplate directly in C, which is absolutely horrible to read, write and maintain. Just try reading the GObject developer's manual without getting a headache.

It's partly out of these frustrations that Vala was born, and Gnome made the decision to switch to Javascript on top of gobject introspection.

Alex

#47 lore raw
In reply to Alexander Kanavin
Quoted 11 lines · Alexander Kanavin
Quoted 8 lines · Mark Hatle
Quoted 3 lines

This requires custom bitbake support I'm afraid, a specialist needs to answer this.

Let me rephrase. Instead of calling out to qemu (or a real target) for a gobject and result. Can the result be cached (like we do with the config-site info?) This would allow me to run say a MIPS64 n64 gobject build, cache the results and use it on my octeon3 build (which can't run in QEMU.)

Quoted 5 lines

The results in this case are .typelib files. They are raw dumps of a C structure in memory - different compilers may produce different binary representations of those. I wouldn't trust that they are the same and that it's okay to copy them around like this. What makes you confident that they are?

For the same architecture (i.e. MIPS64) and the same ABI (n64), the resulting data structures, packing and similar should all be standard. Only the generated instructions and execution order would/could change.

So you would need a way to generate, cache, store the results by arch/abi combo in order to do this. The issue of course is that you would need to declare the arch and abi -- the tune files are the natural place to do this (we really are declaring it there ANYWAY), and the tune features in many cases may have already done this...

Something to consider -- the alternative is the dual object (one generic [arch/abi], one optimized for the tune) that can be used to run on QEMU. Twice the compile time but should work fine.

Also has anyone looked at the .typelib information and determined if any of it is available via direct inspection via readelf, dwarf interpretation or other method that does not require execution? Is there a definition of the .typelib information anywhere and some simple examples of how its generated by the runtime objects? (To pursue this, the way forward is to determine a way to generate the .typelib by reading the chosen binaries in some way -- and then running a 'ptest' like check that the generated and runtime versions result in the same data.)

--Mark

Quoted 3 lines

Alex

#48 lore raw
Quoted 8 lines · Mark Hatle

Also has anyone looked at the .typelib information and determined if any of it is available via direct inspection via readelf, dwarf interpretation or other method that does not require execution? Is there a definition of the .typelib information anywhere and some simple examples of how its generated by the runtime objects? (To pursue this, the way forward is to determine a way to generate the .typelib by reading the chosen binaries in some way -- and then running a 'ptest' like check that the generated and runtime versions result in the same data.)

You can simply take a look at any of the .gir files: they are XMLs that are used to generate typelibs and contain essentially the same information.

I think it's totally unrealistic to extract all the high-level OOP semantics from .so libraries with readelf and friends.

For instance, gstreamer pipelines:

    <class name="Bin"
           c:symbol-prefix="bin"
           c:type="GstBin"
           parent="Element"
           glib:type-name="GstBin"
           glib:get-type="gst_bin_get_type"
           glib:type-struct="BinClass">
      <implements name="ChildProxy"/>
      <constructor name="new" c:identifier="gst_bin_new">
        <return-value transfer-ownership="none">
          <type name="Element" c:type="GstElement*"/>
        </return-value>
        <parameters>
          <parameter name="name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the name of the new bin</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="add_element">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>

...

etc etc etc.

Alex

#49 lore raw

Hello Alexander

Can you point to a .git file with architecture-dependent data.

I would love to help on this issue. I want to use the python api for gstream.

Thanks

Quoted 67 lines · Alexander Kanavin
Quoted 6 lines · Mark Hatle

Also has anyone looked at the .typelib information and determined if any of it
is available via direct inspection via readelf, dwarf interpretation or other
method that does not require execution? Is there a definition of the .typelib

Quoted 8 lines

information anywhere and some simple examples of how its generated by the runtime objects? (To pursue this, the way forward is to determine a way to
generate the .typelib by reading the chosen binaries in some way -- and then
running a 'ptest' like check that the generated and runtime versions result in
the same data.)

You can simply take a look at any of the .gir files: they are XMLs that are used to generate typelibs and contain essentially the same information.

I think it's totally unrealistic to extract all the high-level OOP semantics from .so libraries with readelf and friends.

For instance, gstreamer pipelines:

    <class name="Bin"
           c:symbol-prefix="bin"
           c:type="GstBin"
           parent="Element"
           glib:type-name="GstBin"
           glib:get-type="gst_bin_get_type"
           glib:type-struct="BinClass">
      <implements name="ChildProxy"/>
      <constructor name="new" c:identifier="gst_bin_new">
        <return-value transfer-ownership="none">
          <type name="Element" c:type="GstElement*"/>
        </return-value>
        <parameters>
          <parameter name="name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the name of the new bin</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="add_element">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>

...

etc etc etc.

Alex

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Signature · 1 line
Ricardo Ribalda
#50 lore raw
Quoted 1 line · Ricardo Ribalda Delgado

Can you point to a .git file with architecture-dependent data.

Gir files do not contain architecture-dependent data. Typelib files do.

Quoted 1 line

I would love to help on this issue. I want to use the python api for gstream.

You can checkout my branch on poky-contrib (see the original message in the thread), and then follow the instructions to build an image and try out the python gobject introspection in it (again, see the original thread message for instructions).

Alex

#53 lore raw
In reply to Mark Hatle
Quoted 10 lines · Mark Hatle

For the same architecture (i.e. MIPS64) and the same ABI (n64), the resulting data structures, packing and similar should all be standard. Only the generated instructions and execution order would/could change.

So you would need a way to generate, cache, store the results by arch/abi combo in order to do this. The issue of course is that you would need to declare the arch and abi -- the tune files are the natural place to do this (we really are declaring it there ANYWAY), and the tune features in many cases may have already done this...

Quoted 3 lines

Something to consider -- the alternative is the dual object (one generic [arch/abi], one optimized for the tune) that can be used to run on QEMU. Twice the compile time but should work fine.

Hmm, maybe it's simpler to just fix QEMU so it can handle the missing instructions?

Alex

#52 lore raw
Quoted 2 lines · Ricardo Ribalda Delgado

Unfortunately, my target arch is x86_64... I guess I could try to solve the endless loop issue with the helper binary.

That issue only shows up with the gcr package. All other packages are able to generate introspection files onx 86_64 just fine. Do give it a try.

Alex

#54 lore raw
In reply to Alexander Kanavin
Quoted 12 lines · Alexander Kanavin
Quoted 10 lines · Mark Hatle

For the same architecture (i.e. MIPS64) and the same ABI (n64), the resulting data structures, packing and similar should all be standard. Only the generated instructions and execution order would/could change.

So you would need a way to generate, cache, store the results by arch/abi combo in order to do this. The issue of course is that you would need to declare the arch and abi -- the tune files are the natural place to do this (we really are declaring it there ANYWAY), and the tune features in many cases may have already done this...

Quoted 6 lines
Quoted 3 lines

Something to consider -- the alternative is the dual object (one generic [arch/abi], one optimized for the tune) that can be used to run on QEMU. Twice the compile time but should work fine.

Hmm, maybe it's simpler to just fix QEMU so it can handle the missing instructions?

Unfortunately it's not reasonable in my experience. The problem is that anyone who implements a BSP/machine that includes so far unknown instructions to qemu would be required to implement them.

As most people don't understand the instruction implementation in QEMU, I'm not sure this is reasonable.

I really want to get the gir support into oe-core, but I'm concerned that doing things this way is going to cause a significant gap in functionality for many of the machines that use OE.

--Mark

Quoted 3 lines

Alex

#55 lore raw
Quoted 9 lines
Quoted 2 lines

Hmm, maybe it's simpler to just fix QEMU so it can handle the missing instructions?

Unfortunately it's not reasonable in my experience. The problem is that anyone
who implements a BSP/machine that includes so far unknown instructions to qemu
would be required to implement them.

Quoted 3 lines

As most people don't understand the instruction implementation in QEMU, I'm not
sure this is reasonable.

If someone is competent enough to add new instructions to the compiler, they should be competent enough to figure out how to do the same in QEMU, no?

Alex

#56 lore raw
Quoted 9 lines · On 11/13/15 10:12 AM, [email protected] wrote:
Quoted 9 lines
Quoted 2 lines

Hmm, maybe it's simpler to just fix QEMU so it can handle the missing instructions?

Unfortunately it's not reasonable in my experience. The problem is that anyone
who implements a BSP/machine that includes so far unknown instructions to qemu
would be required to implement them.

Quoted 7 lines
Quoted 3 lines

As most people don't understand the instruction implementation in QEMU, I'm not
sure this is reasonable.

If someone is competent enough to add new instructions to the compiler, they should be competent enough to figure out how to do the same in QEMU, no?

That's the problem right there. The same developers rarely do that work.

The compiler today support many more instructions for a given architecture family then QEMU models for that same architecture.

IA32 -- some of the current and even some former generate i7 instructions fall under this problem. If you host system does not have the same instruction set, QEMU doesn't know how to emulate everything.

MIPS64 (Such as the Octeon III) is a good example.

PowerPC has many variants as well that QEMU does not support.

It would be wonderful if there was a tie together of what gcc/as and qemu supported -- at least from an application perspective, but that simply doesn't happen in the real world.

--Mark

Quoted 2 lines

Alex

#57 lore raw
Quoted 7 lines · Mark Hatle

The compiler today support many more instructions for a given architecture family then QEMU models for that same architecture.

IA32 -- some of the current and even some former generate i7 instructions fall under this problem. If you host system does not have the same instruction set, QEMU doesn't know how to emulate everything.

Quoted 7 lines

MIPS64 (Such as the Octeon III) is a good example.

PowerPC has many variants as well that QEMU does not support.

It would be wonderful if there was a tie together of what gcc/as and qemu supported -- at least from an application perspective, but that simply doesn't happen in the real world.

How about approaching this from the other side then? Machines can be defined so that if gobject introspection distro feature is enabled, then the standard qemu-supported compiler settings are used (same as qemumips64 for instance). If not, then people can tweak the compiler to their heart's content.

Alex

#58 lore raw
Quoted 17 lines · Alexander Kanavin
Quoted 7 lines · Mark Hatle

The compiler today support many more instructions for a given architecture family then QEMU models for that same architecture.

IA32 -- some of the current and even some former generate i7 instructions fall under this problem. If you host system does not have the same instruction set, QEMU doesn't know how to emulate everything.

Quoted 7 lines

MIPS64 (Such as the Octeon III) is a good example.

PowerPC has many variants as well that QEMU does not support.

It would be wonderful if there was a tie together of what gcc/as and qemu supported -- at least from an application perspective, but that simply doesn't happen in the real world.

Quoted 5 lines

How about approaching this from the other side then? Machines can be defined so that if gobject introspection distro feature is enabled, then the standard qemu-supported compiler settings are used (same as qemumips64 for instance). If not, then people can tweak the compiler to their heart's content.

Problem is that gobject can't be limited by a 'machine'. Since any machine needs to theoretically have access to gobject built components. (ignoring that machines should never specify distro features...)

I think a small group of folks that are interested in this work and who understand facets of it should get together and try to identify the problem and come up with an alternative solution.

I have a lot of experience with pulling out internal structure size, packing, order, etc from generated binaries via objdump, readelf and other mechanisms -- but I have no experience using gobject itself.

So if we could get together to identify how a gobject binary is generated -- how the introspection happens internally -- and the output of the introspection tool. It's very likely that I or others can come up with an approach to do the introspection that doesn't require QEMU. (It may require the gobject binary generation having additional information placed in it -- or an introspection to occur at the time of compilation and saved away in a cache...) but the point is, we need to figure out a general solution to this that doesn't require QEMU for "most things".

(BTW just to reiterate. I COMPLETELY believe that we need to add gobject support to oe-core in the next year. And we need to try to help the gobject community better support cross compilation as well, if they are receptive -- without dramatically altering there existing work.)

--Mark

Quoted 3 lines

Alex

#59 lore raw
Quoted 8 lines · Mark Hatle

I think a small group of folks that are interested in this work and who understand facets of it should get together and try to identify the problem and come up with an alternative solution.

I have a lot of experience with pulling out internal structure size, packing, order, etc from generated binaries via objdump, readelf and other mechanisms -- but I have no experience using gobject itself.

Quoted 8 lines

So if we could get together to identify how a gobject binary is generated -- how the introspection happens internally -- and the output of the introspection tool. It's very likely that I or others can come up with an approach to do the introspection that doesn't require QEMU. (It may require the gobject binary generation having additional information placed in it -- or an introspection to occur at the time of compilation and saved away in a cache...) but the point is, we need to figure out a general solution to this that doesn't require QEMU for "most things".

I know GObject fairly well, since I've done a medium-size project with it (https://01.org/gsso/) and I think the above is totally unrealistic. Below is an explanation why.

The idea of GObject is to make object oriented programming semantics (classes, inheritance, methods, properties and signals) available to C programmers. This is achieved by implementing a dynamic type system called GType. It serves as a register of available types, to which new types can be added, and information about existing types can be queried.

This type register is constructed entirely at runtime. When a gobject-based library is loaded into memory, it adds the types that are defined in the library (for example, classes and interfaces) to the register using GType's API.

There are no tools that can extract the type information at source code level, or any preprocessor for the special type syntax (like there is for example a preprocessor called 'moc' in Qt). In the source code the types are defined entirely using C syntax: a really awkward combination of macros and function definitions that the macros refer to. The code goes straight to the C compiler which of course knows nothing about the types. So writing such a tool would basically amount to writing a special-purpose C interpreter: not feasible.

When some library's types need to be introspected, a small binary is compiled and linked with the library by the introspection build system, and then executed. This binary iterates over available types, and asks GType to describe them. These descriptions are then written in the XML format to the .gir file. We cannot fetch this information directly from internal structures of GType, because these structures don't exist on disk; they're only created at runtime through executing type definition functions. So again, you'd need some kind of bytecode interpreter to extract this information from executable objects, which would look a lot like QEMU :)

So the bottom line, to generate introspection info, you have to run the code of the library that you introspect, either with QEMU, or on target hardware, and I don't see a way to avoid this, short of complete rewrite of the entire glib ecosystem. If someone wants to have this feature, but doesn't have a working QEMU, they should get their act together and fix it.

Alex

#60 lore raw
Quoted 29 lines · Alexander Kanavin
Quoted 8 lines · Mark Hatle

I think a small group of folks that are interested in this work and who understand facets of it should get together and try to identify the problem and come up with an alternative solution.

I have a lot of experience with pulling out internal structure size, packing, order, etc from generated binaries via objdump, readelf and other mechanisms -- but I have no experience using gobject itself.

Quoted 8 lines

So if we could get together to identify how a gobject binary is generated -- how the introspection happens internally -- and the output of the introspection tool. It's very likely that I or others can come up with an approach to do the introspection that doesn't require QEMU. (It may require the gobject binary generation having additional information placed in it -- or an introspection to occur at the time of compilation and saved away in a cache...) but the point is, we need to figure out a general solution to this that doesn't require QEMU for "most things".

I know GObject fairly well, since I've done a medium-size project with it (https://01.org/gsso/) and I think the above is totally unrealistic. Below is an explanation why.

The idea of GObject is to make object oriented programming semantics (classes, inheritance, methods, properties and signals) available to C programmers. This is achieved by implementing a dynamic type system called GType. It serves as a register of available types, to which new types can be added, and information about existing types can be queried.

Quoted 4 lines

This type register is constructed entirely at runtime. When a gobject-based library is loaded into memory, it adds the types that are defined in the library (for example, classes and interfaces) to the register using GType's API.

This is the key, the types and internal data structures are not dynamically changing. They are defined within the library. (The object definitions may be generated and exposed at runtime, but once a library is built -- they do not change.)

Quoted 8 lines

There are no tools that can extract the type information at source code level, or any preprocessor for the special type syntax (like there is for example a preprocessor called 'moc' in Qt). In the source code the types are defined entirely using C syntax: a really awkward combination of macros and function definitions that the macros refer to. The code goes straight to the C compiler which of course knows nothing about the types. So writing such a tool would basically amount to writing a special-purpose C interpreter: not feasible.

I would need to see the code to understand this. -IF- the macros and definitions are done in a standard way, it is very much possible to interpret the results of the macros via the intermediate objects. But I need to see an example of the code.

Quoted 10 lines

When some library's types need to be introspected, a small binary is compiled and linked with the library by the introspection build system, and then executed. This binary iterates over available types, and asks GType to describe them. These descriptions are then written in the XML format to the .gir file. We cannot fetch this information directly from internal structures of GType, because these structures don't exist on disk; they're only created at runtime through executing type definition functions. So again, you'd need some kind of bytecode interpreter to extract this information from executable objects, which would look a lot like QEMU :)

Another place where looking at the code may prove otherwise. I need to see how this is done to be able to comment.

Quoted 5 lines

So the bottom line, to generate introspection info, you have to run the code of the library that you introspect, either with QEMU, or on target hardware, and I don't see a way to avoid this, short of complete rewrite of the entire glib ecosystem. If someone wants to have this feature, but doesn't have a working QEMU, they should get their act together and fix it.

Can you put together a small piece of test code with instructions on how to compiler it, generate the '.gir' file and anything else? I can take a look at this and see if there is a way to inspect the intermediate objects for the type information we need.

--Mark

#61 lore raw
Quoted 10 lines · Mark Hatle
Quoted 5 lines

So the bottom line, to generate introspection info, you have to run the code of the library that you introspect, either with QEMU, or on target hardware, and I don't see a way to avoid this, short of complete rewrite of the entire glib ecosystem. If someone wants to have this feature, but doesn't have a working QEMU, they should get their act together and fix it.

Can you put together a small piece of test code with instructions on how to compiler it, generate the '.gir' file and anything else? I can take a look at this and see if there is a way to inspect the intermediate objects for the type information we need.

Alright. Here you go:

https://github.com/kanavin/gi-library-boilerplate

In there you have a library that provides:

1) A simple class called MamanBar that is final (i.e. cannot be derived from) and has one public method and some internal state.

2) An interface called MamanIbaz which specified two methods and one property.

3) A derivable (can be subclassed) class called MamanBaz which implements the above interface, and also adds a virtual method and a signal.

When you run 'make', you'll get both the library and the introspection data - .gir and .typelib files.

All of the above is written using best current knowledge from the GObject manual:

https://developer.gnome.org/gobject/stable/index.html

Regards,
Alex

#62 lore raw

I know it's been about 2 months at this point, but I wanted to follow up and make it clear to people I've not ignored this.

I still plan on following up on this, hopefully within about the next 3 weeks.

--Mark

Quoted 39 lines · Alexander Kanavin
Quoted 10 lines · Mark Hatle
Quoted 5 lines

So the bottom line, to generate introspection info, you have to run the code of the library that you introspect, either with QEMU, or on target hardware, and I don't see a way to avoid this, short of complete rewrite of the entire glib ecosystem. If someone wants to have this feature, but doesn't have a working QEMU, they should get their act together and fix it.

Can you put together a small piece of test code with instructions on how to compiler it, generate the '.gir' file and anything else? I can take a look at this and see if there is a way to inspect the intermediate objects for the type information we need.

Alright. Here you go:

https://github.com/kanavin/gi-library-boilerplate

In there you have a library that provides:

1) A simple class called MamanBar that is final (i.e. cannot be derived from) and has one public method and some internal state.

2) An interface called MamanIbaz which specified two methods and one property.

3) A derivable (can be subclassed) class called MamanBaz which implements the above interface, and also adds a virtual method and a signal.

When you run 'make', you'll get both the library and the introspection data - .gir and .typelib files.

All of the above is written using best current knowledge from the GObject manual:

https://developer.gnome.org/gobject/stable/index.html

Regards,
Alex

#63 lore raw
In reply to Alexander Kanavin
Quoted 11 lines · Alexander Kanavin

1. Introduction

This patchset adds support for gobject introspection to oe-core. Gir files go to -dev packages, typelib files go to main packages (they are packaged together with libraries that are introspected).

The work is based on a meta-gir layer, which was used as a proof of concept; overall approach is same and some implementation ideas were used, but this implementation is otherwise different, and hopefully simpler and cleaner.

Any idea what could be cause for these failures when testing master-next?

NOTE: Your conf/bblayers.conf has been automatically updated.
Parsing recipes...NOTE: Building Ne10 for armv7
NOTE: glibc doesn't build cleanly with -Os, adding -Wno-error to SELECTED_OPTIMIZATION
NOTE: glibc-initial doesn't build cleanly with -Os, adding -Wno-error to SELECTED_OPTIMIZATION
WARNING: Exception during build_dependencies for do_configure
WARNING: Error during finalise of TOPDIR/oe-core/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.46.0.bb
ERROR: ExpansionError during parsing TOPDIR/oe-core/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.46.0.bb: Failure expanding variable do_configure, expression was # Write out a qemu wrapper that will be given to gi-scanner so that it

        # can run target helper binaries through that.
        qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST//usr/lib','$STAGING_DIR_HOST//lib'])}"
        cat > WORKDIR/gobject-introspection/1.46.0-r0/build/g-ir-scanner-qemuwrapper << EOF
#!/bin/sh
$qemu_binary "\$@"
if [ \$? -ne 0 ]; then
    echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the recipe should help."
    echo "(typically like this: GIR_EXTRA_LIBS_PATH=\"$""{B}/something/.libs\" )"
    exit 1
fi
EOF
        chmod +x WORKDIR/gobject-introspection/1.46.0-r0/build/g-ir-scanner-qemuwrapper

# Write out a wrapper for g-ir-scanner itself, which will be used when building introspection files # for glib-based packages. This wrapper calls the native version of the scanner, and tells it to use # a qemu wrapper for running transient target binaries produced by the scanner, and an include directory # from the target sysroot.
cat > WORKDIR/gobject-introspection/1.46.0-r0/build/g-ir-scanner-wrapper << EOF
#!/bin/sh
# This prevents g-ir-scanner from writing cache data to $HOME
export GI_SCANNER_DISABLE_CACHE=1

g-ir-scanner --use-binary-wrapper=SYSROOTS/MACHINE/usr/bin/g-ir-scanner-qemuwrapper --use-ldd-wrapper=SYSROOTS/MACHINE/usr/bin/g-ir-scanner-lddwrapper --add-include-path=SYSROOTS/MACHINE/usr/share/gir-1.0 "\$@" EOF
chmod +x WORKDIR/gobject-introspection/1.46.0-r0/build/g-ir-scanner-wrapper

# Write out a wrapper for g-ir-compiler, which runs the target version of it through qemu. # g-ir-compiler writes out the raw content of a C struct to disk, and therefore is architecture dependent. cat > WORKDIR/gobject-introspection/1.46.0-r0/build/g-ir-compiler-wrapper << EOF
#!/bin/sh
SYSROOTS/MACHINE/usr/bin/g-ir-scanner-qemuwrapper SYSROOTS/MACHINE/usr/bin/g-ir-compiler "\$@" EOF
chmod +x WORKDIR/gobject-introspection/1.46.0-r0/build/g-ir-compiler-wrapper

# Write out a wrapper to use instead of ldd, which does not work when a binary is built # for a different architecture
cat > WORKDIR/gobject-introspection/1.46.0-r0/build/g-ir-scanner-lddwrapper << EOF
#!/bin/sh
prelink-rtld --root=$STAGING_DIR_HOST "\$@"
EOF
chmod +x WORKDIR/gobject-introspection/1.46.0-r0/build/g-ir-scanner-lddwrapper

# Also tweak the target python scripts so that they don't refer to the
# native version of python binary (the solution is taken from glib-2.0 recipe)
sed -i -e '1s,#!.*,#!/usr/bin/env python,' WORKDIR/gobject-introspection/1.46.0-r0/gobject-introspection-1.46.0/tools/g-ir-tool-template.in ( cd WORKDIR/gobject-introspection/1.46.0-r0/gobject-introspection-1.46.0; gtkdocize --docdir WORKDIR/gobject-introspection/1.46.0-r0/gobject-introspection-1.46.0 )
set_icecc_env
autotools_do_configure
which triggered exception NameError: name 'qemu_wrapper_cmdline' is not defined

Summary: There were 2 WARNING messages shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

#64 lore raw
Quoted 3 lines · Martin Jansa

which triggered exception NameError: name 'qemu_wrapper_cmdline' is not
defined

Do you have oe-core 0b68f0632312392cbd20bfcb9ed4895cfc9883ff? (which is in master, which master-next branches from).

Ross

#65 lore raw
Quoted 8 lines · Ross
Quoted 3 lines · Martin Jansa

which triggered exception NameError: name 'qemu_wrapper_cmdline' is not
defined

Do you have oe-core 0b68f0632312392cbd20bfcb9ed4895cfc9883ff? (which is in master, which master-next branches from).

I have 0b68f0632312392cbd20bfcb9ed4895cfc9883ff, but one of the layers included in that build was overwriting qemu.bbclass to fix some issues.

The issues were fixed since then in oe-core as well, so I should be able to just drop this qemu.bbclass.

Sorry for noise, for some reason I usually notice the root cause just after hitting Send button in e-mail :/.

Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]