subtree updates

- Remove systemd patches for object-manager due to upstream fix.

meta-arm: 3b7347cd67..d5f132b199:
  Abdellatif El Khlifi (2):
        kas: corstone1000: set branches to langdale
        arm-bsp/documentation: corstone1000: 2022.11.10 RC: update the user guide

  Anton Antonov (1):
        arm-bsp/fvp-base: Enable virtio-rng support and unset preferred 5.15 kernel

  Emekcan (2):
        arm-bsp/trusted-services: add checks for null attributes in smm gateway
        arm-bsp/trusted-services: Fix GetNextVariable max_name_len in smm gateway

  Jon Mason (3):
        arm/sbsa-acs: update to the latest version
        arm/hafnium: cleanup the patches
        arm/gn: update to the latest SHA

  Luca Fancellu (1):
        arm,arm-bsp/recipes-kernel: don't use PN in arm-ffa-transport.inc

  Peter Hoyes (5):
        arm/fvp: Join cli arguments in verbose logging
        arm/lib: Factor out asyncio in FVPRunner
        arm/lib: Decouple console parsing from the FVPRunner
        arm/oeqa: Log the FVP output in OEFVPSSHTarget
        runfvp: Fix verbose output when using --console

  Ross Burton (1):
        arm/linux-arm64-ack: fix buildpaths in the perf Python module

  Rui Miguel Silva (3):
        arm/trusted-services: check before applying patches
        arm-bsp/trusted-services: psa test setup corstone1000
        arm-bsp/trusted-firmware-m: adjust ps assets for corstone1000

  Vishnu Banavath (2):
        arm-bsp/documentation: corstone1000: 2022.11.10 RC: update the release notes
        arm-bsp/documentation: corstone1000: 2022.11.10 RC: update the change log

meta-raspberrypi: a305f4804b..93dadf336c:
  Andrei Gherzan (2):
        ci: Bump actions/checkout to v3
        ci: Fix dco-check job with newer git versions

  Martin Jansa (1):
        raspberrypi4-64: drop DEFAULTTUNE assignment

