Skip to contentSkip to conversation

Cristian Iorga : qemu: fix qemu-native pkg-config paths

oe-commits Martin Jansa 2 participants 6 messages Jul 18, 2014 – Jul 30, 2014 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw
Quoted 5 lines · On Thu, Jul 03, 2014 at 04:47:08PM +0000, [email protected] wrote:
Module: openembedded-core.git
Branch: master
Commit: 68a5ed337f8f7ee8e5bf55542ec82d786eb754db
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=68a5ed337f8f7ee8e5bf55542ec82d786eb754db
Quoted 7 lines
Author: Cristian Iorga <[email protected]>
Date:   Thu Jul  3 15:57:32 2014 +0300

qemu: fix qemu-native pkg-config paths

For qemu-native, the pkg-config paths do not
include build host paths.

This breaks qemu-native builds on hosts without pkg-config.

pkg-config isn't in sanity.bbclass's SANITY_REQUIRED_UTILITIES and this is first recipe which cannot use pkgconfig-native.

Please add test that it exists before forcing recipe to use it.

Quoted 45 lines

This is an issue for libsdl for example, where SDL is used by qemu, but for qemu-native libsdl-native is not built, but assumed to be provided by the build host. Because pkg-config do not search for libsdl config files on the build host sysroot, the configure stage of qemu-native will fail because it will not find SDL as being installed. Usually, the isssue is masked by a functional sdl-config that will be interogated instead of pkg-config. However, on Build Appliance, sdl-config is deliberately made non-functional, so the issue manifests itself.

The fix will create an extended PKG_CONFIG_PATH, which does include the build host sysroot paths for pkg-config.

Fix for [YOCTO #6495].

---

 meta/recipes-devtools/qemu/qemu.inc | 4 ++++
 1 file changed, 4 insertions(+)
meta/recipes-devtools/qemu/qemu.inc +4 -0
index 076e8ad..611ee61 100644
@@ -33,6 +33,10 @@ EXTRA_OECONF_class-nativesdk = "--target-list=${@get_qemu_target_list(d)} --disa
 export LIBTOOL="${HOST_SYS}-libtool"
 
 do_configure_prepend_class-native() {
+	# Append build host pkg-config paths for native target since the host may provide sdl
+	BHOST_PKGCONFIG_PATH=$(PATH=/usr/bin:/bin pkg-config --variable pc_path pkg-config)
+	export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$BHOST_PKGCONFIG_PATH
+
 	# Undo the -lX11 added by linker-flags.patch, don't assume that host has libX11 installed
 	sed -i 's/-lX11//g' Makefile.target
 }
Signature · 5 lines
-- 
_______________________________________________
Openembedded-commits mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-commits
Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]
#2 lore raw
Quoted 14 lines · Martin Jansa
Quoted 5 lines · On Thu, Jul 03, 2014 at 04:47:08PM +0000, [email protected] wrote:
Module: openembedded-core.git
Branch: master
Commit: 68a5ed337f8f7ee8e5bf55542ec82d786eb754db
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=68a5ed337f8f7ee8e5bf55542ec82d786eb754db
Quoted 7 lines
Author: Cristian Iorga <[email protected]>
Date:   Thu Jul  3 15:57:32 2014 +0300

qemu: fix qemu-native pkg-config paths

For qemu-native, the pkg-config paths do not
include build host paths.

Quoted 6 lines

This breaks qemu-native builds on hosts without pkg-config.

pkg-config isn't in sanity.bbclass's SANITY_REQUIRED_UTILITIES and this is first recipe which cannot use pkgconfig-native.

Please add test that it exists before forcing recipe to use it.

ping

Quoted 48 lines
Quoted 45 lines

This is an issue for libsdl for example, where SDL is used by qemu, but for qemu-native libsdl-native is not built, but assumed to be provided by the build host. Because pkg-config do not search for libsdl config files on the build host sysroot, the configure stage of qemu-native will fail because it will not find SDL as being installed. Usually, the isssue is masked by a functional sdl-config that will be interogated instead of pkg-config. However, on Build Appliance, sdl-config is deliberately made non-functional, so the issue manifests itself.

The fix will create an extended PKG_CONFIG_PATH, which does include the build host sysroot paths for pkg-config.

