[4/8] wxwidgets: Add what's necessary so that consumers of wxwidgets_git can find it

Submitted by Andreas Müller on Oct. 14, 2020, 1:06 a.m. | Patch ID: 177211

Details

Message ID 20201014010617.1086948-4-schnitzeltony@gmail.com
State Accepted
Commit 7219c72141c2c5c902232dfba590fd85954f2aae
Headers show

Commit Message

Andreas Müller Oct. 14, 2020, 1:06 a.m.
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>
---
 ...able-cross-magic-it-does-not-work-fo.patch | 35 +++++++++++++++++++
 .../wxwidgets/wxwidgets_git.bb                | 25 +++++++++++--
 2 files changed, 58 insertions(+), 2 deletions(-)
 create mode 100644 meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch

Patch hide | download patch | download mbox

diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch
new file mode 100644
index 000000000..b3b9e79c5
--- /dev/null
+++ b/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
+
diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb b/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
index 95a6e8527..555399f74 100644
--- a/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
+++ b/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}

Comments

Khem Raj Oct. 14, 2020, 5:48 a.m.
On Tue, Oct 13, 2020 at 6:06 PM Andreas Müller <schnitzeltony@gmail.com> wrote:
>
> 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
>

is wx-config wrapping pkg-config? if so then perhaps it would be
better to make pkgconfig work here instead

> Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
> ---
>  ...able-cross-magic-it-does-not-work-fo.patch | 35 +++++++++++++++++++
>  .../wxwidgets/wxwidgets_git.bb                | 25 +++++++++++--
>  2 files changed, 58 insertions(+), 2 deletions(-)
>  create mode 100644 meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch
>
> diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch b/meta-oe/recipes-extended/wxwidgets/wxwidgets/0001-wx-config.in-Disable-cross-magic-it-does-not-work-fo.patch
> new file mode 100644
> index 000000000..b3b9e79c5
> --- /dev/null
> +++ b/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
> +
> diff --git a/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb b/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
> index 95a6e8527..555399f74 100644
> --- a/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
> +++ b/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}
> --
> 2.26.2
>
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#87503): https://lists.openembedded.org/g/openembedded-devel/message/87503
Mute This Topic: https://lists.openembedded.org/mt/77496591/3617530
Group Owner: openembedded-devel+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [oe-patchwork@oe-patch.openembedded.org]
-=-=-=-=-=-=-=-=-=-=-=-
Andreas Müller Oct. 14, 2020, 8:19 a.m.
On Wed, Oct 14, 2020 at 7:48 AM Khem Raj <raj.khem@gmail.com> wrote:
>
> On Tue, Oct 13, 2020 at 6:06 PM Andreas Müller <schnitzeltony@gmail.com> wrote:
> >
> > 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
> >
>
> is wx-config wrapping pkg-config? if so then perhaps it would be
> better to make pkgconfig work here instead

Thought about creating a pkg-config either but:
* wx-config is a tailored script that reports way more than just standard flags
* cmake ships a module (and projects ship copies of this on their own)
that does magic stuff with wx-config.

Going that way is a minefield

Andreas
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#87513): https://lists.openembedded.org/g/openembedded-devel/message/87513
Mute This Topic: https://lists.openembedded.org/mt/77496591/3617530
Group Owner: openembedded-devel+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [oe-patchwork@oe-patch.openembedded.org]
-=-=-=-=-=-=-=-=-=-=-=-
Khem Raj Oct. 14, 2020, 3:11 p.m.
On Wed, Oct 14, 2020 at 1:19 AM Andreas Müller <schnitzeltony@gmail.com> wrote:
>
> On Wed, Oct 14, 2020 at 7:48 AM Khem Raj <raj.khem@gmail.com> wrote:
> >
> > On Tue, Oct 13, 2020 at 6:06 PM Andreas Müller <schnitzeltony@gmail.com> wrote:
> > >
> > > 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
> > >
> >
> > is wx-config wrapping pkg-config? if so then perhaps it would be
> > better to make pkgconfig work here instead
>
> Thought about creating a pkg-config either but:
> * wx-config is a tailored script that reports way more than just standard flags
> * cmake ships a module (and projects ship copies of this on their own)
> that does magic stuff with wx-config.
>
> Going that way is a minefield

OK thanks

>
> Andreas
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#87524): https://lists.openembedded.org/g/openembedded-devel/message/87524
Mute This Topic: https://lists.openembedded.org/mt/77496591/3617530
Group Owner: openembedded-devel+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [oe-patchwork@oe-patch.openembedded.org]
-=-=-=-=-=-=-=-=-=-=-=-