poky: 482c493cf6..44bb88cc86:
  Alex Kiernan (1):
        rust: update 1.64.0 -> 1.65.0

  Alexander Kanavin (74):
        man-pages: upgrade 5.13 -> 6.01
        piglit: upgrade to latest revision
        lsof: upgrade 4.96.3 -> 4.96.4
        ffmpeg: upgrade 5.1.1 -> 5.1.2
        ccache: upgrade 4.6.3 -> 4.7.2
        python3-pip: upgrade 22.2.2 -> 22.3
        ltp: upgrade 20220527 -> 20220930
        alsa-utils: upgrade 1.2.7 -> 1.2.8
        alsa-ucm-conf: upgrade 1.2.7.2 -> 1.2.8
        libbsd: upgrade 0.11.6 -> 0.11.7
        libunistring: upgrade 1.0 -> 1.1
        puzzles: upgrade to latest revision
        libsoup: upgrade 3.2.0 -> 3.2.1
        linux-firmware: upgrade 20220913 -> 20221012
        python3-git: upgrade 3.1.28 -> 3.1.29
        xwayland: upgrade 22.1.3 -> 22.1.4
        strace: upgrade 5.19 -> 6.0
        python3-dtschema: upgrade 2022.8.3 -> 2022.9
        fontconfig: upgrade 2.14.0 -> 2.14.1
        python3-setuptools: upgrade 65.0.2 -> 65.5.0
        taglib: upgrade 1.12 -> 1.13
        nghttp2: upgrade 1.49.0 -> 1.50.0
        python3-wheel: upgrade 0.37.1 -> 0.38.0
        libffi: upgrade 3.4.2 -> 3.4.4
        libical: upgrade 3.0.15 -> 3.0.16
        mtd-utils: upgrade 2.1.4 -> 2.1.5
        repo: upgrade 2.29.3 -> 2.29.5
        libidn2: upgrade 2.3.3 -> 2.3.4
        makedepend: upgrade 1.0.6 -> 1.0.7
        diffoscope: upgrade 221 -> 224
        mmc-utils: upgrade to latest revision
        libsoup-2.4: upgrade 2.74.2 -> 2.74.3
        gdk-pixbuf: upgrade 2.42.9 -> 2.42.10
        harfbuzz: upgrade 5.3.0 -> 5.3.1
        netbase: upgrade 6.3 -> 6.4
        mpg123: upgrade 1.30.2 -> 1.31.1
        sudo: upgrade 1.9.11p3 -> 1.9.12
        alsa-lib: upgrade 1.2.7.2 -> 1.2.8
        pango: upgrade 1.50.10 -> 1.50.11
        pixman: upgrade 0.40.0 -> 0.42.2
        vulkan: upgrade 1.3.224.1 -> 1.3.231.1
        gstreamer1.0: upgrade 1.20.3 -> 1.20.4
        shaderc: upgrade 2022.2 -> 2022.3
        selftest: add a copy of previous mtd-utils version to meta-selftest
        python3: correctly adjust include paths in sysconfigdata
        vala: install vapigen-wrapper into /usr/bin/crosscripts and stage only that
        sanity.bbclass: do not check for presence of distutils
        pango: replace a recipe fix with an upstream submitted patch
        libpciaccess: update 0.16 -> 0.17
        libxinerama: update 1.1.4 -> 1.1.5
        libxkbfile: update 1.1.0 -> 1.1.1
        libxmu: update 1.1.3 -> 1.1.4
        libxrender: update 0.9.10 -> 0.9.11
        libxshmfence: update 1.3 -> 1.3.1
        libxtst: update 1.2.3 -> 1.2.4
        libxxf86vm: update 1.1.4 -> 1.1.5
        xcb-util: update to latest revisions
        xf86-input-vmmouse: update 13.1.0 -> 13.2.0
        gnomebase.bbclass: return the whole version for tarball directory if it is a number
        adwaita-icon-theme: update 42.0 -> 43
        libepoxy: convert to git
        libepoxy: update 1.5.9 -> 1.5.10
        rgb: update 1.0.6 -> 1.1.0
        meson: update 0.63.3 -> 0.64.0
        systemd: update 251.4 -> 251.8
        libxext: update 1.3.4 -> 1.3.5
        gettext: update 0.21 -> 0.21.1
        glib-2.0: update 2.72.3 -> 2.74.1
        glib-networking: update 2.72.2 -> 2.74.0
        readline: update 8.1.2 -> 8.2
        llvm: update 15.0.1 -> 15.0.4
        make: update 4.3 -> 4.4
        bash: update 5.1.16 -> 5.2.9
        mesa: do not rely on native llvm-config in target sysroot

  Atanas Bunchev (1):
        qemu.rst: audio: reference to Command-Line options

  Benjamin Szőke (1):
        image_types: Add 7-Zip support in conversion types and commands

  Changhyeok Bae (1):
        repo: upgrade 2.29.5 -> 2.29.9

  Chase Qi (1):
        libc-test: add libc testsuite for musl

  Christoph Lauer (1):
        populate_sdk_base: add zip options

  David Bagonyi (1):
        gpgme: Allow setuptools3-base to be excluded from the inherit list

  Diego Sueiro (1):
        kernel.bbclass: Include randstruct seed assets in STAGING_KERNEL_BUILDDIR

  Etienne Cordonnier (1):
        mirrors.bbclass: use shallow tarball for nativesdk-binutils

  Jordan Crouse (2):
        spirv-tools: Correctly set the prefix in exported cmake packages
        vulkan-loader: Allow headless targets to build the loader

  Jose Quaresma (3):
        sstatesig: skip the rm_work task signature
        rm_work: exclude the SSTATETASKS from the rm_work tasks sinature
        sstate: Allow optimisation of do_deploy_archives task dependencies

  Joshua Watt (2):
        classes: create-spdx: Move to version specific class
        scripts: convert-overrides: Allow command-line customizations

  Kai Kang (1):
        libuv: fixup SRC_URI

  Konrad Weihmann (1):
        create-spdx: default share_src for shared sources

  Lee Chee Yang (1):
        migration guides: add release notes for 4.0.5

  Leon Anavi (2):
        get_module_deps3.py: Check attribute '__file__'
        python3-manifest.json: Fix re in core

  Mark Asselstine (2):
        bitbake: data: drop unused __expand_var_regexp__ and __expand_python_regexp__
        bitbake: data_smart: allow python snippets to include a dictionary

  Markus Volk (4):
        webkitgtk: use libsoup-3.0 by default
        epiphany: use libsoup-3.0 by default
        gstreamer1.0-plugins-good: use libsoup-3.0 by default
        libinput: upgrade 1.19.4 -> 1.21.0

  Martin Jansa (1):
        cargo.bbclass: avoid calling which ${RUSTC} with undefined ${RUSTC}

  Michael Opdenacker (10):
        ref-manual: terms.rst: add SBOM and SPDX terms
        ref-manual: variables.rst: document spdx-create class variables
        dev-manual: common-tasks.rst: add section about SPDX / SBOM generation
        ref-manual: classes.rst: expand documentation of create-spdx class
        ref-manual: terms.rst: add reference to new SBOM/SPDX section in dev manual
        manuals: document "mime-xdg" class and MIME_XDG_PACKAGES
        manuals: add shortcut for Wikipedia links
        ref-manual/variables.rst: expand BB_NUMBER_THREADS description
        ref-manual/variables.rst: expand PARALLEL_MAKE description
        release-notes: use oe_git and yocto_git macros

  Nathan Rossi (4):
        oeqa/selftest/lic_checksum: Cleanup changes to emptytest include
        oeqa/selftest/minidebuginfo: Create selftest for minidebuginfo
        glibc-locale: Do not INHIBIT_DEFAULT_DEPS
        package: Fix handling of minidebuginfo with newer binutils

  Niko Mauno (1):
        systemd: Consider PACKAGECONFIG in RRECOMMENDS

  Paulo Neves (1):
        manuals: remove xterm requirements

  Pavel Zhukov (1):
        bitbake: gitsm: Fix regression in gitsm submodule path parsing

  Peter Kjellerstedt (1):
        pango: Make it build with ptest disabled

  Peter Marko (2):
        systemd: add group render to udev package
        meta-selftest/staticids: add render group for systemd

  Quentin Schulz (3):
        docs: ref-manual: classes: fix section name for github-releases
        docs: ref-manual: classes: add missing closing parenthesis
        docs: poky.yaml.in: remove pylint3 from Ubuntu/Debian host dependencies

  Richard Purdie (7):
        bitbake.conf: Drop export of SOURCE_DATE_EPOCH_FALLBACK
        gcc-shared-source: Fix source date epoch handling
        gcc-source: Fix gengtypes race
        gcc-source: Drop gengtype manipulation
        gcc-source: Ensure deploy_source_date_epoch sstate hash doesn't change
        sanity: Drop data finalize call
        bitbake: data/data_smart/build: Clean up datastore finalize/update_data references

  Robert Yang (1):
        bitbake: gitsm.py: process_submodules(): Set nobranch=1 for url

  Ross Burton (19):
        insane: add codeload.github.com to src-uri-bad check
        populate_sdk_ext: use ConfigParser instead of SafeConfigParser
        stress-ng: improve makefile use
        linux-firmware: don't put the firmware into the sysroot
        oeqa/qemurunner: update exception class for QMP API changes
        oeqa/core/decorator: add decorators to skip based on HOST_ARCH
        oeqa/selftest/buildoptions: skip test_read_only_image on qemuarm64
        oeqa/selftest/efibootpartition: improve test
        oeqa/selftest/imagefeatures: remove hardcoded MACHINE in test_image_gen_debugfs
        oeqa/selftest/imagefeatures: don't use wic images in test_hypervisor_fmts
        oeqa/selftest/imagefeatures: set a .wks in test_fs_types
        oeqa/selftest/overlayfs: overlayfs: skip x86-specific tests
        oeqa/selftest/package: generalise test_gdb_hardlink_debug()
        oeqa/selftest/package: improve test_preserve_ownership
        oeqa/selftest/runqemu: don't hardcode qemux86-64
        oeqa/selftest/runtime_test: only run the virgl tests on qemux86-64
        oeqa/selftest/wic: skip more tests on aarch64
        oeqa/selftest/wic: use skipIfNotArch instead of custom decorator
        classes/testexport: move to classes-recipe

  Sergei Zhmylev (1):
        wic: make ext2/3/4 images reproducible

  Tim Orling (4):
        python3-typing-extensions: upgrade 4.3.0 -> 4.4.0
        bitbake: toaster: fixtures/README: django 1.8 -> 3.2
        bitbake: toaster: fixtures/gen_fixtures.py: update branches
        bitbake: toaster: Add refreshed oe-core and poky fixtures

  Ulrich Ölmann (1):
        dev-manual: common-tasks.rst: fix typos

  Wang Mingyu (33):
        bind: upgrade 9.18.7 -> 9.18.8
        libedit: upgrade 20210910-3.1 -> 20221030-3.1
        mtools: upgrade 4.0.41 -> 4.0.42
        diffstat: upgrade 1.64 -> 1.65
        inetutils: upgrade 2.3 -> 2.4
        orc: upgrade 0.4.32 -> 0.4.33
        socat: upgrade 1.7.4.3 -> 1.7.4.4
        libxcrypt: upgrade 4.4.28 -> 4.4.30
        python3-babel: upgrade 2.10.3 -> 2.11.0
        python3-hatch-fancy-pypi-readme: upgrade 22.7.0 -> 22.8.0
        python3-hatchling upgrade: 1.11.0 -> 1.11.1
        gi-docgen: upgrade 2022.1 -> 2022.2
        libdrm: upgrade 2.4.113 -> 2.4.114
        mmc-utils: upgrade to latest revision
        mobile-broadband-provider-info: upgrade 20220725 -> 20221107
        libsdl2: upgrade 2.24.1 -> 2.24.2
        mesa: upgrade 22.2.2 -> 22.2.3
        python3-dtschema: upgrade 2022.9 -> 2022.11
        python3-flit-core: upgrade 3.7.1 -> 3.8.0
        python3-pip: update 22.3 -> 22.3.1
        python3-psutil: upgrade 5.9.3 -> 5.9.4
        python3-setuptools: upgrade 65.5.0 -> 65.5.1
        python3-sphinx-rtd-theme: upgrade 1.1.0 -> 1.1.1
        python3-subunit: upgrade 1.4.0 -> 1.4.1
        python3-wheel: upgrade 0.38.0 -> 0.38.4
        sed: update 4.8 -> 4.9
        sudo: upgrade 1.9.12 -> 1.9.12p1
        sysstat: upgrade 12.6.0 -> 12.6.1
        babeltrace: upgrade 1.5.8 -> 1.5.11
        iso-codes: upgrade 4.11.0 -> 4.12.0
        libsoup: upgrade 3.2.1 -> 3.2.2
        wayland-protocols: upgrade 1.27 -> 1.28
        xwayland: upgrade 22.1.4 -> 22.1.5

  zhengruoqin (5):
        python3-jsonschema: upgrade 4.16.0 -> 4.17.0
        python3-pyrsistent: upgrade 0.18.1 -> 0.19.2
        python3-numpy: upgrade 1.23.3 -> 1.23.4
        python3-sphinx-rtd-theme: upgrade 1.0.0 -> 1.1.0
        python3-pbr: upgrade 5.10.0 -> 5.11.0