Fix for [YOCTO #6495].

---

 meta/recipes-devtools/qemu/qemu.inc | 4 ++++
 1 file changed, 4 insertions(+)
meta/recipes-devtools/qemu/qemu.inc +4 -0
index 076e8ad..611ee61 100644
@@ -33,6 +33,10 @@ EXTRA_OECONF_class-nativesdk = "--target-list=${@get_qemu_target_list(d)} --disa
 export LIBTOOL="${HOST_SYS}-libtool"
 
 do_configure_prepend_class-native() {
+	# Append build host pkg-config paths for native target since the host may provide sdl
+	BHOST_PKGCONFIG_PATH=$(PATH=/usr/bin:/bin pkg-config --variable pc_path pkg-config)
+	export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$BHOST_PKGCONFIG_PATH
+
 	# Undo the -lX11 added by linker-flags.patch, don't assume that host has libX11 installed
 	sed -i 's/-lX11//g' Makefile.target
 }
Signature · 5 lines
-- 
_______________________________________________
Openembedded-commits mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-commits
Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]
Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]
#3 lore raw
In reply to Martin Jansa
Quoted 14 lines · Martin Jansa
Quoted 5 lines · On Thu, Jul 03, 2014 at 04:47:08PM +0000, [email protected] wrote:
Module: openembedded-core.git
Branch: master
Commit: 68a5ed337f8f7ee8e5bf55542ec82d786eb754db
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=68a5ed337f8f7ee8e5bf55542ec82d786eb754db
Quoted 7 lines
Author: Cristian Iorga <[email protected]>
Date:   Thu Jul  3 15:57:32 2014 +0300

qemu: fix qemu-native pkg-config paths

For qemu-native, the pkg-config paths do not
include build host paths.

Quoted 6 lines

This breaks qemu-native builds on hosts without pkg-config.

pkg-config isn't in sanity.bbclass's SANITY_REQUIRED_UTILITIES and this is first recipe which cannot use pkgconfig-native.

Please add test that it exists before forcing recipe to use it.

PING

This is broken for almost a month, please at least revert it until it's fixed correctly.

Quoted 48 lines
Quoted 45 lines

This is an issue for libsdl for example, where SDL is used by qemu, but for qemu-native libsdl-native is not built, but assumed to be provided by the build host. Because pkg-config do not search for libsdl config files on the build host sysroot, the configure stage of qemu-native will fail because it will not find SDL as being installed. Usually, the isssue is masked by a functional sdl-config that will be interogated instead of pkg-config. However, on Build Appliance, sdl-config is deliberately made non-functional, so the issue manifests itself.

The fix will create an extended PKG_CONFIG_PATH, which does include the build host sysroot paths for pkg-config.

Fix for [YOCTO #6495].

---

 meta/recipes-devtools/qemu/qemu.inc | 4 ++++
 1 file changed, 4 insertions(+)
meta/recipes-devtools/qemu/qemu.inc +4 -0
index 076e8ad..611ee61 100644
@@ -33,6 +33,10 @@ EXTRA_OECONF_class-nativesdk = "--target-list=${@get_qemu_target_list(d)} --disa
 export LIBTOOL="${HOST_SYS}-libtool"
 
 do_configure_prepend_class-native() {
+	# Append build host pkg-config paths for native target since the host may provide sdl
+	BHOST_PKGCONFIG_PATH=$(PATH=/usr/bin:/bin pkg-config --variable pc_path pkg-config)
+	export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$BHOST_PKGCONFIG_PATH
+
 	# Undo the -lX11 added by linker-flags.patch, don't assume that host has libX11 installed
 	sed -i 's/-lX11//g' Makefile.target
 }
Signature · 5 lines
-- 
_______________________________________________
Openembedded-commits mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-commits
Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]
Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]
#4 lore raw
Quoted 20 lines · Martin Jansa
Quoted 19 lines · Martin Jansa
Quoted 5 lines · On Thu, Jul 03, 2014 at 04:47:08PM +0000, [email protected] wrote:
Module: openembedded-core.git
Branch: master
Commit: 68a5ed337f8f7ee8e5bf55542ec82d786eb754db
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=68a5ed337f8f7ee8e5bf55542ec82d786eb754db
Quoted 7 lines
Author: Cristian Iorga <[email protected]>
Date:   Thu Jul  3 15:57:32 2014 +0300

