* [PATCH 1/3] qemu: split the native version into usermode and system parts
@ 2019-02-27 13:49 Alexander Kanavin
2019-02-27 13:49 ` [PATCH 2/3] python3: depend on qemu-native, not qemu-helper-native Alexander Kanavin
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Alexander Kanavin @ 2019-02-27 13:49 UTC (permalink / raw)
To: openembedded-core
The rationale is to streamline the overall build.
The system parts are only needed to run target images, and so can be
built towards the end of the build process. At the same time, the
system parts need gtk+-native and mesa-native which add significantly
to the build time.
On the other hand, the usermode parts have almost no dependencies
and can be built quickly. They are needed at recipes build time to
run target binaries, and so are required quite early in the typical
build process.
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
meta/conf/distro/include/no-static-libs.inc | 1 +
.../qemu/qemu-helper-native_1.0.bb | 4 +-
meta/recipes-devtools/qemu/qemu-native.inc | 17 ++++
.../qemu/qemu-native_3.1.0.bb | 9 ++
.../qemu/qemu-system-native_3.1.0.bb | 23 +++++
meta/recipes-devtools/qemu/qemu-targets.inc | 6 ++
meta/recipes-devtools/qemu/qemu.inc | 97 ++++++++++++-------
meta/recipes-devtools/qemu/qemu_3.1.0.bb | 68 +++----------
8 files changed, 134 insertions(+), 91 deletions(-)
create mode 100644 meta/recipes-devtools/qemu/qemu-native.inc
create mode 100644 meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
create mode 100644 meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
diff --git a/meta/conf/distro/include/no-static-libs.inc b/meta/conf/distro/include/no-static-libs.inc
index cdc53916d07..712d858dc0d 100644
--- a/meta/conf/distro/include/no-static-libs.inc
+++ b/meta/conf/distro/include/no-static-libs.inc
@@ -4,6 +4,7 @@ DISABLE_STATIC ?= " --disable-static"
DISABLE_STATIC_pn-qemu = ""
DISABLE_STATIC_pn-qemu-native = ""
DISABLE_STATIC_pn-nativesdk-qemu = ""
+DISABLE_STATIC_pn-qemu-system-native = ""
# pciutils fails build
DISABLE_STATIC_pn-pciutils = ""
# libcap aborts on unrecognised option
diff --git a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
index d86b1551762..d9d9da0fade 100644
--- a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
@@ -1,6 +1,6 @@
SUMMARY = "Helper utilities needed by the runqemu script"
LICENSE = "GPLv2"
-RDEPENDS_${PN} = "qemu-native"
+RDEPENDS_${PN} = "qemu-system-native"
PR = "r1"
LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
@@ -20,5 +20,5 @@ do_install() {
install tunctl ${D}${bindir}/
}
-DEPENDS += "qemu-native"
+DEPENDS += "qemu-system-native"
addtask addto_recipe_sysroot after do_populate_sysroot before do_build
diff --git a/meta/recipes-devtools/qemu/qemu-native.inc b/meta/recipes-devtools/qemu/qemu-native.inc
new file mode 100644
index 00000000000..4373ad9e63a
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-native.inc
@@ -0,0 +1,17 @@
+inherit native
+
+require qemu.inc
+
+SRC_URI_append = " \
+ file://0012-fix-libcap-header-issue-on-some-distro.patch \
+ file://0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
+ "
+EXTRA_OECONF_append = " --python=python2.7"
+
+EXTRA_OEMAKE_append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
+
+LDFLAGS_append = " -fuse-ld=bfd"
+
+do_install_append() {
+ ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
+}
diff --git a/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb b/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
new file mode 100644
index 00000000000..c8acff8e196
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
@@ -0,0 +1,9 @@
+BPN = "qemu"
+
+DEPENDS = "glib-2.0-native zlib-native"
+
+require qemu-native.inc
+
+EXTRA_OECONF_append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
+
+PACKAGECONFIG ??= ""
diff --git a/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb b/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
new file mode 100644
index 00000000000..95369d7f6a2
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
@@ -0,0 +1,23 @@
+BPN = "qemu"
+
+require qemu-native.inc
+
+# As some of the files installed by qemu-native and qemu-system-native
+# are the same, we depend on qemu-native to get the full installation set
+# and avoid file clashes
+DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native"
+
+EXTRA_OECONF_append = " --target-list=${@get_qemu_system_target_list(d)}"
+
+PACKAGECONFIG ??= "fdt alsa kvm virglrenderer glx"
+
+# Handle distros such as CentOS 5 32-bit that do not have kvm support
+PACKAGECONFIG_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
+
+do_install_append() {
+ install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
+
+ # The following is also installed by qemu-native
+ rm -f ${D}${datadir}/qemu/trace-events-all
+ rm -rf ${D}${datadir}/qemu/keymaps
+}
diff --git a/meta/recipes-devtools/qemu/qemu-targets.inc b/meta/recipes-devtools/qemu/qemu-targets.inc
index a7d7b5f7084..550d6f0ab1e 100644
--- a/meta/recipes-devtools/qemu/qemu-targets.inc
+++ b/meta/recipes-devtools/qemu/qemu-targets.inc
@@ -20,3 +20,9 @@ def get_qemu_target_list(d):
if 'linux' not in tos:
return softmmuonly + ''.join([arch + "-softmmu" + "," for arch in archs]).rstrip(',')
return softmmuonly + linuxuseronly + ''.join([arch + "-linux-user" + "," + arch + "-softmmu" + "," for arch in archs]).rstrip(',')
+
+def get_qemu_usermode_target_list(d):
+ return ",".join(filter(lambda i: "-linux-user" in i, get_qemu_target_list(d).split(',')))
+
+def get_qemu_system_target_list(d):
+ return ",".join(filter(lambda i: "-linux-user" not in i, get_qemu_target_list(d).split(',')))
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index 9a989f00b0b..a9d28bf5a38 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -1,12 +1,59 @@
SUMMARY = "Fast open source processor emulator"
HOMEPAGE = "http://qemu.org"
LICENSE = "GPLv2 & LGPLv2.1"
-DEPENDS = "glib-2.0 zlib pixman"
-RDEPENDS_${PN}_class-target += "bash"
+
+RDEPENDS_${PN}-ptest = "bash make"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
+ file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
+
+SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
+ file://powerpc_rom.bin \
+ file://0001-sdl.c-allow-user-to-disable-pointer-grabs.patch \
+ file://0002-qemu-Add-missing-wacom-HID-descriptor.patch \
+ file://0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
+ file://run-ptest \
+ file://0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
+ file://0005-qemu-disable-Valgrind.patch \
+ file://0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch \
+ file://0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
+ file://0008-chardev-connect-socket-to-a-spawned-command.patch \
+ file://0009-apic-fixup-fallthrough-to-PIC.patch \
+ file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
+ file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
+ file://0001-Add-a-missing-X11-include.patch \
+ file://0001-egl-headless-add-egl_create_context.patch \
+ "
+UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
+
+SRC_URI[md5sum] = "fb687ce0b02d3bf4327e36d3b99427a8"
+SRC_URI[sha256sum] = "6a0508df079a0a33c2487ca936a56c12122f105b8a96a44374704bef6c69abfc"
+
+COMPATIBLE_HOST_mipsarchn32 = "null"
+COMPATIBLE_HOST_mipsarchn64 = "null"
+
+do_install_append() {
+ # Prevent QA warnings about installed ${localstatedir}/run
+ if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
+}
+
+do_compile_ptest() {
+ make buildtest-TESTS
+}
+
+do_install_ptest() {
+ cp -rL ${B}/tests ${D}${PTEST_PATH}
+ find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
+
+ cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
+ # Don't check the file genreated by configure
+ sed -i -e '/wildcard config-host.mak/d' \
+ -e '$ {/endif/d}' ${D}${PTEST_PATH}/tests/Makefile.include
+}
+
require qemu-targets.inc
-inherit pkgconfig bluetooth
-BBCLASSEXTEND = "native nativesdk"
+inherit pkgconfig bluetooth ptest
# QEMU_TARGETS is overridable variable
QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc riscv32 riscv64 sh4 x86_64"
@@ -25,15 +72,9 @@ EXTRA_OECONF = " \
--with-confsuffix=/${BPN} \
--disable-strip \
--disable-werror \
- --target-list=${@get_qemu_target_list(d)} \
--extra-cflags='${CFLAGS}' \
${PACKAGECONFIG_CONFARGS} \
"
-EXTRA_OECONF_append_class-native = " --python=python2.7"
-
-EXTRA_OEMAKE_append_class-native = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
-
-LDFLAGS_append_class-native = " -fuse-ld=bfd"
export LIBTOOL="${HOST_SYS}-libtool"
@@ -48,25 +89,6 @@ do_install () {
oe_runmake 'DESTDIR=${D}' install
}
-make_qemu_wrapper() {
- gdk_pixbuf_module_file=`pkg-config --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0`
-
- for tool in `ls ${D}${bindir}/qemu-system-*`; do
- create_wrapper $tool \
- GDK_PIXBUF_MODULE_FILE=$gdk_pixbuf_module_file \
- FONTCONFIG_PATH=/etc/fonts \
- GTK_THEME=Adwaita
- done
-}
-
-do_install_append_class-native() {
- ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
-}
-
-do_install_append_class-nativesdk() {
- ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
-}
-
# The following fragment will create a wrapper for qemu-mips user emulation
# binary in order to work around a segmentation fault issue. Basically, by
# default, the reserved virtual address space for 32-on-64 bit is set to 4GB.
@@ -81,15 +103,16 @@ do_install_append() {
}
# END of qemu-mips workaround
-PACKAGECONFIG ??= " \
- fdt gtk+ kvm \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
-"
-PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
-PACKAGECONFIG_class-nativesdk ??= "fdt kvm virglrenderer glx"
+make_qemu_wrapper() {
+ gdk_pixbuf_module_file=`pkg-config --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0`
-# Handle distros such as CentOS 5 32-bit that do not have kvm support
-PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
+ for tool in `ls ${D}${bindir}/qemu-system-*`; do
+ create_wrapper $tool \
+ GDK_PIXBUF_MODULE_FILE=$gdk_pixbuf_module_file \
+ FONTCONFIG_PATH=/etc/fonts \
+ GTK_THEME=Adwaita
+ done
+}
# Disable kvm/virgl/mesa on targets that do not support it
PACKAGECONFIG_remove_darwin = "kvm virglrenderer glx gtk+"
diff --git a/meta/recipes-devtools/qemu/qemu_3.1.0.bb b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
index ea4277eddea..1f30729588c 100644
--- a/meta/recipes-devtools/qemu/qemu_3.1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
@@ -1,58 +1,22 @@
+BBCLASSEXTEND = "nativesdk"
+
require qemu.inc
-inherit ptest
-
-RDEPENDS_${PN}-ptest = "bash make"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
- file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
-
-SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
- file://powerpc_rom.bin \
- file://0001-sdl.c-allow-user-to-disable-pointer-grabs.patch \
- file://0002-qemu-Add-missing-wacom-HID-descriptor.patch \
- file://0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
- file://run-ptest \
- file://0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
- file://0005-qemu-disable-Valgrind.patch \
- file://0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch \
- file://0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
- file://0008-chardev-connect-socket-to-a-spawned-command.patch \
- file://0009-apic-fixup-fallthrough-to-PIC.patch \
- file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
- file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
- file://0001-Add-a-missing-X11-include.patch \
- file://0001-egl-headless-add-egl_create_context.patch \
- "
-UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
-
-SRC_URI_append_class-native = " \
- file://0012-fix-libcap-header-issue-on-some-distro.patch \
- file://0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
- "
-
-SRC_URI[md5sum] = "fb687ce0b02d3bf4327e36d3b99427a8"
-SRC_URI[sha256sum] = "6a0508df079a0a33c2487ca936a56c12122f105b8a96a44374704bef6c69abfc"
-
-COMPATIBLE_HOST_mipsarchn32 = "null"
-COMPATIBLE_HOST_mipsarchn64 = "null"
-
-do_install_append() {
- # Prevent QA warnings about installed ${localstatedir}/run
- if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
- install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
-}
+DEPENDS = "glib-2.0 zlib pixman"
-do_compile_ptest() {
- make buildtest-TESTS
-}
+RDEPENDS_${PN}_class-target += "bash"
-do_install_ptest() {
- cp -rL ${B}/tests ${D}${PTEST_PATH}
- find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
+EXTRA_OECONF_append_class-target = " --target-list=${@get_qemu_target_list(d)}"
+EXTRA_OECONF_append_class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
- cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
- # Don't check the file genreated by configure
- sed -i -e '/wildcard config-host.mak/d' \
- -e '$ {/endif/d}' ${D}${PTEST_PATH}/tests/Makefile.include
+do_install_append_class-nativesdk() {
+ ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
}
+
+PACKAGECONFIG ??= " \
+ fdt gtk+ kvm \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
+"
+PACKAGECONFIG_class-nativesdk ??= "fdt kvm virglrenderer glx"
+
+
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 2/3] python3: depend on qemu-native, not qemu-helper-native
2019-02-27 13:49 [PATCH 1/3] qemu: split the native version into usermode and system parts Alexander Kanavin
@ 2019-02-27 13:49 ` Alexander Kanavin
2019-02-27 13:49 ` [PATCH 3/3] local.conf.sample: adjust the qemu configuration to refer to qemu-system-native Alexander Kanavin
2019-02-27 16:47 ` [PATCH 1/3] qemu: split the native version into usermode and system parts Khem Raj
2 siblings, 0 replies; 5+ messages in thread
From: Alexander Kanavin @ 2019-02-27 13:49 UTC (permalink / raw)
To: openembedded-core
qemu-helper-native would erroneously pull in the qemu system
parts, where we only want usermode parts for pgo.
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
meta/recipes-devtools/python/python3_3.7.2.bb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/python/python3_3.7.2.bb b/meta/recipes-devtools/python/python3_3.7.2.bb
index 4a1cbae8670..9626ee546b2 100644
--- a/meta/recipes-devtools/python/python3_3.7.2.bb
+++ b/meta/recipes-devtools/python/python3_3.7.2.bb
@@ -72,7 +72,7 @@ PACKAGECONFIG_class-native ??= "readline"
PACKAGECONFIG_class-nativesdk ??= "readline"
PACKAGECONFIG[readline] = ",,readline"
# Use profile guided optimisation by running PyBench inside qemu-user
-PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-helper-native"
+PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
PACKAGECONFIG[tk] = ",,tk"
CPPFLAGS_append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 3/3] local.conf.sample: adjust the qemu configuration to refer to qemu-system-native
2019-02-27 13:49 [PATCH 1/3] qemu: split the native version into usermode and system parts Alexander Kanavin
2019-02-27 13:49 ` [PATCH 2/3] python3: depend on qemu-native, not qemu-helper-native Alexander Kanavin
@ 2019-02-27 13:49 ` Alexander Kanavin
2019-02-27 16:47 ` [PATCH 1/3] qemu: split the native version into usermode and system parts Khem Raj
2 siblings, 0 replies; 5+ messages in thread
From: Alexander Kanavin @ 2019-02-27 13:49 UTC (permalink / raw)
To: openembedded-core
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
meta-poky/conf/local.conf.sample | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta-poky/conf/local.conf.sample b/meta-poky/conf/local.conf.sample
index 98ff5c23256..eee65b5875a 100644
--- a/meta-poky/conf/local.conf.sample
+++ b/meta-poky/conf/local.conf.sample
@@ -239,7 +239,7 @@ BB_DISKMON_DIRS ??= "\
#
# By default qemu will build with a builtin VNC server where graphical output can be
# seen. The two lines below enable the Gtk UI frontend.
-PACKAGECONFIG_append_pn-qemu-native = " gtk+"
+PACKAGECONFIG_append_pn-qemu-system-native = " gtk+"
PACKAGECONFIG_append_pn-nativesdk-qemu = " gtk+"
# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] qemu: split the native version into usermode and system parts
2019-02-27 13:49 [PATCH 1/3] qemu: split the native version into usermode and system parts Alexander Kanavin
2019-02-27 13:49 ` [PATCH 2/3] python3: depend on qemu-native, not qemu-helper-native Alexander Kanavin
2019-02-27 13:49 ` [PATCH 3/3] local.conf.sample: adjust the qemu configuration to refer to qemu-system-native Alexander Kanavin
@ 2019-02-27 16:47 ` Khem Raj
2 siblings, 0 replies; 5+ messages in thread
From: Khem Raj @ 2019-02-27 16:47 UTC (permalink / raw)
To: Alexander Kanavin; +Cc: Patches and discussions about the oe-core layer
On Wed, Feb 27, 2019 at 5:50 AM Alexander Kanavin
<alex.kanavin@gmail.com> wrote:
>
> The rationale is to streamline the overall build.
>
> The system parts are only needed to run target images, and so can be
> built towards the end of the build process. At the same time, the
> system parts need gtk+-native and mesa-native which add significantly
> to the build time.
>
> On the other hand, the usermode parts have almost no dependencies
> and can be built quickly. They are needed at recipes build time to
> run target binaries, and so are required quite early in the typical
> build process.
>
this is really good patch for non-qemu machines.
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
> meta/conf/distro/include/no-static-libs.inc | 1 +
> .../qemu/qemu-helper-native_1.0.bb | 4 +-
> meta/recipes-devtools/qemu/qemu-native.inc | 17 ++++
> .../qemu/qemu-native_3.1.0.bb | 9 ++
> .../qemu/qemu-system-native_3.1.0.bb | 23 +++++
> meta/recipes-devtools/qemu/qemu-targets.inc | 6 ++
> meta/recipes-devtools/qemu/qemu.inc | 97 ++++++++++++-------
> meta/recipes-devtools/qemu/qemu_3.1.0.bb | 68 +++----------
> 8 files changed, 134 insertions(+), 91 deletions(-)
> create mode 100644 meta/recipes-devtools/qemu/qemu-native.inc
> create mode 100644 meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
> create mode 100644 meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
>
> diff --git a/meta/conf/distro/include/no-static-libs.inc b/meta/conf/distro/include/no-static-libs.inc
> index cdc53916d07..712d858dc0d 100644
> --- a/meta/conf/distro/include/no-static-libs.inc
> +++ b/meta/conf/distro/include/no-static-libs.inc
> @@ -4,6 +4,7 @@ DISABLE_STATIC ?= " --disable-static"
> DISABLE_STATIC_pn-qemu = ""
> DISABLE_STATIC_pn-qemu-native = ""
> DISABLE_STATIC_pn-nativesdk-qemu = ""
> +DISABLE_STATIC_pn-qemu-system-native = ""
> # pciutils fails build
> DISABLE_STATIC_pn-pciutils = ""
> # libcap aborts on unrecognised option
> diff --git a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
> index d86b1551762..d9d9da0fade 100644
> --- a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
> +++ b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
> @@ -1,6 +1,6 @@
> SUMMARY = "Helper utilities needed by the runqemu script"
> LICENSE = "GPLv2"
> -RDEPENDS_${PN} = "qemu-native"
> +RDEPENDS_${PN} = "qemu-system-native"
> PR = "r1"
>
> LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
> @@ -20,5 +20,5 @@ do_install() {
> install tunctl ${D}${bindir}/
> }
>
> -DEPENDS += "qemu-native"
> +DEPENDS += "qemu-system-native"
> addtask addto_recipe_sysroot after do_populate_sysroot before do_build
> diff --git a/meta/recipes-devtools/qemu/qemu-native.inc b/meta/recipes-devtools/qemu/qemu-native.inc
> new file mode 100644
> index 00000000000..4373ad9e63a
> --- /dev/null
> +++ b/meta/recipes-devtools/qemu/qemu-native.inc
> @@ -0,0 +1,17 @@
> +inherit native
> +
> +require qemu.inc
> +
> +SRC_URI_append = " \
> + file://0012-fix-libcap-header-issue-on-some-distro.patch \
> + file://0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
> + "
> +EXTRA_OECONF_append = " --python=python2.7"
> +
> +EXTRA_OEMAKE_append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
> +
> +LDFLAGS_append = " -fuse-ld=bfd"
> +
> +do_install_append() {
> + ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
> +}
> diff --git a/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb b/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
> new file mode 100644
> index 00000000000..c8acff8e196
> --- /dev/null
> +++ b/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
> @@ -0,0 +1,9 @@
> +BPN = "qemu"
> +
> +DEPENDS = "glib-2.0-native zlib-native"
> +
> +require qemu-native.inc
> +
> +EXTRA_OECONF_append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
> +
> +PACKAGECONFIG ??= ""
> diff --git a/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb b/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
> new file mode 100644
> index 00000000000..95369d7f6a2
> --- /dev/null
> +++ b/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
> @@ -0,0 +1,23 @@
> +BPN = "qemu"
> +
> +require qemu-native.inc
> +
> +# As some of the files installed by qemu-native and qemu-system-native
> +# are the same, we depend on qemu-native to get the full installation set
> +# and avoid file clashes
> +DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native"
> +
> +EXTRA_OECONF_append = " --target-list=${@get_qemu_system_target_list(d)}"
> +
> +PACKAGECONFIG ??= "fdt alsa kvm virglrenderer glx"
> +
> +# Handle distros such as CentOS 5 32-bit that do not have kvm support
> +PACKAGECONFIG_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
> +
> +do_install_append() {
> + install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
> +
> + # The following is also installed by qemu-native
> + rm -f ${D}${datadir}/qemu/trace-events-all
> + rm -rf ${D}${datadir}/qemu/keymaps
> +}
> diff --git a/meta/recipes-devtools/qemu/qemu-targets.inc b/meta/recipes-devtools/qemu/qemu-targets.inc
> index a7d7b5f7084..550d6f0ab1e 100644
> --- a/meta/recipes-devtools/qemu/qemu-targets.inc
> +++ b/meta/recipes-devtools/qemu/qemu-targets.inc
> @@ -20,3 +20,9 @@ def get_qemu_target_list(d):
> if 'linux' not in tos:
> return softmmuonly + ''.join([arch + "-softmmu" + "," for arch in archs]).rstrip(',')
> return softmmuonly + linuxuseronly + ''.join([arch + "-linux-user" + "," + arch + "-softmmu" + "," for arch in archs]).rstrip(',')
> +
> +def get_qemu_usermode_target_list(d):
> + return ",".join(filter(lambda i: "-linux-user" in i, get_qemu_target_list(d).split(',')))
> +
> +def get_qemu_system_target_list(d):
> + return ",".join(filter(lambda i: "-linux-user" not in i, get_qemu_target_list(d).split(',')))
> diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
> index 9a989f00b0b..a9d28bf5a38 100644
> --- a/meta/recipes-devtools/qemu/qemu.inc
> +++ b/meta/recipes-devtools/qemu/qemu.inc
> @@ -1,12 +1,59 @@
> SUMMARY = "Fast open source processor emulator"
> HOMEPAGE = "http://qemu.org"
> LICENSE = "GPLv2 & LGPLv2.1"
> -DEPENDS = "glib-2.0 zlib pixman"
> -RDEPENDS_${PN}_class-target += "bash"
> +
> +RDEPENDS_${PN}-ptest = "bash make"
> +
> +LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
> + file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
> +
> +SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
> + file://powerpc_rom.bin \
> + file://0001-sdl.c-allow-user-to-disable-pointer-grabs.patch \
> + file://0002-qemu-Add-missing-wacom-HID-descriptor.patch \
> + file://0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
> + file://run-ptest \
> + file://0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
> + file://0005-qemu-disable-Valgrind.patch \
> + file://0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch \
> + file://0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
> + file://0008-chardev-connect-socket-to-a-spawned-command.patch \
> + file://0009-apic-fixup-fallthrough-to-PIC.patch \
> + file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
> + file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
> + file://0001-Add-a-missing-X11-include.patch \
> + file://0001-egl-headless-add-egl_create_context.patch \
> + "
> +UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
> +
> +SRC_URI[md5sum] = "fb687ce0b02d3bf4327e36d3b99427a8"
> +SRC_URI[sha256sum] = "6a0508df079a0a33c2487ca936a56c12122f105b8a96a44374704bef6c69abfc"
> +
> +COMPATIBLE_HOST_mipsarchn32 = "null"
> +COMPATIBLE_HOST_mipsarchn64 = "null"
> +
> +do_install_append() {
> + # Prevent QA warnings about installed ${localstatedir}/run
> + if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
> +}
> +
> +do_compile_ptest() {
> + make buildtest-TESTS
> +}
> +
> +do_install_ptest() {
> + cp -rL ${B}/tests ${D}${PTEST_PATH}
> + find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
> +
> + cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
> + # Don't check the file genreated by configure
> + sed -i -e '/wildcard config-host.mak/d' \
> + -e '$ {/endif/d}' ${D}${PTEST_PATH}/tests/Makefile.include
> +}
> +
>
> require qemu-targets.inc
> -inherit pkgconfig bluetooth
> -BBCLASSEXTEND = "native nativesdk"
> +inherit pkgconfig bluetooth ptest
>
> # QEMU_TARGETS is overridable variable
> QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc riscv32 riscv64 sh4 x86_64"
> @@ -25,15 +72,9 @@ EXTRA_OECONF = " \
> --with-confsuffix=/${BPN} \
> --disable-strip \
> --disable-werror \
> - --target-list=${@get_qemu_target_list(d)} \
> --extra-cflags='${CFLAGS}' \
> ${PACKAGECONFIG_CONFARGS} \
> "
> -EXTRA_OECONF_append_class-native = " --python=python2.7"
> -
> -EXTRA_OEMAKE_append_class-native = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
> -
> -LDFLAGS_append_class-native = " -fuse-ld=bfd"
>
> export LIBTOOL="${HOST_SYS}-libtool"
>
> @@ -48,25 +89,6 @@ do_install () {
> oe_runmake 'DESTDIR=${D}' install
> }
>
> -make_qemu_wrapper() {
> - gdk_pixbuf_module_file=`pkg-config --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0`
> -
> - for tool in `ls ${D}${bindir}/qemu-system-*`; do
> - create_wrapper $tool \
> - GDK_PIXBUF_MODULE_FILE=$gdk_pixbuf_module_file \
> - FONTCONFIG_PATH=/etc/fonts \
> - GTK_THEME=Adwaita
> - done
> -}
> -
> -do_install_append_class-native() {
> - ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
> -}
> -
> -do_install_append_class-nativesdk() {
> - ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
> -}
> -
> # The following fragment will create a wrapper for qemu-mips user emulation
> # binary in order to work around a segmentation fault issue. Basically, by
> # default, the reserved virtual address space for 32-on-64 bit is set to 4GB.
> @@ -81,15 +103,16 @@ do_install_append() {
> }
> # END of qemu-mips workaround
>
> -PACKAGECONFIG ??= " \
> - fdt gtk+ kvm \
> - ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
> -"
> -PACKAGECONFIG_class-native ??= "fdt alsa kvm virglrenderer glx"
> -PACKAGECONFIG_class-nativesdk ??= "fdt kvm virglrenderer glx"
> +make_qemu_wrapper() {
> + gdk_pixbuf_module_file=`pkg-config --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0`
>
> -# Handle distros such as CentOS 5 32-bit that do not have kvm support
> -PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
> + for tool in `ls ${D}${bindir}/qemu-system-*`; do
> + create_wrapper $tool \
> + GDK_PIXBUF_MODULE_FILE=$gdk_pixbuf_module_file \
> + FONTCONFIG_PATH=/etc/fonts \
> + GTK_THEME=Adwaita
> + done
> +}
>
> # Disable kvm/virgl/mesa on targets that do not support it
> PACKAGECONFIG_remove_darwin = "kvm virglrenderer glx gtk+"
> diff --git a/meta/recipes-devtools/qemu/qemu_3.1.0.bb b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
> index ea4277eddea..1f30729588c 100644
> --- a/meta/recipes-devtools/qemu/qemu_3.1.0.bb
> +++ b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
> @@ -1,58 +1,22 @@
> +BBCLASSEXTEND = "nativesdk"
> +
> require qemu.inc
>
> -inherit ptest
> -
> -RDEPENDS_${PN}-ptest = "bash make"
> -
> -LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
> - file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
> -
> -SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
> - file://powerpc_rom.bin \
> - file://0001-sdl.c-allow-user-to-disable-pointer-grabs.patch \
> - file://0002-qemu-Add-missing-wacom-HID-descriptor.patch \
> - file://0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
> - file://run-ptest \
> - file://0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
> - file://0005-qemu-disable-Valgrind.patch \
> - file://0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch \
> - file://0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
> - file://0008-chardev-connect-socket-to-a-spawned-command.patch \
> - file://0009-apic-fixup-fallthrough-to-PIC.patch \
> - file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
> - file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
> - file://0001-Add-a-missing-X11-include.patch \
> - file://0001-egl-headless-add-egl_create_context.patch \
> - "
> -UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
> -
> -SRC_URI_append_class-native = " \
> - file://0012-fix-libcap-header-issue-on-some-distro.patch \
> - file://0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
> - "
> -
> -SRC_URI[md5sum] = "fb687ce0b02d3bf4327e36d3b99427a8"
> -SRC_URI[sha256sum] = "6a0508df079a0a33c2487ca936a56c12122f105b8a96a44374704bef6c69abfc"
> -
> -COMPATIBLE_HOST_mipsarchn32 = "null"
> -COMPATIBLE_HOST_mipsarchn64 = "null"
> -
> -do_install_append() {
> - # Prevent QA warnings about installed ${localstatedir}/run
> - if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
> - install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
> -}
> +DEPENDS = "glib-2.0 zlib pixman"
>
> -do_compile_ptest() {
> - make buildtest-TESTS
> -}
> +RDEPENDS_${PN}_class-target += "bash"
>
> -do_install_ptest() {
> - cp -rL ${B}/tests ${D}${PTEST_PATH}
> - find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
> +EXTRA_OECONF_append_class-target = " --target-list=${@get_qemu_target_list(d)}"
> +EXTRA_OECONF_append_class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
>
> - cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
> - # Don't check the file genreated by configure
> - sed -i -e '/wildcard config-host.mak/d' \
> - -e '$ {/endif/d}' ${D}${PTEST_PATH}/tests/Makefile.include
> +do_install_append_class-nativesdk() {
> + ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
> }
> +
> +PACKAGECONFIG ??= " \
> + fdt gtk+ kvm \
> + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
> +"
> +PACKAGECONFIG_class-nativesdk ??= "fdt kvm virglrenderer glx"
> +
> +
> --
> 2.17.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] qemu: split the native version into usermode and system parts
@ 2019-02-27 17:47 Alexander Kanavin
2019-02-27 17:47 ` [PATCH 2/3] python3: depend on qemu-native, not qemu-helper-native Alexander Kanavin
0 siblings, 1 reply; 5+ messages in thread
From: Alexander Kanavin @ 2019-02-27 17:47 UTC (permalink / raw)
To: openembedded-core
The rationale is to streamline the overall build.
The system parts are only needed to run target images, and so can be
built towards the end of the build process. At the same time, the
system parts may need gtk+-native and mesa-native which add significantly
to the build time.
On the other hand, the usermode parts have almost no dependencies
and can be built quickly. They are needed at recipes build time to
run target binaries, and so are required quite early in the typical
build process.
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
meta/conf/distro/include/no-static-libs.inc | 1 +
.../qemu/qemu-helper-native_1.0.bb | 4 +-
meta/recipes-devtools/qemu/qemu-native.inc | 17 ++++
.../qemu/qemu-native_3.1.0.bb | 9 ++
.../qemu/qemu-system-native_3.1.0.bb | 23 +++++
meta/recipes-devtools/qemu/qemu-targets.inc | 6 ++
meta/recipes-devtools/qemu/qemu.inc | 97 ++++++++++++-------
meta/recipes-devtools/qemu/qemu_3.1.0.bb | 68 +++----------
8 files changed, 134 insertions(+), 91 deletions(-)
create mode 100644 meta/recipes-devtools/qemu/qemu-native.inc
create mode 100644 meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
create mode 100644 meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
diff --git a/meta/conf/distro/include/no-static-libs.inc b/meta/conf/distro/include/no-static-libs.inc
index cdc53916d07..712d858dc0d 100644
--- a/meta/conf/distro/include/no-static-libs.inc
+++ b/meta/conf/distro/include/no-static-libs.inc
@@ -4,6 +4,7 @@ DISABLE_STATIC ?= " --disable-static"
DISABLE_STATIC_pn-qemu = ""
DISABLE_STATIC_pn-qemu-native = ""
DISABLE_STATIC_pn-nativesdk-qemu = ""
+DISABLE_STATIC_pn-qemu-system-native = ""
# pciutils fails build
DISABLE_STATIC_pn-pciutils = ""
# libcap aborts on unrecognised option
diff --git a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
index d86b1551762..d9d9da0fade 100644
--- a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
@@ -1,6 +1,6 @@
SUMMARY = "Helper utilities needed by the runqemu script"
LICENSE = "GPLv2"
-RDEPENDS_${PN} = "qemu-native"
+RDEPENDS_${PN} = "qemu-system-native"
PR = "r1"
LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
@@ -20,5 +20,5 @@ do_install() {
install tunctl ${D}${bindir}/
}
-DEPENDS += "qemu-native"
+DEPENDS += "qemu-system-native"
addtask addto_recipe_sysroot after do_populate_sysroot before do_build
diff --git a/meta/recipes-devtools/qemu/qemu-native.inc b/meta/recipes-devtools/qemu/qemu-native.inc
new file mode 100644
index 00000000000..4373ad9e63a
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-native.inc
@@ -0,0 +1,17 @@
+inherit native
+
+require qemu.inc
+
+SRC_URI_append = " \
+ file://0012-fix-libcap-header-issue-on-some-distro.patch \
+ file://0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
+ "
+EXTRA_OECONF_append = " --python=python2.7"
+
+EXTRA_OEMAKE_append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
+
+LDFLAGS_append = " -fuse-ld=bfd"
+
+do_install_append() {
+ ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
+}
diff --git a/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb b/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
new file mode 100644
index 00000000000..c8acff8e196
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-native_3.1.0.bb
@@ -0,0 +1,9 @@
+BPN = "qemu"
+
+DEPENDS = "glib-2.0-native zlib-native"
+
+require qemu-native.inc
+
+EXTRA_OECONF_append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
+
+PACKAGECONFIG ??= ""
diff --git a/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb b/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
new file mode 100644
index 00000000000..5bf528bec12
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-system-native_3.1.0.bb
@@ -0,0 +1,23 @@
+BPN = "qemu"
+
+require qemu-native.inc
+
+# As some of the files installed by qemu-native and qemu-system-native
+# are the same, we depend on qemu-native to get the full installation set
+# and avoid file clashes
+DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native"
+
+EXTRA_OECONF_append = " --target-list=${@get_qemu_system_target_list(d)}"
+
+PACKAGECONFIG ??= "fdt alsa kvm"
+
+# Handle distros such as CentOS 5 32-bit that do not have kvm support
+PACKAGECONFIG_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
+
+do_install_append() {
+ install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
+
+ # The following is also installed by qemu-native
+ rm -f ${D}${datadir}/qemu/trace-events-all
+ rm -rf ${D}${datadir}/qemu/keymaps
+}
diff --git a/meta/recipes-devtools/qemu/qemu-targets.inc b/meta/recipes-devtools/qemu/qemu-targets.inc
index a7d7b5f7084..550d6f0ab1e 100644
--- a/meta/recipes-devtools/qemu/qemu-targets.inc
+++ b/meta/recipes-devtools/qemu/qemu-targets.inc
@@ -20,3 +20,9 @@ def get_qemu_target_list(d):
if 'linux' not in tos:
return softmmuonly + ''.join([arch + "-softmmu" + "," for arch in archs]).rstrip(',')
return softmmuonly + linuxuseronly + ''.join([arch + "-linux-user" + "," + arch + "-softmmu" + "," for arch in archs]).rstrip(',')
+
+def get_qemu_usermode_target_list(d):
+ return ",".join(filter(lambda i: "-linux-user" in i, get_qemu_target_list(d).split(',')))
+
+def get_qemu_system_target_list(d):
+ return ",".join(filter(lambda i: "-linux-user" not in i, get_qemu_target_list(d).split(',')))
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index 7fd580c8aef..ebee2974d2f 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -1,12 +1,59 @@
SUMMARY = "Fast open source processor emulator"
HOMEPAGE = "http://qemu.org"
LICENSE = "GPLv2 & LGPLv2.1"
-DEPENDS = "glib-2.0 zlib pixman"
-RDEPENDS_${PN}_class-target += "bash"
+
+RDEPENDS_${PN}-ptest = "bash make"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
+ file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
+
+SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
+ file://powerpc_rom.bin \
+ file://0001-sdl.c-allow-user-to-disable-pointer-grabs.patch \
+ file://0002-qemu-Add-missing-wacom-HID-descriptor.patch \
+ file://0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
+ file://run-ptest \
+ file://0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
+ file://0005-qemu-disable-Valgrind.patch \
+ file://0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch \
+ file://0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
+ file://0008-chardev-connect-socket-to-a-spawned-command.patch \
+ file://0009-apic-fixup-fallthrough-to-PIC.patch \
+ file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
+ file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
+ file://0001-Add-a-missing-X11-include.patch \
+ file://0001-egl-headless-add-egl_create_context.patch \
+ "
+UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
+
+SRC_URI[md5sum] = "fb687ce0b02d3bf4327e36d3b99427a8"
+SRC_URI[sha256sum] = "6a0508df079a0a33c2487ca936a56c12122f105b8a96a44374704bef6c69abfc"
+
+COMPATIBLE_HOST_mipsarchn32 = "null"
+COMPATIBLE_HOST_mipsarchn64 = "null"
+
+do_install_append() {
+ # Prevent QA warnings about installed ${localstatedir}/run
+ if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
+}
+
+do_compile_ptest() {
+ make buildtest-TESTS
+}
+
+do_install_ptest() {
+ cp -rL ${B}/tests ${D}${PTEST_PATH}
+ find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
+
+ cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
+ # Don't check the file genreated by configure
+ sed -i -e '/wildcard config-host.mak/d' \
+ -e '$ {/endif/d}' ${D}${PTEST_PATH}/tests/Makefile.include
+}
+
require qemu-targets.inc
-inherit pkgconfig bluetooth
-BBCLASSEXTEND = "native nativesdk"
+inherit pkgconfig bluetooth ptest
# QEMU_TARGETS is overridable variable
QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc riscv32 riscv64 sh4 x86_64"
@@ -25,15 +72,9 @@ EXTRA_OECONF = " \
--with-confsuffix=/${BPN} \
--disable-strip \
--disable-werror \
- --target-list=${@get_qemu_target_list(d)} \
--extra-cflags='${CFLAGS}' \
${PACKAGECONFIG_CONFARGS} \
"
-EXTRA_OECONF_append_class-native = " --python=python2.7"
-
-EXTRA_OEMAKE_append_class-native = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
-
-LDFLAGS_append_class-native = " -fuse-ld=bfd"
export LIBTOOL="${HOST_SYS}-libtool"
@@ -56,25 +97,6 @@ do_install () {
oe_runmake 'DESTDIR=${D}' install
}
-make_qemu_wrapper() {
- gdk_pixbuf_module_file=`pkg-config --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0`
-
- for tool in `ls ${D}${bindir}/qemu-system-*`; do
- create_wrapper $tool \
- GDK_PIXBUF_MODULE_FILE=$gdk_pixbuf_module_file \
- FONTCONFIG_PATH=/etc/fonts \
- GTK_THEME=Adwaita
- done
-}
-
-do_install_append_class-native() {
- ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
-}
-
-do_install_append_class-nativesdk() {
- ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
-}
-
# The following fragment will create a wrapper for qemu-mips user emulation
# binary in order to work around a segmentation fault issue. Basically, by
# default, the reserved virtual address space for 32-on-64 bit is set to 4GB.
@@ -89,15 +111,16 @@ do_install_append() {
}
# END of qemu-mips workaround
-PACKAGECONFIG ??= " \
- fdt sdl kvm \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
-"
-PACKAGECONFIG_class-native ??= "fdt alsa kvm"
-PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm"
+make_qemu_wrapper() {
+ gdk_pixbuf_module_file=`pkg-config --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0`
-# Handle distros such as CentOS 5 32-bit that do not have kvm support
-PACKAGECONFIG_class-native_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
+ for tool in `ls ${D}${bindir}/qemu-system-*`; do
+ create_wrapper $tool \
+ GDK_PIXBUF_MODULE_FILE=$gdk_pixbuf_module_file \
+ FONTCONFIG_PATH=/etc/fonts \
+ GTK_THEME=Adwaita
+ done
+}
# Disable kvm on targets that do not support it
PACKAGECONFIG_remove_darwin = "kvm"
diff --git a/meta/recipes-devtools/qemu/qemu_3.1.0.bb b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
index ea4277eddea..04d8bee99f2 100644
--- a/meta/recipes-devtools/qemu/qemu_3.1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu_3.1.0.bb
@@ -1,58 +1,22 @@
+BBCLASSEXTEND = "nativesdk"
+
require qemu.inc
-inherit ptest
-
-RDEPENDS_${PN}-ptest = "bash make"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
- file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
-
-SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
- file://powerpc_rom.bin \
- file://0001-sdl.c-allow-user-to-disable-pointer-grabs.patch \
- file://0002-qemu-Add-missing-wacom-HID-descriptor.patch \
- file://0003-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
- file://run-ptest \
- file://0004-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
- file://0005-qemu-disable-Valgrind.patch \
- file://0006-qemu-Limit-paths-searched-during-user-mode-emulation.patch \
- file://0007-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
- file://0008-chardev-connect-socket-to-a-spawned-command.patch \
- file://0009-apic-fixup-fallthrough-to-PIC.patch \
- file://0010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
- file://0011-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
- file://0001-Add-a-missing-X11-include.patch \
- file://0001-egl-headless-add-egl_create_context.patch \
- "
-UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
-
-SRC_URI_append_class-native = " \
- file://0012-fix-libcap-header-issue-on-some-distro.patch \
- file://0013-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
- "
-
-SRC_URI[md5sum] = "fb687ce0b02d3bf4327e36d3b99427a8"
-SRC_URI[sha256sum] = "6a0508df079a0a33c2487ca936a56c12122f105b8a96a44374704bef6c69abfc"
-
-COMPATIBLE_HOST_mipsarchn32 = "null"
-COMPATIBLE_HOST_mipsarchn64 = "null"
-
-do_install_append() {
- # Prevent QA warnings about installed ${localstatedir}/run
- if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
- install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
-}
+DEPENDS = "glib-2.0 zlib pixman"
-do_compile_ptest() {
- make buildtest-TESTS
-}
+RDEPENDS_${PN}_class-target += "bash"
-do_install_ptest() {
- cp -rL ${B}/tests ${D}${PTEST_PATH}
- find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
+EXTRA_OECONF_append_class-target = " --target-list=${@get_qemu_target_list(d)}"
+EXTRA_OECONF_append_class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
- cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
- # Don't check the file genreated by configure
- sed -i -e '/wildcard config-host.mak/d' \
- -e '$ {/endif/d}' ${D}${PTEST_PATH}/tests/Makefile.include
+do_install_append_class-nativesdk() {
+ ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
}
+
+PACKAGECONFIG ??= " \
+ fdt sdl kvm \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
+"
+PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm"
+
+
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH 2/3] python3: depend on qemu-native, not qemu-helper-native
2019-02-27 17:47 Alexander Kanavin
@ 2019-02-27 17:47 ` Alexander Kanavin
0 siblings, 0 replies; 5+ messages in thread
From: Alexander Kanavin @ 2019-02-27 17:47 UTC (permalink / raw)
To: openembedded-core
qemu-helper-native would erroneously pull in the qemu system
parts, where we only want usermode parts for pgo.
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
meta/recipes-devtools/python/python3_3.7.2.bb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/python/python3_3.7.2.bb b/meta/recipes-devtools/python/python3_3.7.2.bb
index 4a1cbae8670..9626ee546b2 100644
--- a/meta/recipes-devtools/python/python3_3.7.2.bb
+++ b/meta/recipes-devtools/python/python3_3.7.2.bb
@@ -72,7 +72,7 @@ PACKAGECONFIG_class-native ??= "readline"
PACKAGECONFIG_class-nativesdk ??= "readline"
PACKAGECONFIG[readline] = ",,readline"
# Use profile guided optimisation by running PyBench inside qemu-user
-PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-helper-native"
+PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
PACKAGECONFIG[tk] = ",,tk"
CPPFLAGS_append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-02-27 17:47 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-02-27 13:49 [PATCH 1/3] qemu: split the native version into usermode and system parts Alexander Kanavin
2019-02-27 13:49 ` [PATCH 2/3] python3: depend on qemu-native, not qemu-helper-native Alexander Kanavin
2019-02-27 13:49 ` [PATCH 3/3] local.conf.sample: adjust the qemu configuration to refer to qemu-system-native Alexander Kanavin
2019-02-27 16:47 ` [PATCH 1/3] qemu: split the native version into usermode and system parts Khem Raj
-- strict thread matches above, loose matches on Subject: below --
2019-02-27 17:47 Alexander Kanavin
2019-02-27 17:47 ` [PATCH 2/3] python3: depend on qemu-native, not qemu-helper-native Alexander Kanavin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox