image.inc/qemu.inc: preserve directories to be used by runqemu
cover image.inc/qemu.inc: preserve directories to be used by runqemu
The following changes since commit 2acc741dd02cd796b396484a8676250a8f97c975:
maintainers.inc: Add maintainers to go-native and vulkan software package recipes (2017-03-29 16:37:28 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib ChenQi/runqemu_rm_work
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/runqemu_rm_work
Chen Qi (1):
image.inc/qemu.inc: preserve directories to be used by runqemu
meta/classes/image.bbclass | 1 + meta/conf/machine/include/qemu.inc | 3 +++ 2 files changed, 4 insertions(+)
Signature · 1 line
1.9.1
PATCH 1/1 image.inc/qemu.inc: preserve directories to be used by runqemu
The 'recipe-sysroot' and 'recipe-sysroot-native' directories need to be preserved for runqemu to work correctly. Otherwise, when 'rm_work' is enabled, these directories are removed, thus causing errors when using runqemu .
[YOCTO #11266]
[YOCTO #11193]
--- meta/classes/image.bbclass | 1 + meta/conf/machine/include/qemu.inc | 3 +++ 2 files changed, 4 insertions(+)
meta/classes/image.bbclass +1 -0
@@ -8,6 +8,7 @@ inherit ${SDKEXTCLASS} TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}" TOOLCHAIN_TARGET_TASK_ATTEMPTONLY += "${PACKAGE_INSTALL_ATTEMPTONLY}" POPULATE_SDK_POST_TARGET_COMMAND += "rootfs_sysroot_relativelinks; " +RM_WORK_EXCLUDE_ITEMS_append = " ${IMAGE_RM_WORK_EXCLUDE_ITEMS}" LICENSE = "MIT" PACKAGES = ""
meta/conf/machine/include/qemu.inc +3 -0
@@ -29,3 +29,6 @@ KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc" MACHINE_EXTRA_RRECOMMENDS += "rng-tools" IMAGE_CLASSES += "qemuboot" + +# These two directories need to be preserved for runqemu to work well +IMAGE_RM_WORK_EXCLUDE_ITEMS = "recipe-sysroot recipe-sysroot-native"
Signature · 1 line
1.9.1
Quoted 31 lines · Chen Qi
The 'recipe-sysroot' and 'recipe-sysroot-native' directories need to be preserved for runqemu to work correctly. Otherwise, when '
rm_work' is enabled, these directories are removed, thus causing errors when using runqemu .[YOCTO #11266]
[YOCTO #11193]Signed-off-by Chen Qi <[email protected]>--- meta/classes/image.bbclass | 1 + meta/conf/machine/include/qemu.inc | 3 +++ 2 files changed, 4 insertions(+)meta/classes/image.bbclass +1
-0@@ -8,6 +8,7 @@ inherit ${SDKEXTCLASS} TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}" TOOLCHAIN_TARGET_TASK_ATTEMPTONLY += "${PACKAGE_INSTALL_ATTEMPTONLY}" POPULATE_SDK_POST_TARGET_COMMAND += "rootfs_sysroot_relativelinks; " +RM_WORK_EXCLUDE_ITEMS_append = " ${IMAGE_RM_WORK_EXCLUDE_ITEMS}" LICENSE = "MIT" PACKAGES = ""meta/conf/machine/include/qemu.inc +0
-0
meta/conf/machine/include/qemu.inc KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc" · line 34
Quoted 6 lines
meta/conf/machine/include/qemu.inc +3
-0@@ -29,3 +29,6 @@ KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc" MACHINE_EXTRA_RRECOMMENDS += "rng-tools" IMAGE_CLASSES += "qemuboot" + +# These two directories need to be preserved for runqemu to work well +IMAGE_RM_WORK_EXCLUDE_ITEMS = "recipe-sysroot recipe-sysroot-native"
Should this be setup by qemuboot.bbclass instead, so that it applies to any image/machine (even those that do not use qemu.inc) that is intended to be used by runqemu?
Regards,
Nathan
Quoted 42 lines · Nathan Rossi
Quoted 41 lines · Chen Qi
The 'recipe-sysroot' and 'recipe-sysroot-native' directories need to
be preserved for runqemu to work correctly. Otherwise, when 'rm_work'
is enabled, these directories are removed, thus causing errors when using runqemu .[YOCTO #11266]
[YOCTO #11193]Signed-off-by Chen Qi <[email protected]>---
meta/classes/image.bbclass | 1 +
meta/conf/machine/include/qemu.inc | 3 +++2 files changed, 4 insertions(+)meta/classes/image.bbclass +0
-0@@ -8,6 +8,7 @@ inherit ${SDKEXTCLASS}TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}"
TOOLCHAIN_TARGET_TASK_ATTEMPTONLY+= "${PACKAGE_INSTALL_ATTEMPTONLY}"POPULATE_SDK_POST_TARGET_COMMAND+= "rootfs_sysroot_relativelinks; "
+RM_WORK_EXCLUDE_ITEMS_append = " ${IMAGE_RM_WORK_EXCLUDE_ITEMS}"LICENSE = "MIT"
PACKAGES = ""meta/conf/machine/include/qemu.inc +0
-0@@ -29,3 +29,6 @@ KERNEL_FEATURES_append_pn-linux-yocto = "features/nfsd/nfsd-enable.scc"
MACHINE_EXTRA_RRECOMMENDS += "rng-tools"
Quoted 9 lines
Quoted 6 lines
IMAGE_CLASSES += "qemuboot"
meta/conf/machine/include/qemu.inc +2
-0+ +# These two directories need to be preserved for runqemu to workwell
+IMAGE_RM_WORK_EXCLUDE_ITEMS = "recipe-sysroot recipe-sysroot- native"Should this be setup by qemuboot.bbclass instead, so that it applies to any image/machine (even those that do not use qemu.inc) that is intended to be used by runqemu?
I'm trying to decide what the best approach here is. I'm thinking it might be better to:
a) make qemu builds depend on qemu-helper-native
b) make that preserve its native sysroot (not the target one).
c) have runqemu look at qemu-helper-native
I think that should solve problems and work better than the above?
Cheers,
Richard
Quoted 53 lines · Richard Purdie
Quoted 42 lines · Nathan Rossi
Quoted 41 lines · Chen Qi
The 'recipe-sysroot' and 'recipe-sysroot-native' directories need to
be preserved for runqemu to work correctly. Otherwise, when 'rm_work'
is enabled, these directories are removed, thus causing errors when using runqemu .[YOCTO #11266]
[YOCTO #11193]Signed-off-by Chen Qi <[email protected]>--- meta/classes/image.bbclass | 1 + meta/conf/machine/include/qemu.inc | 3 +++ 2 files changed, 4 insertions(+)meta/classes/image.bbclass +0
-0@@ -8,6 +8,7 @@ inherit ${SDKEXTCLASS} TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}" TOOLCHAIN_TARGET_TASK_ATTEMPTONLY +="${PACKAGE_INSTALL_ATTEMPTONLY}"
POPULATE_SDK_POST_TARGET_COMMAND+= "rootfs_sysroot_relativelinks;
"meta/classes/image.bbclass +1
-0+RM_WORK_EXCLUDE_ITEMS_append = " ${IMAGE_RM_WORK_EXCLUDE_ITEMS}" LICENSE = "MIT" PACKAGES = ""meta/conf/machine/include/qemu.inc +0
-0@@ -29,3 +29,6 @@ KERNEL_FEATURES_append_pn-linux-yocto = "features/nfsd/nfsd-enable.scc"
MACHINE_EXTRA_RRECOMMENDS+= "rng-tools"Quoted 9 lines
Quoted 6 lines
IMAGE_CLASSES+= "qemuboot"meta/conf/machine/include/qemu.inc +2
-0+ +# These two directories need to be preserved for runqemu to workwell
+IMAGE_RM_WORK_EXCLUDE_ITEMS = "recipe-sysroot recipe-sysroot- native"Should this be setup by qemuboot.bbclass instead, so that it applies to any image/machine (even those that do not use qemu.inc) that is intended to be used by runqemu?
Quoted 8 lines
I'm trying to decide what the best approach here is. I'm thinking it might be better to:
a) make qemu builds depend on qemu-helper-native
b) make that preserve its native sysroot (not the target one).
c) have runqemu look at qemu-helper-nativeI think that should solve problems and work better than the above?
That sounds like a good solution.
This would however change how meta-xilinx would need to handle providing an additional version of QEMU (for which it currently sets EXTRA_IMAGEDEPENDS, and subdirs the native binaries). But this change means that the custom QEMU version would be built for all QEMU targets (when the layer is used), although this is something that should be sorted out with runqemu now that it can be given a different sysroot (and a different sysroot can be built alongside). This would remove the need for the workarounds that were used to get runqemu to use the alternative QEMU in the first place. So your proposed solution works better in that regard as well (as meta-xilinx could provide an alternate qemu-helper-native for those qemu machines that use it).
Regards,
Nathan
Quoted 58 lines · Richard Purdie
Quoted 41 lines · Nathan Rossi
Quoted 40 lines · Chen Qi
The 'recipe-sysroot' and 'recipe-sysroot-native' directories need to
be preserved for runqemu to work correctly. Otherwise, when 'rm_work'
is enabled, these directories are removed, thus causing errors when using runqemu .[YOCTO #11266]
[YOCTO #11193]Signed-off-by Chen Qi <[email protected]>--- meta/classes/image.bbclass | 1 + meta/conf/machine/include/qemu.inc | 3 +++ 2 files changed, 4 insertions(+)meta/classes/image.bbclass +0
-0@@ -8,6 +8,7 @@ inherit ${SDKEXTCLASS} TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}" TOOLCHAIN_TARGET_TASK_ATTEMPTONLY +="${PACKAGE_INSTALL_ATTEMPTONLY}"
POPULATE_SDK_POST_TARGET_COMMAND+= "rootfs_sysroot_relativelinks;
"meta/classes/image.bbclass +1
-0+RM_WORK_EXCLUDE_ITEMS_append = " ${IMAGE_RM_WORK_EXCLUDE_ITEMS}" LICENSE = "MIT" PACKAGES = ""meta/conf/machine/include/qemu.inc +0
-0@@ -29,3 +29,6 @@ KERNEL_FEATURES_append_pn-linux-yocto = "features/nfsd/nfsd-enable.scc"
MACHINE_EXTRA_RRECOMMENDS+= "rng-tools"Quoted 9 lines
Quoted 6 lines
IMAGE_CLASSES+= "qemuboot"meta/conf/machine/include/qemu.inc +2
-0+ +# These two directories need to be preserved for runqemu to workwell
+IMAGE_RM_WORK_EXCLUDE_ITEMS = "recipe-sysroot recipe-sysroot- native"Should this be setup by qemuboot.bbclass instead, so that it applies to any image/machine (even those that do not use qemu.inc) that is intended to be used by runqemu?
I'm trying to decide what the best approach here is. I'm thinking it might be better to:
a) make qemu builds depend on qemu-helper-native
b) make that preserve its native sysroot (not the target one).
c) have runqemu look at qemu-helper-native
Quoted 6 lines
I think that should solve problems and work better than the above?
Cheers,
Richard
Hi Richard,
I've sent out a new patch series. The solution is a little bit different from the above.
As 'tunctl' is from qemu-helper-native, and 'qemu-xxx' is from qemu-native, I choose to have runqemu look at things under sysroots-components. The STAGING_DIR_NATIVE and STAGING_BINDIR_NATIVE logic is still preserved so that runqemu still works well in SDK.
I've used the following test cases for testing.
1) runqemu + rm_work
2) oe-selftest -r runqemu
3) runqemu + SDK
4) runqemu + Ext SDK
Best Regards,
Chen Qi