qemu: fix qemu-native pkg-config paths

For qemu-native, the pkg-config paths do not
include build host paths.

This breaks qemu-native builds on hosts without pkg-config.

pkg-config isn't in sanity.bbclass's SANITY_REQUIRED_UTILITIES and this is first recipe which cannot use pkgconfig-native.

Quoted 6 lines
Quoted 1 line

Please add test that it exists before forcing recipe to use it.

PING

This is broken for almost a month, please at least revert it until it's fixed correctly.

Well, if I revert this, I'd then need to revert other things and it turns into a dependency chain nightmare. So the reality is this needs to get fixed.

I'm assuming in your case, you probably either don't have or care about SDL at all, or you have sdl-config available?

So what really needs to happen here is that running the command needs to become non-fatal as far as I can tell?

Cheers,

Richard

#5 lore raw
Quoted 28 lines · Richard Purdie
Quoted 20 lines · Martin Jansa
Quoted 19 lines · Martin Jansa
Quoted 5 lines · On Thu, Jul 03, 2014 at 04:47:08PM +0000, [email protected] wrote:
Module: openembedded-core.git
Branch: master
Commit: 68a5ed337f8f7ee8e5bf55542ec82d786eb754db
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=68a5ed337f8f7ee8e5bf55542ec82d786eb754db
Quoted 7 lines
Author: Cristian Iorga <[email protected]>
Date:   Thu Jul  3 15:57:32 2014 +0300

qemu: fix qemu-native pkg-config paths

For qemu-native, the pkg-config paths do not
include build host paths.

This breaks qemu-native builds on hosts without pkg-config.

pkg-config isn't in sanity.bbclass's SANITY_REQUIRED_UTILITIES and this is first recipe which cannot use pkgconfig-native.

Quoted 6 lines
Quoted 1 line

Please add test that it exists before forcing recipe to use it.

PING

This is broken for almost a month, please at least revert it until it's fixed correctly.

Quoted 6 lines

Well, if I revert this, I'd then need to revert other things and it turns into a dependency chain nightmare. So the reality is this needs to get fixed.

I'm assuming in your case, you probably either don't have or care about SDL at all, or you have sdl-config available?

Correct, it's just build server where I'll never use runqemu to run the image, but I need to build usable qemu-native to generate read-only images (e.g. for fontcache.bbclass).

Quoted 2 lines

So what really needs to happen here is that running the command needs to become non-fatal as far as I can tell?

Yes, non-fatal and if possible deterministic (AFAIK this whole block could be included in PACKAGECONFIG contains "sdl" conditional and applied only when /bin/pkg-config or /usr/bin/pkg-config exists)

There was also request to provide libsdl-native
http://patchwork.openembedded.org/patch/63477/

then qemu-native could just build this libsdl-native as dependency for PACKAGECONFIG sdl instead of assuming that the host system has undeclared libsdl-native dependency.

Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]
#6 lore raw
Quoted 9 lines · Martin Jansa
Quoted 4 lines · Richard Purdie

On Wed, 2014-07-30 at 11:32 +0200, Martin Jansa wrote:

I'm assuming in your case, you probably either don't have or care about SDL at all, or you have sdl-config available?

Correct, it's just build server where I'll never use runqemu to run the image, but I need to build usable qemu-native to generate read-only images (e.g. for fontcache.bbclass).

Ok, fair enough. We should be able to make this work then.

Quoted 6 lines
Quoted 2 lines

So what really needs to happen here is that running the command needs to become non-fatal as far as I can tell?

Yes, non-fatal and if possible deterministic (AFAIK this whole block could be included in PACKAGECONFIG contains "sdl" conditional and applied only when /bin/pkg-config or /usr/bin/pkg-config exists)

That is a step beyond the patch I've sent, it would be a nice improvement though.

Quoted 6 lines

There was also request to provide libsdl-native
http://patchwork.openembedded.org/patch/63477/

then qemu-native could just build this libsdl-native as dependency for PACKAGECONFIG sdl instead of assuming that the host system has undeclared libsdl-native dependency.

Its very hard to make a libsdl-native work properly when you consider things like GL which is why I'd really prefer to ignore libsdl-native if we can. I certainly do not want the bugs about GL support being broken in it which are where this leads :(

Cheers,

Richard