Browse Source

wxwidgets: Add what's necessary so that consumers of wxwidgets_git can find it

When I created wxwidgets recipe I had no test case for consumers of wxwidgets.
This changed now and it showed that wxwidgets is building fine but is
completely useless: It is a collection of libraries that are impossible to
find for other recipes.

To get rid wxwidgets now inherits binconfig: wxwidgets creates wx-config that
at least cmake relies upon. wx-config content had to be adjusted:

* As is it is a symlink to a useless file: Make it a file with usable contents
* To let wx-config report correct libraries a patch was added disabling cross
  magic not working here.
* Set full sysroot paths for includedir/libdir/bindir so that sstate can adjust
  them when creating recipe-sysroot for recipes depending on wxwidgets

Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Andreas Müller 3 years ago
parent
commit
7219c72141

+ 35 - 0
meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch

@@ -0,0 +1,35 @@
+From a071243763f4b06fc7e71f541c49cecf380b6f27 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Sun, 11 Oct 2020 22:16:55 +0200
+Subject: [PATCH] wx-config.in: Disable cross magic - it does not work for us
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+E.g 'wx-config --libs' appends a '-Linux' to all libraries (e.g
+-lwx_gtk3u_xrc-3.1 is reported as -lwx_gtk3u_xrc-3.1-Linux) which is wrong and
+make projects depending on wxwidgets fail.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ wx-config.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/wx-config.in b/wx-config.in
+index d132e3182f..d0d162e8a3 100755
+--- a/wx-config.in
++++ b/wx-config.in
+@@ -396,7 +396,7 @@ get_mask()
+ }
+ 
+ # Returns true if this script is for a cross compiled config.
+-is_cross()  { [ "x@cross_compiling@" = "xyes" ]; }
++is_cross()  { [ "xno" = "xyes" ]; }
+ 
+ 
+ # Determine the base directories we require.
+-- 
+2.26.2
+

+ 23 - 2
meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb

@@ -10,7 +10,7 @@ LICENSE = "wxWidgets"
 LIC_FILES_CHKSUM = "file://docs/licence.txt;md5=981f50a934828620b08f44d75db557c6"
 
 inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt', 'cmake_qt5', 'cmake', d)}
-inherit features_check lib_package
+inherit features_check lib_package binconfig
 
 # All toolkit-configs except 'no_gui' require x11 explicitly (see toolkit.cmake)
 REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('PACKAGECONFIG', 'no_gui', '', 'x11', d)}"
@@ -21,7 +21,10 @@ DEPENDS += " \
     tiff \
 "
 
-SRC_URI = "git://github.com/wxWidgets/wxWidgets.git"
+SRC_URI = " \
+    git://github.com/wxWidgets/wxWidgets.git \
+    file://0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch \
+"
 PV = "3.1.3"
 SRCREV= "8a40d23b27ed1c80b5a2ca9f7e8461df4fbc1a31"
 S = "${WORKDIR}/git"
@@ -67,6 +70,24 @@ PACKAGECONFIG[opengl] = ",,libglu"
 PACKAGECONFIG[sdl_audio] = "-DwxUSE_LIBSDL=ON,-DwxUSE_LIBSDL=OFF,libsdl2"
 PACKAGECONFIG[webkit] = "-DwxUSE_WEBVIEW_WEBKIT=ON,-DwxUSE_WEBVIEW_WEBKIT=OFF,webkitgtk,,,no_gui"
 
+do_compile_append() {
+    # if not at re-compile
+    if [ -L ${B}/wx-config ]; then
+        # ${B}/wx-config is a symlink for build and not needed after compile
+        # So for our purposes do:
+        # 1. make a file out of wx-config so that binconfig.bbclass detects it
+        # 2. make sure we do not move the file used for compiling into sysroot
+        cp --remove-destination `readlink ${B}/wx-config | sed 's:inplace-::'` ${B}/wx-config
+    fi
+    # 3. Set full sysroot paths so sstate can translate them when setting
+    #    up wxwidgets's consumer sysroots
+    sed -i \
+        -e 's,^includedir=.*,includedir="${STAGING_INCDIR}",g' \
+        -e 's,^libdir=.*",libdir="${STAGING_LIBDIR}",g' \
+        -e 's,^bindir=.*",bindir="${STAGING_BINDIR}",g' \
+        ${B}/wx-config
+}
+
 do_install_append() {
     # do not ship bindir if empty
     rmdir --ignore-fail-on-non-empty ${D}${bindir}