Yocto 2.3
Move OpenBMC to Yocto 2.3(pyro).
Tested: Built and verified Witherspoon and Palmetto images
Change-Id: I50744030e771f4850afc2a93a10d3507e76d36bc
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Resolves: openbmc/openbmc#2461
diff --git a/import-layers/yocto-poky/meta-selftest/lib/devtool/bbpath.py b/import-layers/yocto-poky/meta-selftest/lib/devtool/bbpath.py
new file mode 100644
index 0000000..5e8ffb3
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/lib/devtool/bbpath.py
@@ -0,0 +1,44 @@
+import argparse
+
+already_loaded = False
+kept_context = None
+
+def plugin_name(filename):
+ return os.path.splitext(os.path.basename(filename))[0]
+
+def plugin_init(plugins):
+ global already_loaded
+ already_loaded = plugin_name(__file__) in (plugin_name(p.__name__) for p in plugins)
+
+def print_name(args, config, basepath, workspace):
+ print (__file__)
+
+def print_bbdir(args, config, basepath, workspace):
+ print (__file__.replace('/lib/devtool/bbpath.py',''))
+
+def print_registered(args, config, basepath, workspace):
+ global kept_context
+ print(kept_context.loaded)
+
+def multiloaded(args, config, basepath, workspace):
+ global already_loaded
+ print("yes" if already_loaded else "no")
+
+def register_commands(subparsers, context):
+ global kept_context
+ kept_context = context
+ if 'loaded' in context.__dict__:
+ context.loaded += 1
+ else:
+ context.loaded = 1
+
+ def addparser(name, helptxt, func):
+ parser = subparsers.add_parser(name, help=helptxt,
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ parser.set_defaults(func=func)
+ return parser
+
+ addparser('pluginfile', 'Print the filename of this plugin', print_name)
+ addparser('bbdir', 'Print the BBPATH directory of this plugin', print_bbdir)
+ addparser('count', 'How many times have this plugin been registered.', print_registered)
+ addparser('multiloaded', 'How many times have this plugin been initialized', multiloaded)
diff --git a/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.json b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/selftest.json
similarity index 100%
rename from import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.json
rename to import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/selftest.json
diff --git a/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/selftest.py b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/selftest.py
new file mode 100644
index 0000000..e4985a6
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/selftest.py
@@ -0,0 +1,73 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.cases.dnf import DnfTest
+from oeqa.utils.httpserver import HTTPService
+
+class Selftest(OERuntimeTestCase):
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_install_package(self):
+ """
+ Summary: Check basic package installation functionality.
+ Expected: 1. Before the test socat must be installed using scp.
+ 2. After the test socat must be uninstalled using ssh.
+ This can't be checked in this test.
+ Product: oe-core
+ Author: Mariano Lopez <mariano.lopez@intel.com>
+ """
+
+ (status, output) = self.target.run("socat -V")
+ self.assertEqual(status, 0, msg="socat is not installed")
+
+ @OETestDepends(['selftest.Selftest.test_install_package'])
+ def test_verify_uninstall(self):
+ """
+ Summary: Check basic package installation functionality.
+ Expected: 1. test_install_package must uninstall socat.
+ This test is just to verify that.
+ Product: oe-core
+ Author: Mariano Lopez <mariano.lopez@intel.com>
+ """
+
+ (status, output) = self.target.run("socat -V")
+ self.assertNotEqual(status, 0, msg="socat is still installed")
+
+
+class DnfSelftest(DnfTest):
+
+ @classmethod
+ def setUpClass(cls):
+ cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-rootfs-repo'),
+ cls.tc.target.server_ip)
+ cls.repo_server.start()
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.repo_server.stop()
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_verify_package_feeds(self):
+ """
+ Summary: Check correct setting of PACKAGE_FEED_URIS var
+ Expected: 1. Feeds were correctly set for dnf
+ 2. Update recovers packages from host's repo
+ Author: Humberto Ibarra <humberto.ibarra.lopez@intel.com>
+ Author: Alexander Kanavin <alexander.kanavin@intel.com>
+ """
+ # When we created an image, we had to supply fake ip and port
+ # for the feeds. Now we can patch the real ones into the config file.
+ import tempfile
+ temp_file = tempfile.TemporaryDirectory(prefix="oeqa-remotefeeds-").name
+ self.tc.target.copyFrom("/etc/yum.repos.d/oe-remote-repo.repo", temp_file)
+ fixed_config = open(temp_file, "r").read().replace("bogus_ip", self.tc.target.server_ip).replace("bogus_port", str(self.repo_server.port))
+ open(temp_file, "w").write(fixed_config)
+ self.tc.target.copyTo(temp_file, "/etc/yum.repos.d/oe-remote-repo.repo")
+
+ import re
+ output_makecache = self.dnf('makecache')
+ self.assertTrue(re.match(r".*Metadata cache created", output_makecache, re.DOTALL) is not None, msg = "dnf makecache failed: %s" %(output_makecache))
+
+ output_repoinfo = self.dnf('repoinfo')
+ matchobj = re.match(r".*Repo-pkgs\s*:\s*(?P<n_pkgs>[0-9]+)", output_repoinfo, re.DOTALL)
+ self.assertTrue(matchobj is not None, msg = "Could not find the amount of packages in dnf repoinfo output: %s" %(output_repoinfo))
+ self.assertTrue(int(matchobj.group('n_pkgs')) > 0, msg = "Amount of remote packages is not more than zero: %s\n" %(output_repoinfo))
diff --git a/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.py b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.py
deleted file mode 100644
index a7e58ab..0000000
--- a/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/selftest.py
+++ /dev/null
@@ -1,55 +0,0 @@
-import os
-
-from oeqa.oetest import oeRuntimeTest, skipModule
-from oeqa.utils.commands import runCmd
-from oeqa.utils.decorators import *
-
-class Selftest(oeRuntimeTest):
-
- @skipUnlessPassed("test_ssh")
- @tag("selftest_package_install")
- def test_install_package(self):
- """
- Summary: Check basic package installation functionality.
- Expected: 1. Before the test socat must be installed using scp.
- 2. After the test socat must be unistalled using ssh.
- This can't be checked in this test.
- Product: oe-core
- Author: Mariano Lopez <mariano.lopez@intel.com>
- """
-
- (status, output) = self.target.run("socat -V")
- self.assertEqual(status, 0, msg="socat is not installed")
-
- @skipUnlessPassed("test_install_package")
- @tag("selftest_package_install")
- def test_verify_unistall(self):
- """
- Summary: Check basic package installation functionality.
- Expected: 1. test_install_package must unistall socat.
- This test is just to verify that.
- Product: oe-core
- Author: Mariano Lopez <mariano.lopez@intel.com>
- """
-
- (status, output) = self.target.run("socat -V")
- self.assertNotEqual(status, 0, msg="socat is still installed")
-
- @tag("selftest_sdk")
- def test_sdk(self):
-
- result = runCmd("env -0")
- sdk_path = search_sdk_path(result.output)
- self.assertTrue(sdk_path, msg="Can't find SDK path")
-
- tar_cmd = os.path.join(sdk_path, "tar")
- result = runCmd("%s --help" % tar_cmd)
-
-def search_sdk_path(env):
- for line in env.split("\0"):
- (key, _, value) = line.partition("=")
- if key == "PATH":
- for path in value.split(":"):
- if "pokysdk" in path:
- return path
- return ""
diff --git a/import-layers/yocto-poky/meta-selftest/lib/recipetool/bbpath.py b/import-layers/yocto-poky/meta-selftest/lib/recipetool/bbpath.py
new file mode 100644
index 0000000..783b2dc
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/lib/recipetool/bbpath.py
@@ -0,0 +1,41 @@
+import argparse
+
+already_loaded = False
+register_count = 0
+
+def plugin_name(filename):
+ return os.path.splitext(os.path.basename(filename))[0]
+
+def plugin_init(plugins):
+ global already_loaded
+ already_loaded = plugin_name(__file__) in (plugin_name(p.__name__) for p in plugins)
+
+def print_name(opts):
+ print (__file__)
+
+def print_bbdir(opts):
+ print (__file__.replace('/lib/recipetool/bbpath.py',''))
+
+def print_registered(opts):
+ #global kept_context
+ #print(kept_context.loaded)
+ print ("1")
+
+def multiloaded(opts):
+ global already_loaded
+ print("yes" if already_loaded else "no")
+
+def register_commands(subparsers):
+ global register_count
+ register_count += 1
+
+ def addparser(name, helptxt, func):
+ parser = subparsers.add_parser(name, help=helptxt,
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+ parser.set_defaults(func=func)
+ return parser
+
+ addparser('pluginfile', 'Print the filename of this plugin', print_name)
+ addparser('bbdir', 'Print the BBPATH directory of this plugin', print_bbdir)
+ addparser('count', 'How many times have this plugin been registered.', print_registered)
+ addparser('multiloaded', 'How many times have this plugin been initialized', multiloaded)
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
index 20a0ab7..073cf56 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
@@ -14,6 +14,8 @@
SRC_URI[md5sum] = "e66a9c9af6a60dc46134fdacf6ce97d7"
SRC_URI[sha256sum] = "f52583a83a63633701c5f71db3dc40aab87b7f76b29723aeb27941eff42df6e1"
+EXCLUDE_FROM_WORLD = "1"
+
PACKAGECONFIG ??= ""
PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses"
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/container-image/container-image-testpkg.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/container-image/container-image-testpkg.bb
new file mode 100644
index 0000000..f8dd229
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/container-image/container-image-testpkg.bb
@@ -0,0 +1,8 @@
+LICENSE = "MIT"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+do_install_append() {
+ install -d ${D}${bindir}
+ touch ${D}${bindir}/theapp
+}
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/container-image/container-test-image.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/container-image/container-test-image.bb
new file mode 100644
index 0000000..d5f939c
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/container-image/container-test-image.bb
@@ -0,0 +1,8 @@
+IMAGE_INSTALL += "container-image-testpkg"
+
+LICENSE = "MIT"
+
+IMAGE_FSTYPES = "container"
+IMAGE_LINGUAS = ""
+
+inherit core-image
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly.bb
new file mode 100644
index 0000000..3f7123c
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly.bb
@@ -0,0 +1,7 @@
+LICENSE = "CLOSED"
+INHIBIT_DEFAULT_DEPS = "1"
+
+SRC_URI = "file://file1 \
+ file://file2"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly/file1 b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly/file1
new file mode 100644
index 0000000..f4bdcfc
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly/file1
@@ -0,0 +1 @@
+The first file
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly/file2 b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly/file2
new file mode 100644
index 0000000..a7e2414
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-localonly/file2
@@ -0,0 +1 @@
+The second file
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-patch-gz.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-patch-gz.bb
new file mode 100644
index 0000000..e45ee9f
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-patch-gz.bb
@@ -0,0 +1,17 @@
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libxres libxext virtual/libx11 ncurses"
+
+SRC_URI = "http://downloads.yoctoproject.org/releases/xrestop/xrestop-0.4.tar.gz \
+ file://readme.patch.gz \
+ "
+
+S = "${WORKDIR}/xrestop-0.4"
+
+SRC_URI[md5sum] = "d8a54596cbaf037e62b80c4585a3ca9b"
+SRC_URI[sha256sum] = "67c2fc94a7ecedbaae0d1837e82e93d1d98f4a6d759828860e552119af3ce257"
+
+inherit autotools pkgconfig
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-patch-gz/readme.patch.gz b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-patch-gz/readme.patch.gz
new file mode 100644
index 0000000..4752492
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-patch-gz/readme.patch.gz
Binary files differ
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir.bb
new file mode 100644
index 0000000..3f69565
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir.bb
@@ -0,0 +1,9 @@
+LICENSE = "CLOSED"
+INHIBIT_DEFAULT_DEPS = "1"
+
+SRC_URI = "file://devtool-test-subdir.tar.gz \
+ file://testfile;subdir=${BPN}"
+
+S = "${WORKDIR}/${BPN}"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir/devtool-test-subdir.tar.gz b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir/devtool-test-subdir.tar.gz
new file mode 100644
index 0000000..3d44f80
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir/devtool-test-subdir.tar.gz
Binary files differ
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir/testfile b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir/testfile
new file mode 100644
index 0000000..12b519c
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-test-subdir/testfile
@@ -0,0 +1 @@
+Modified version
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test1_1.5.3.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test1_1.5.3.bb
index e93b0d5..4049be2 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test1_1.5.3.bb
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test1_1.5.3.bb
@@ -12,5 +12,7 @@
S = "${WORKDIR}/pv-${PV}"
+EXCLUDE_FROM_WORLD = "1"
+
inherit autotools
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test1_1.5.3.bb.upgraded b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test1_1.5.3.bb.upgraded
index afcc4aa..42c0705 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test1_1.5.3.bb.upgraded
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test1_1.5.3.bb.upgraded
@@ -10,5 +10,7 @@
S = "${WORKDIR}/pv-${PV}"
+EXCLUDE_FROM_WORLD = "1"
+
inherit autotools
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb
index 9bfce0a..450636e 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb
@@ -15,4 +15,6 @@
S = "${WORKDIR}/git"
+EXCLUDE_FROM_WORLD = "1"
+
inherit autotools pkgconfig
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded
index 9b947ed..0d2e19e 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded
@@ -14,4 +14,6 @@
S = "${WORKDIR}/git"
+EXCLUDE_FROM_WORLD = "1"
+
inherit autotools pkgconfig
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/error/error.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/error/error.bb
index a7bdecf..3c22e7c 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/error/error.bb
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/error/error.bb
@@ -1,7 +1,6 @@
SUMMARY = "Error Test case that fails on do_compile"
DESCRIPTION = "This generates a compile time error to be used to for testing."
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
INHIBIT_DEFAULT_DEPS = "1"
EXCLUDE_FROM_WORLD = "1"
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/images/oe-selftest-image.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/images/oe-selftest-image.bb
index f17094c..5d4d10e 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/images/oe-selftest-image.bb
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/images/oe-selftest-image.bb
@@ -1,6 +1,6 @@
SUMMARY = "An image used during oe-selftest tests"
-IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} dropbear"
+IMAGE_INSTALL = "packagegroup-core-boot dropbear"
IMAGE_FEATURES = "debug-tweaks"
IMAGE_LINGUAS = " "
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.bb
index 9e93b8e..e1da203 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.bb
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.bb
@@ -2,18 +2,14 @@
SRC_URI = "file://${FILE_DIRNAME}/${BPN}.wks"
-IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP}"
+IMAGE_INSTALL = "packagegroup-core-boot"
IMAGE_FSTYPES = "wic"
-DEPENDS = "syslinux syslinux-native dosfstools-native mtools-native gptfdisk-native"
+WKS_FILE_DEPENDS = "syslinux syslinux-native dosfstools-native mtools-native gptfdisk-native"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-# core-image-minimal is referenced in .wks, so we need its rootfs
-# to be ready before our rootfs
-do_rootfs[depends] += "core-image-minimal:do_image core-image-minimal:do_rootfs_wicenv"
-
IMAGE_ROOTFS_EXTRA_SPACE = "2000"
inherit image
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.wks b/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.wks
index d55075d..9410b68 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.wks
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/images/wic-image-minimal.wks
@@ -2,9 +2,8 @@
# long-description: This image contains boot partition and 3 rootfs partitions
# created from core-image-minimal and wic-image-minimal image recipes.
-part /boot --source bootimg-pcbios --ondisk vda --label boot --active --align 1024
-part / --source rootfs --ondisk vda --fstype=ext4 --label platform --align 1024 --use-uuid
-part /mnt --source rootfs --rootfs-dir=core-image-minimal --ondisk vda --fstype=ext4 --label core --align 1024
-part backup --source rootfs --rootfs-dir=wic-image-minimal --ondisk vda --fstype=ext4 --label backup --align 1024
+part /boot --source bootimg-pcbios --ondisk sda --label boot --active --align 1024
+part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --use-uuid
+part /mnt --source rootfs --rootfs-dir=wic-image-minimal --ondisk sda --fstype=ext4 --label core --align 1024
bootloader --ptable gpt --timeout=0 --append="rootwait console=tty0"
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/m4/m4_1.4.17.bbappend b/import-layers/yocto-poky/meta-selftest/recipes-test/m4/m4_%.bbappend
similarity index 100%
rename from import-layers/yocto-poky/meta-selftest/recipes-test/m4/m4_1.4.17.bbappend
rename to import-layers/yocto-poky/meta-selftest/recipes-test/m4/m4_%.bbappend
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/postinst/postinst_1.0.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/postinst/postinst_1.0.bb
new file mode 100644
index 0000000..6d49734
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/postinst/postinst_1.0.bb
@@ -0,0 +1,126 @@
+LICENSE = "MIT"
+ALLOW_EMPTY_${PN}-at-rootfs = "1"
+ALLOW_EMPTY_${PN}-delayed-a = "1"
+ALLOW_EMPTY_${PN}-delayed-b = "1"
+ALLOW_EMPTY_${PN}-delayed-d = "1"
+ALLOW_EMPTY_${PN}-delayed-p = "1"
+ALLOW_EMPTY_${PN}-delayed-t = "1"
+
+PACKAGES += "${PN}-at-rootfs ${PN}-delayed-a ${PN}-delayed-b ${PN}-delayed-d ${PN}-delayed-p ${PN}-delayed-t"
+PROVIDES += "${PN}-at-rootfs ${PN}-delayed-a ${PN}-delayed-b ${PN}-delayed-d ${PN}-delayed-p ${PN}-delayed-t"
+FILES_${PN}-delayed-a = ""
+FILES_${PN}-delayed-b = ""
+FILES_${PN}-delayed-d = ""
+FILES_${PN}-delayed-p = ""
+FILES_${PN}-delayed-t = ""
+
+# Runtime dependencies
+RDEPENDS_${PN}-delayed-a = "${PN}-at-rootfs"
+RDEPENDS_${PN}-delayed-b = "${PN}-delayed-a"
+RDEPENDS_${PN}-delayed-d = "${PN}-delayed-b"
+RDEPENDS_${PN}-delayed-p = "${PN}-delayed-d"
+RDEPENDS_${PN}-delayed-t = "${PN}-delayed-p"
+
+# Main recipe post-install
+pkg_postinst_${PN}-at-rootfs () {
+ tfile="/etc/postinsta-test"
+ touch "$D"/this-was-created-at-rootfstime
+ if test "x$D" != "x" then
+ # Need to run on first boot
+ exit 1
+ else
+ echo "lets write postinst" > $tfile
+ fi
+}
+
+# Dependency recipes post-installs
+pkg_postinst_${PN}-delayed-a () {
+ efile="/etc/postinst-test"
+ tfile="/etc/postinsta-test"
+ rdeps="postinst"
+
+ if test "x$D" != "x"; then
+ # Need to run on first boot
+ exit 1
+ else
+ touch /etc/this-was-created-at-first-boot
+ if test -e $efile ; then
+ echo 'success' > $tfile
+ else
+ echo 'fail to install $rdeps first!' >&2
+ exit 1
+ fi
+ fi
+}
+
+pkg_postinst_${PN}-delayed-b () {
+ efile="/etc/postinsta-test"
+ tfile="/etc/postinstb-test"
+ rdeps="postinsta"
+
+ if test "x$D" != "x"; then
+ # Need to run on first boot
+ exit 1
+ else
+ if test -e $efile ; then
+ echo 'success' > $tfile
+ else
+ echo 'fail to install $rdeps first!' >&2
+ exit 1
+ fi
+ fi
+}
+
+pkg_postinst_${PN}-delayed-d () {
+ efile="/etc/postinstb-test"
+ tfile="/etc/postinstd-test"
+ rdeps="postinstb"
+
+ if test "x$D" != "x"; then
+ # Need to run on first boot
+ exit 1
+ else
+ if test -e $efile ; then
+ echo 'success' > $tfile
+ else
+ echo 'fail to install $rdeps first!' >&2
+ exit 1
+ fi
+ fi
+}
+
+pkg_postinst_${PN}-delayed-p () {
+ efile="/etc/postinstd-test"
+ tfile="/etc/postinstp-test"
+ rdeps="postinstd"
+
+ if test "x$D" != "x"; then
+ # Need to run on first boot
+ exit 1
+ else
+ if test -e $efile ; then
+ echo 'success' > $tfile
+ else
+ echo 'fail to install $rdeps first!' >&2
+ exit 1
+ fi
+ fi
+}
+
+pkg_postinst_${PN}-delayed-t () {
+ efile="/etc/postinstp-test"
+ tfile="/etc/postinstt-test"
+ rdeps="postinstp"
+
+ if test "x$D" != "x"; then
+ # Need to run on first boot
+ exit 1
+ else
+ if test -e $efile ; then
+ echo 'success' > $tfile
+ else
+ echo 'fail to install $rdeps first!' >&2
+ exit 1
+ fi
+ fi
+}
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb
index 7d0a040..7375c47 100644
--- a/import-layers/yocto-poky/meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb
@@ -15,6 +15,8 @@
file://selftest-replaceme-inst-todir-globfile \
file://selftest-replaceme-inst-func"
+EXCLUDE_FROM_WORLD = "1"
+
install_extrafunc() {
install -m 0644 ${WORKDIR}/selftest-replaceme-inst-func ${D}${datadir}/selftest-replaceme-inst-func
}
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb
new file mode 100644
index 0000000..8e0d1cd
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Line-oriented text editor -- selftest GPLv2 version"
+HOMEPAGE = "http://www.gnu.org/software/ed/"
+SECTION = "base"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6ddd5335ef96fb858a138230af773710 \
+ file://main.c;beginline=1;endline=17;md5=36d4b85e5ae9028e918d1cc775c2475e"
+
+PR = "r2"
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/ed/ed-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "4ee21e9dcc9b5b6012c23038734e1632"
+SRC_URI[sha256sum] = "edef2bbde0fbf0d88232782a0eded323f483a0519d6fde9a3b1809056fd35f3e"
+
+inherit autotools texinfo
+
+S = "${WORKDIR}/ed-${PV}"
+
+EXTRA_OECONF = "'CC=${CC}' 'CXX=${CXX}' 'CFLAGS=${CFLAGS}' 'CXXFLAGS=${CXXFLAGS}' 'CPPFLAGS=${CPPFLAGS}' 'LDFLAGS=${LDFLAGS}'"
+
+CONFIGUREOPTS_remove = "--disable-dependency-tracking"
+CONFIGUREOPTS_remove = "--disable-silent-rules"
+EXTRA_OECONF_remove = "--disable-static"
diff --git a/import-layers/yocto-poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb b/import-layers/yocto-poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb
new file mode 100644
index 0000000..62931c4
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Line-oriented text editor -- selftest variant"
+HOMEPAGE = "http://www.gnu.org/software/ed/"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7 \
+ file://ed.h;endline=20;md5=4e36b7a40e137f42aee718165590d125 \
+ file://main.c;endline=17;md5=c5b8f78f115df187af76868a2aead16a"
+
+SECTION = "base"
+
+# LSB states that ed should be in /bin/
+bindir = "${base_bindir}"
+
+SRC_URI = "${GNU_MIRROR}/ed/ed-${PV}.tar.lz"
+
+SRC_URI[md5sum] = "7f4a54fa7f366479f03654b8af645fd0"
+SRC_URI[sha256sum] = "ffb97eb8f2a2b5a71a9b97e3872adce953aa1b8958e04c5b7bf11d556f32552a"
+
+S = "${WORKDIR}/ed-${PV}"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+inherit texinfo
+
+do_configure() {
+ ${S}/configure
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+ # Info dir listing isn't interesting at this point so remove it if it exists.
+ if [ -e "${D}${infodir}/dir" ]; then
+ rm -f ${D}${infodir}/dir
+ fi
+}
diff --git a/import-layers/yocto-poky/meta-selftest/wic/test_rawcopy_plugin.wks.in b/import-layers/yocto-poky/meta-selftest/wic/test_rawcopy_plugin.wks.in
new file mode 100644
index 0000000..83be4be
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/wic/test_rawcopy_plugin.wks.in
@@ -0,0 +1,6 @@
+# short-description: This file is used in oe-selftest wic module to test rawcopy plugin
+
+part /boot --active --source bootimg-pcbios
+part / --source rawcopy --sourceparams="file=core-image-minimal-${MACHINE}.ext4" --use-uuid
+
+bootloader --timeout=0 --append="console=ttyS0,115200n8"
diff --git a/import-layers/yocto-poky/meta-selftest/wic/wictestdisk.wks b/import-layers/yocto-poky/meta-selftest/wic/wictestdisk.wks
new file mode 100644
index 0000000..d4de24d
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/wic/wictestdisk.wks
@@ -0,0 +1,7 @@
+# short-description: image for use in machine agnostic wic test cases
+
+# /boot is intentionally an empty partition
+part /boot --ondisk sda --label boot --active --align 1024 --size 16
+part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --use-uuid
+
+# bootloader is intentionally left out