diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-04-20 17:19:11 +0100 |
---|---|---|
committer | Steve Sakoman <steve@sakoman.com> | 2020-05-01 10:12:13 -1000 |
commit | 31a8b4935e673aba8a1147c4a2fb510b1a8bc3ce (patch) | |
tree | bd4a4403fef3e6c9a6f0281ea8491f8e47321993 | |
parent | f1d4da322d607a17de6d9c291562b5fd1128fbc6 (diff) | |
download | openembedded-core-31a8b4935e673aba8a1147c4a2fb510b1a8bc3ce.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]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
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 @@ +LICENSE = "CLOSED" + +PROVIDES = "virtual/sysroot-test" +INHIBIT_DEFAULT_DEPS = "1" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +TESTSTRING ?= "1" + +do_install() { + install -d ${D}${includedir} + echo "# test ${TESTSTRING}" > ${D}${includedir}/sysroot-test.h +} + +EXCLUDE_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 @@ +LICENSE = "CLOSED" + +PROVIDES = "virtual/sysroot-test" +INHIBIT_DEFAULT_DEPS = "1" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +TESTSTRING ?= "2" + +do_install() { + install -d ${D}${includedir} + echo "# test ${TESTSTRING}" > ${D}${includedir}/sysroot-test.h +} + +EXCLUDE_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 @@ +SUMMARY = "Virtual provider sysroot test" +LICENSE = "CLOSED" +INHIBIT_DEFAULT_DEPS = "1" +DEPENDS = "virtual/sysroot-test" + +EXCLUDE_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 @@ +# +# SPDX-License-Identifier: MIT +# + +import uuid + +from oeqa.selftest.case import OESelftestTestCase +from oeqa.utils.commands import bitbake + +class SysrootTests(OESelftestTestCase): + def test_sysroot_cleanup(self): + """ + Build sysroot test which depends on virtual/sysroot-test 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 [YOCTO #13702]. + """ + + uuid1 = uuid.uuid4() + uuid2 = uuid.uuid4() + + self.write_config(""" +PREFERRED_PROVIDER_virtual/sysroot-test = "sysroot-test-arch1" +MACHINE = "qemux86" +TESTSTRING_pn-sysroot-test-arch1 = "%s" +TESTSTRING_pn-sysroot-test-arch2 = "%s" +""" % (uuid1, uuid2)) + bitbake("sysroot-test") + self.write_config(""" +PREFERRED_PROVIDER_virtual/sysroot-test = "sysroot-test-arch2" +MACHINE = "qemux86copy" +TESTSTRING_pn-sysroot-test-arch1 = "%s" +TESTSTRING_pn-sysroot-test-arch2 = "%s" +""" % (uuid1, uuid2)) + bitbake("sysroot-test") |