meta-openembedded: 6ebff843cc..d04444509a:
  Armin Kuster (1):
        meta-oe][PATCH] gst-editing-services: fix typo in LICENSE field.

  Chen Pei (1):
        python3-brotli: Add new recipe for 1.0.9

  Kory Maincent (1):
        openocd: fix build error

  Leon Anavi (6):
        python3-automat: Upgrade 20.2.0 -> 22.10.0
        python3-asttokens: Upgrade 2.0.8 -> 2.1.0
        python3-zeroconf: Upgrade 0.39.2 -> 0.39.4
        python3-imageio: Upgrade 2.22.2 -> 2.22.3
        python3-httplib: Upgrade 0.20.4 -> 0.21.0
        python3-twisted: Upgrade 22.8.0 -> 22.10.0

  Markus Volk (6):
        pugixml: upgrade 1.12 -> 1.13
        geary: update 40.0 -> 43.0
        rest: upgrade 0.8.1 -> 0.9.0
        gnome-online-accounts: update 3.44.0 -> 3.46.0
        yelp: use libsoup-3.0 by default
        surf: use libsoup-3.0 by default

  Martin Jansa (1):
        monkey: use git fetcher

  Randy MacLeod (1):
        nftables: use automake ptest output format

  Sakib Sajal (1):
        minio: add recipe for minio client

  Tim Orling (5):
        libcompress-raw-bzip2-perl: upgrade 2.096 -> 2.201
        libcompress-raw-lzma-perl: upgrade 2.096 -> 2.201
        libcompress-raw-zlib-perl: upgrade 2.096 -> 2.202
        libio-compress-lzma-perl: upgrade 2.096 -> 2.201
        libio-compress-perl: upgrade 2.096 -> 2.201

  Wang Mingyu (43):
        python3-lazy-object-proxy: upgrade 1.7.1 -> 1.8.0
        python3-luma-oled: upgrade 3.8.1 -> 3.9.0
        python3-nmap: upgrade 1.5.4 -> 1.6.0
        python3-pint: upgrade 0.20 -> 0.20.1
        python3-protobuf: upgrade 4.21.8 -> 4.21.9
        python3-pytest-benchmark: upgrade 3.4.1 -> 4.0.0
        python3-pytest-html: upgrade 3.1.1 -> 3.2.0
        python3-pytest-xdist: upgrade 2.5.0 -> 3.0.2
        python3-requests-toolbelt: upgrade 0.10.0 -> 0.10.1
        python3-websockets: upgrade 10.3 -> 10.4
        fetchmail: Fix buildpaths warning.
        libxpresent: upgrade 1.0.0 -> 1.0.1
        xkbprint: upgrade 1.0.5 -> 1.0.6
        xmlsec1: upgrade 1.2.34 -> 1.2.36
        openwsman: Change download branch from master to main.
        hwdata: upgrade 0.363 -> 0.364
        lcms: upgrade 2.13.1 -> 2.14
        libdbd-sqlite-perl: upgrade 1.70 -> 1.72
        mosh: upgrade 1.3.2 -> 1.4.0
        xfstests: upgrade 2022.10.09 -> 2022.10.30
        ulogd2: upgrade 2.0.7 -> 2.0.8
        cli11: upgrade 2.3.0 -> 2.3.1
        ctags: upgrade 5.9.20221023.0 -> 5.9.20221106.0
        valijson: upgrade 0.7 -> 1.0
        openvpn: upgrade 2.5.7 -> 2.5.8
        poco: upgrade 1.12.3 -> 1.12.4
        poppler: upgrade 22.10.0 -> 22.11.0
        satyr: upgrade 0.39 -> 0.40
        ser1net: upgrade 4.3.8 -> 4.3.9
        stunnel: upgrade 5.66 -> 5.67
        wolfssl: upgrade 5.5.2 -> 5.5.3
        tio: upgrade 2.2 -> 2.3
        uhubctl: upgrade 2.4.0 -> 2.5.0
        zabbix: upgrade 6.2.3 -> 6.2.4
        python3-spidev: upgrade 3.5 -> 3.6
        python3-gevent: upgrade 22.10.1 -> 22.10.2
        python3-google-auth: upgrade 2.13.0 -> 2.14.0
        python3-greenlet: upgrade 1.1.3.post0 -> 2.0.0
        python3-robotframework: upgrade 6.0 -> 6.0.1
        python3-regex: upgrade 2022.9.13 -> 2022.10.31
        python3-pillow: upgrade 9.2.0 -> 9.3.0
        python3-paramiko: upgrade 2.11.0 -> 2.12.0
        python3-jsonref: upgrade 0.3.0 -> 1.0.1

  leimaohui (1):
        samba: Fix install conflict with multilib enabled.

  zhengrq.fnst@fujitsu.com (5):
        python3-sqlalchemy: upgrade 1.4.42 -> 1.4.43
        python3-websocket-client: upgrade 1.4.1 -> 1.4.2
        python3-termcolor: upgrade 2.0.1 -> 2.1.0
        python3-zopeinterface: upgrade 5.5.0 -> 5.5.1
        python3-tqdm: upgrade 4.64.0 -> 4.64.1

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I0a8f95b57a7b9433fe59a9055a4dae58694c1759
diff --git a/poky/meta/classes-recipe/testexport.bbclass b/poky/meta/classes-recipe/testexport.bbclass
new file mode 100644
index 0000000..0f0c561
--- /dev/null
+++ b/poky/meta/classes-recipe/testexport.bbclass
@@ -0,0 +1,180 @@
+# Copyright (C) 2016 Intel Corporation
+#
+# SPDX-License-Identifier: MIT
+#
+# testexport.bbclass allows to execute runtime test outside OE environment.
+# Most of the tests are commands run on target image over ssh.
+# To use it add testexport to global inherit and call your target image with -c testexport
+# You can try it out like this:
+# - First build an image. i.e. core-image-sato
+# - Add IMAGE_CLASSES += "testexport" in local.conf
+# - Then bitbake core-image-sato -c testexport. That will generate the directory structure
+#   to execute the runtime tests using runexported.py.
+#
+# For more information on TEST_SUITES check testimage class.
+
+inherit testimage
+
+TEST_LOG_DIR ?= "${WORKDIR}/testexport"
+TEST_EXPORT_DIR ?= "${TMPDIR}/testexport/${PN}"
+TEST_EXPORT_PACKAGED_DIR ?= "packages/packaged"
+TEST_EXPORT_EXTRACTED_DIR ?= "packages/extracted"
+
+TEST_TARGET ?= "simpleremote"
+TEST_TARGET_IP ?= ""
+TEST_SERVER_IP ?= ""
+
+require conf/testexport.conf
+
+TEST_EXPORT_SDK_ENABLED ?= "0"
+
+TEST_EXPORT_DEPENDS = ""
+TEST_EXPORT_DEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'cpio-native:do_populate_sysroot', '', d)}"
+TEST_EXPORT_DEPENDS += "${@bb.utils.contains('TEST_EXPORT_SDK_ENABLED', '1', 'testexport-tarball:do_populate_sdk', '', d)}"
+TEST_EXPORT_LOCK = "${TMPDIR}/testimage.lock"
+
+addtask testexport
+do_testexport[nostamp] = "1"
+do_testexport[depends] += "${TEST_EXPORT_DEPENDS} ${TESTIMAGEDEPENDS}"
+do_testexport[lockfiles] += "${TEST_EXPORT_LOCK}"
+
+python do_testexport() {
+    testexport_main(d)
+}
+
+def testexport_main(d):
+    import json
+    import logging
+
+    from oeqa.runtime.context import OERuntimeTestContext
+    from oeqa.runtime.context import OERuntimeTestContextExecutor
+
+    image_name = ("%s/%s" % (d.getVar('DEPLOY_DIR_IMAGE'),
+                             d.getVar('IMAGE_LINK_NAME')))
+
+    tdname = "%s.testdata.json" % image_name
+    td = json.load(open(tdname, "r"))
+
+    logger = logging.getLogger("BitBake")
+
+    target = OERuntimeTestContextExecutor.getTarget(
+        d.getVar("TEST_TARGET"), None, d.getVar("TEST_TARGET_IP"),
+        d.getVar("TEST_SERVER_IP"))
+
+    host_dumper = OERuntimeTestContextExecutor.getHostDumper(
+        d.getVar("testimage_dump_host"), d.getVar("TESTIMAGE_DUMP_DIR"))
+
+    image_manifest = "%s.manifest" % image_name
+    image_packages = OERuntimeTestContextExecutor.readPackagesManifest(image_manifest)
+
+    extract_dir = d.getVar("TEST_EXTRACTED_DIR")
+
+    tc = OERuntimeTestContext(td, logger, target, host_dumper,
+                              image_packages, extract_dir)
+
+    copy_needed_files(d, tc)
+
+def copy_needed_files(d, tc):
+    import shutil
+    import oe.path
+
+    from oeqa.utils.package_manager import _get_json_file
+    from oeqa.core.utils.test import getSuiteCasesFiles
+
+    export_path = d.getVar('TEST_EXPORT_DIR')
+    corebase_path = d.getVar('COREBASE')
+
+    # Clean everything before starting
+    oe.path.remove(export_path)
+    bb.utils.mkdirhier(os.path.join(export_path, 'lib', 'oeqa'))
+
+    # The source of files to copy are relative to 'COREBASE' directory
+    # The destination is relative to 'TEST_EXPORT_DIR'
+    # Because we are squashing the libraries, we need to remove
+    # the layer/script directory
+    files_to_copy = [ os.path.join('meta', 'lib', 'oeqa', 'core'),
+                      os.path.join('meta', 'lib', 'oeqa', 'runtime'),
+                      os.path.join('meta', 'lib', 'oeqa', 'files'),
+                      os.path.join('meta', 'lib', 'oeqa', 'utils'),
+                      os.path.join('scripts', 'oe-test'),
+                      os.path.join('scripts', 'lib', 'argparse_oe.py'),
+                      os.path.join('scripts', 'lib', 'scriptutils.py'), ]
+
+    for f in files_to_copy:
+        src = os.path.join(corebase_path, f)
+        dst = os.path.join(export_path, f.split('/', 1)[-1])
+        if os.path.isdir(src):
+            oe.path.copytree(src, dst)
+        else:
+            shutil.copy2(src, dst)
+
+    # Remove cases and just copy the ones specified
+    cases_path = os.path.join(export_path, 'lib', 'oeqa', 'runtime', 'cases')
+    oe.path.remove(cases_path)
+    bb.utils.mkdirhier(cases_path)
+    test_paths = get_runtime_paths(d)
+    test_modules = d.getVar('TEST_SUITES').split()
+    tc.loadTests(test_paths, modules=test_modules)
+    for f in getSuiteCasesFiles(tc.suites):
+        shutil.copy2(f, cases_path)
+        json_file = _get_json_file(f)
+        if json_file:
+            shutil.copy2(json_file, cases_path)
+
+    # Copy test data
+    image_name = ("%s/%s" % (d.getVar('DEPLOY_DIR_IMAGE'),
+                            d.getVar('IMAGE_LINK_NAME')))
+    image_manifest = "%s.manifest" % image_name
+    tdname = "%s.testdata.json" % image_name
+    test_data_path = os.path.join(export_path, 'data')
+    bb.utils.mkdirhier(test_data_path)
+    shutil.copy2(image_manifest, os.path.join(test_data_path, 'manifest'))
+    shutil.copy2(tdname, os.path.join(test_data_path, 'testdata.json'))
+
+    for subdir, dirs, files in os.walk(export_path):
+        for dir in dirs:
+            if dir == '__pycache__':
+                shutil.rmtree(os.path.join(subdir, dir))
+
+    # Create tar file for common parts of testexport
+    testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
+
+    # Copy packages needed for runtime testing
+    package_extraction(d, tc.suites)
+    test_pkg_dir = d.getVar("TEST_NEEDED_PACKAGES_DIR")
+    if os.path.isdir(test_pkg_dir) and os.listdir(test_pkg_dir):
+        export_pkg_dir = os.path.join(d.getVar("TEST_EXPORT_DIR"), "packages")
+        oe.path.copytree(test_pkg_dir, export_pkg_dir)
+        # Create tar file for packages needed by the DUT
+        testexport_create_tarball(d, "testexport_packages_%s.tar.gz" % d.getVar("MACHINE"), export_pkg_dir)
+
+    # Copy SDK
+    if d.getVar("TEST_EXPORT_SDK_ENABLED") == "1":
+        sdk_deploy = d.getVar("SDK_DEPLOY")
+        tarball_name = "%s.sh" % d.getVar("TEST_EXPORT_SDK_NAME")
+        tarball_path = os.path.join(sdk_deploy, tarball_name)
+        export_sdk_dir = os.path.join(d.getVar("TEST_EXPORT_DIR"),
+                                      d.getVar("TEST_EXPORT_SDK_DIR"))
+        bb.utils.mkdirhier(export_sdk_dir)
+        shutil.copy2(tarball_path, export_sdk_dir)
+
+        # Create tar file for the sdk
+        testexport_create_tarball(d, "testexport_sdk_%s.tar.gz" % d.getVar("SDK_ARCH"), export_sdk_dir)
+
+    bb.plain("Exported tests to: %s" % export_path)
+
+def testexport_create_tarball(d, tar_name, src_dir):
+
+    import tarfile
+
+    tar_path = os.path.join(d.getVar("TEST_EXPORT_DIR"), tar_name)
+    current_dir = os.getcwd()
+    src_dir = src_dir.rstrip('/')
+    dir_name = os.path.dirname(src_dir)
+    base_name = os.path.basename(src_dir)
+
+    os.chdir(dir_name)
+    tar = tarfile.open(tar_path, "w:gz")
+    tar.add(base_name)
+    tar.close()
+    os.chdir(current_dir)