summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2020-04-20 17:19:11 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-05-07 13:03:30 +0100
commit21684e6c836fc3a85b19b44d1a1cd04889711f09 (patch)
tree6ca36243c0f3617308f3e60110f4ec4875ed6053
parent1246049541633a89e34657657792eb72dab9b6b9 (diff)
downloadpoky-21684e6c836fc3a85b19b44d1a1cd04889711f09.tar.gz
oeqa/selftest: Add test for conflicting sysroot provider
sysroot-test depends on virtual/sysroot-test which we build for one machine, switch machine, switch provider of virtual/sysroot-test and check that the sysroot is correctly cleaned up. The files in the two providers overlap so can cause errors if the sysroot code doesn't function correctly. Yes, sysroot-test should be machine specific really to avoid this, however the sysroot cleanup should also work. This adds a test for bug: [YOCTO #13702] (From OE-Core rev: 31a8b4935e673aba8a1147c4a2fb510b1a8bc3ce) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta-selftest/recipes-test/sysroot-test/sysroot-test-arch1_1.0.bb14
-rw-r--r--meta-selftest/recipes-test/sysroot-test/sysroot-test-arch2_1.0.bb14
-rw-r--r--meta-selftest/recipes-test/sysroot-test/sysroot-test_1.0.bb6
-rw-r--r--meta/lib/oeqa/selftest/cases/sysroot.py37
4 files changed, 71 insertions, 0 deletions
diff --git a/meta-selftest/recipes-test/sysroot-test/sysroot-test-arch1_1.0.bb b/meta-selftest/recipes-test/sysroot-test/sysroot-test-arch1_1.0.bb
new file mode 100644
index 0000000000..36a682c53d
--- /dev/null
+++ b/meta-selftest/recipes-test/sysroot-test/sysroot-test-arch1_1.0.bb
@@ -0,0 +1,14 @@
1LICENSE = "CLOSED"
2
3PROVIDES = "virtual/sysroot-test"
4INHIBIT_DEFAULT_DEPS = "1"
5PACKAGE_ARCH = "${MACHINE_ARCH}"
6
7TESTSTRING ?= "1"
8
9do_install() {
10 install -d ${D}${includedir}
11 echo "# test ${TESTSTRING}" > ${D}${includedir}/sysroot-test.h
12}
13
14EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-selftest/recipes-test/sysroot-test/sysroot-test-arch2_1.0.bb b/meta-selftest/recipes-test/sysroot-test/sysroot-test-arch2_1.0.bb
new file mode 100644
index 0000000000..67172f3cab
--- /dev/null
+++ b/meta-selftest/recipes-test/sysroot-test/sysroot-test-arch2_1.0.bb
@@ -0,0 +1,14 @@
1LICENSE = "CLOSED"
2
3PROVIDES = "virtual/sysroot-test"
4INHIBIT_DEFAULT_DEPS = "1"
5PACKAGE_ARCH = "${MACHINE_ARCH}"
6
7TESTSTRING ?= "2"
8
9do_install() {
10 install -d ${D}${includedir}
11 echo "# test ${TESTSTRING}" > ${D}${includedir}/sysroot-test.h
12}
13
14EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-selftest/recipes-test/sysroot-test/sysroot-test_1.0.bb b/meta-selftest/recipes-test/sysroot-test/sysroot-test_1.0.bb
new file mode 100644
index 0000000000..560487c159
--- /dev/null
+++ b/meta-selftest/recipes-test/sysroot-test/sysroot-test_1.0.bb
@@ -0,0 +1,6 @@
1SUMMARY = "Virtual provider sysroot test"
2LICENSE = "CLOSED"
3INHIBIT_DEFAULT_DEPS = "1"
4DEPENDS = "virtual/sysroot-test"
5
6EXCLUDE_FROM_WORLD = "1"
diff --git a/meta/lib/oeqa/selftest/cases/sysroot.py b/meta/lib/oeqa/selftest/cases/sysroot.py
new file mode 100644
index 0000000000..6e34927c90
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/sysroot.py
@@ -0,0 +1,37 @@
1#
2# SPDX-License-Identifier: MIT
3#
4
5import uuid
6
7from oeqa.selftest.case import OESelftestTestCase
8from oeqa.utils.commands import bitbake
9
10class SysrootTests(OESelftestTestCase):
11 def test_sysroot_cleanup(self):
12 """
13 Build sysroot test which depends on virtual/sysroot-test for one machine,
14 switch machine, switch provider of virtual/sysroot-test and check that the
15 sysroot is correctly cleaned up. The files in the two providers overlap
16 so can cause errors if the sysroot code doesn't function correctly.
17 Yes, sysroot-test should be machine specific really to avoid this, however
18 the sysroot cleanup should also work [YOCTO #13702].
19 """
20
21 uuid1 = uuid.uuid4()
22 uuid2 = uuid.uuid4()
23
24 self.write_config("""
25PREFERRED_PROVIDER_virtual/sysroot-test = "sysroot-test-arch1"
26MACHINE = "qemux86"
27TESTSTRING_pn-sysroot-test-arch1 = "%s"
28TESTSTRING_pn-sysroot-test-arch2 = "%s"
29""" % (uuid1, uuid2))
30 bitbake("sysroot-test")
31 self.write_config("""
32PREFERRED_PROVIDER_virtual/sysroot-test = "sysroot-test-arch2"
33MACHINE = "qemux86copy"
34TESTSTRING_pn-sysroot-test-arch1 = "%s"
35TESTSTRING_pn-sysroot-test-arch2 = "%s"
36""" % (uuid1, uuid2))
37 bitbake("sysroot-test")