Yocto 2.4

Move OpenBMC to Yocto 2.4(rocko)

Tested: Built and verified Witherspoon and Palmetto images
Change-Id: I12057b18610d6fb0e6903c60213690301e9b0c67
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/import-layers/yocto-poky/meta-selftest/conf/layer.conf b/import-layers/yocto-poky/meta-selftest/conf/layer.conf
index a847b78..2a71895 100644
--- a/import-layers/yocto-poky/meta-selftest/conf/layer.conf
+++ b/import-layers/yocto-poky/meta-selftest/conf/layer.conf
@@ -8,3 +8,5 @@
 BBFILE_COLLECTIONS += "selftest"
 BBFILE_PATTERN_selftest = "^${LAYERDIR}/"
 BBFILE_PRIORITY_selftest = "5"
+
+LAYERSERIES_COMPAT_selftest = "rocko"
diff --git a/import-layers/yocto-poky/meta-selftest/files/signing/key.passphrase b/import-layers/yocto-poky/meta-selftest/files/signing/key.passphrase
new file mode 100644
index 0000000..5271a52
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/files/signing/key.passphrase
@@ -0,0 +1 @@
+test123
diff --git a/import-layers/yocto-poky/meta-selftest/files/static-group b/import-layers/yocto-poky/meta-selftest/files/static-group
new file mode 100644
index 0000000..9213b8e
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/files/static-group
@@ -0,0 +1,14 @@
+messagebus:x:500:
+systemd-bus-proxy:x:501:
+systemd-network:x:502:
+systemd-resolve:x:503:
+systemd-timesync:x:504:
+polkitd:x:505:
+lock:x:506:
+systemd-journal:x:507:
+netdev:x:508:
+avahi:x:509:
+avahi-autoipd:x:510:
+rpc:x:511:
+rpcuser:x:513:
+
diff --git a/import-layers/yocto-poky/meta-selftest/files/static-passwd b/import-layers/yocto-poky/meta-selftest/files/static-passwd
new file mode 100644
index 0000000..412f85d
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/files/static-passwd
@@ -0,0 +1,11 @@
+messagebus:x:500:500::/var/lib/dbus:/bin/false
+systemd-bus-proxy:x:501:501::/:/bin/nologin
+systemd-network:x:502:502::/:/bin/nologin
+systemd-resolve:x:503:503::/:/bin/nologin
+systemd-timesync:x:504:504::/:/bin/nologin
+polkitd:x:505:505::/:/bin/nologin
+avahi:x:509:509::/:/bin/nologin
+avahi-autoipd:x:510:510::/:/bin/nologin
+rpc:x:511:511::/:/bin/nologin
+distcc:x:512:nogroup::/:/bin/nologin
+rpcuser:x:513:513::/var/lib/nfs:/bin/nologin
diff --git a/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
new file mode 100644
index 0000000..81c50ed
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
@@ -0,0 +1,47 @@
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.cases.dnf import DnfTest
+from oeqa.utils.httpserver import HTTPService
+
+class DnfSelftest(DnfTest):
+
+    @classmethod
+    def setUpClass(cls):
+        import tempfile
+        cls.temp_dir = tempfile.TemporaryDirectory(prefix="oeqa-remotefeeds-")
+        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()
+        cls.temp_dir.cleanup()
+
+    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
+    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.
+        temp_file = os.path.join(self.temp_dir.name, 'tmp.repo')
+        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))
+        with open(temp_file, "w") as f:
+            f.write(fixed_config)
+        self.tc.target.copyTo(temp_file, "/etc/yum.repos.d/oe-remote-repo.repo")
+
+        import re
+        # Use '-y' for non-interactive mode: automatically import the feed signing key
+        output_makecache = self.dnf('-vy makecache')
+        self.assertTrue(re.match(r".*Failed to synchronize cache", output_makecache, re.DOTALL) is None, msg = "dnf makecache failed to synchronize repo: %s" %(output_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('-v 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/cases/selftest.py b/import-layers/yocto-poky/meta-selftest/lib/oeqa/runtime/cases/selftest.py
index e4985a6..19de740 100644
--- 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
@@ -1,7 +1,5 @@
 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):
 
@@ -31,43 +29,3 @@
 
         (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/selftest/cases/external-layer.py b/import-layers/yocto-poky/meta-selftest/lib/oeqa/selftest/cases/external-layer.py
new file mode 100644
index 0000000..59b1afa
--- /dev/null
+++ b/import-layers/yocto-poky/meta-selftest/lib/oeqa/selftest/cases/external-layer.py
@@ -0,0 +1,16 @@
+#from oeqa.selftest.base import oeSelfTest
+from oeqa.selftest.case import OESelftestTestCase
+#from oeqa.utils.decorators import testcase
+
+
+class ImportedTests(OESelftestTestCase):
+
+    def test_unconditional_pass(self):
+        """
+        Summary: Doesn't check anything, used to check import test from other layers.
+        Expected: 1. Pass unconditionally
+        Product: oe-core
+        Author: Mariano Lopez <mariano.lopez@intel.com
+        """
+
+        self.assertEqual(True, True, msg = "Impossible to fail this test")
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
index e45ee9f..fc37995 100644
--- 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
@@ -6,6 +6,7 @@
 SRC_URI = "http://downloads.yoctoproject.org/releases/xrestop/xrestop-0.4.tar.gz \
            file://readme.patch.gz \
            "
+UPSTREAM_VERSION_UNKNOWN = "1"
 
 S = "${WORKDIR}/xrestop-0.4"
 
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 4049be2..333ecac 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
@@ -4,6 +4,8 @@
 
 SRC_URI = "http://www.ivarch.com/programs/sources/pv-${PV}.tar.gz \
            file://0001-Add-a-note-line-to-the-quick-reference.patch"
+UPSTREAM_CHECK_URI = "http://www.ivarch.com/programs/pv.shtml"
+RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
 
 SRC_URI[md5sum] = "9365d86bd884222b4bf1039b5a9ed1bd"
 SRC_URI[sha256sum] = "681bcca9784bf3cb2207e68236d1f68e2aa7b80f999b5750dc77dcd756e81fbc"
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 42c0705..9d94f67 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
@@ -4,6 +4,8 @@
 
 SRC_URI = "http://www.ivarch.com/programs/sources/pv-${PV}.tar.gz \
            file://0001-Add-a-note-line-to-the-quick-reference.patch"
+UPSTREAM_CHECK_URI = "http://www.ivarch.com/programs/pv.shtml"
+RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
 
 SRC_URI[md5sum] = "062bca5ff33df1dd09472e7fc3bbe332"
 SRC_URI[sha256sum] = "9dd45391806b0ed215abee4c5ac1597d018c386fe9c1f5afd2f6bc3b07fd82c3"
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 450636e..07b8327 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
@@ -12,6 +12,8 @@
 PR = "r2"
 
 SRC_URI = "git://git.yoctoproject.org/dbus-wait"
+UPSTREAM_CHECK_COMMITS = "1"
+RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
 
 S = "${WORKDIR}/git"
 
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 0d2e19e..32ec4b1 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
@@ -11,6 +11,8 @@
 PV = "0.1+git${SRCPV}"
 
 SRC_URI = "git://git.yoctoproject.org/dbus-wait"
+UPSTREAM_CHECK_COMMITS = "1"
+RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
 
 S = "${WORKDIR}/git"