diff options
author | Andrew Geissler <geissonator@yahoo.com> | 2021-02-13 00:55:30 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2021-02-25 23:15:06 +0300 |
commit | 706d5aacd7ab7b37c00df1a1b210e4ced06119e1 (patch) | |
tree | ed0bec373424d01accfb2e9c895c177a3e2d7abe /poky/meta/lib | |
parent | ac970dd705934286df062e0f1501f776dc2ef01d (diff) | |
download | openbmc-706d5aacd7ab7b37c00df1a1b210e4ced06119e1.tar.xz |
Reset poky to before our libpam hacks
Things got a bit out of synch with openbmc-config due to the libpam
issues and the migration from the meta-* layers.
Revert the two previous commits and then put the latest poky in with the
libpam revert and get openbmc-config right again.
Revert "Revert "libpam: update 1.3.1 -> 1.5.1""
This reverts commit 87ddd3eab4df68e624b5350ccaab28b3b97547c0.
Revert "poky: subtree update:796be0593a..10c69538c0"
This reverts commit c723b72979bfac6362509cf1fe086900f6641f28.
Change-Id: I3a1f405193aee6a21fe0cd24be9927c143a23d9a
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Diffstat (limited to 'poky/meta/lib')
-rw-r--r-- | poky/meta/lib/oe/path.py | 21 | ||||
-rw-r--r-- | poky/meta/lib/oe/qa.py | 1 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/runtime/cases/suspend.py | 33 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/runtime/cases/terminal.py | 7 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/buildoptions.py | 8 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/devtool.py | 2 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/fitimage.py | 233 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/imagefeatures.py | 74 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/oelib/elf.py | 2 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/package.py | 3 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/pkgdata.py | 6 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/pseudo.py | 27 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/reproducible.py | 90 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/cases/wic.py | 20 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/selftest/context.py | 17 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/utils/commands.py | 3 |
16 files changed, 91 insertions, 456 deletions
diff --git a/poky/meta/lib/oe/path.py b/poky/meta/lib/oe/path.py index c8d8ad05b..082972457 100644 --- a/poky/meta/lib/oe/path.py +++ b/poky/meta/lib/oe/path.py @@ -320,24 +320,3 @@ def which_wild(pathname, path=None, mode=os.F_OK, *, reverse=False, candidates=F return files -def canonicalize(paths, sep=','): - """Given a string with paths (separated by commas by default), expand - each path using os.path.realpath() and return the resulting paths as a - string (separated using the same separator a the original string). - """ - # Ignore paths containing "$" as they are assumed to be unexpanded bitbake - # variables. Normally they would be ignored, e.g., when passing the paths - # through the shell they would expand to empty strings. However, when they - # are passed through os.path.realpath(), it will cause them to be prefixed - # with the absolute path to the current directory and thus not be empty - # anymore. - # - # Also maintain trailing slashes, as the paths may actually be used as - # prefixes in sting compares later on, where the slashes then are important. - canonical_paths = [] - for path in (paths or '').split(sep): - if '$' not in path: - trailing_slash = path.endswith('/') and '/' or '' - canonical_paths.append(os.path.realpath(path) + trailing_slash) - - return sep.join(canonical_paths) diff --git a/poky/meta/lib/oe/qa.py b/poky/meta/lib/oe/qa.py index e8a854a30..ea831b930 100644 --- a/poky/meta/lib/oe/qa.py +++ b/poky/meta/lib/oe/qa.py @@ -156,7 +156,6 @@ def elf_machine_to_string(machine): """ try: return { - 0x00: "Unset", 0x02: "SPARC", 0x03: "x86", 0x08: "MIPS", diff --git a/poky/meta/lib/oeqa/runtime/cases/suspend.py b/poky/meta/lib/oeqa/runtime/cases/suspend.py deleted file mode 100644 index 67b6f7e56..000000000 --- a/poky/meta/lib/oeqa/runtime/cases/suspend.py +++ /dev/null @@ -1,33 +0,0 @@ -from oeqa.runtime.case import OERuntimeTestCase -from oeqa.core.decorator.depends import OETestDepends -from oeqa.core.decorator.data import skipIfQemu -import threading -import time - -class Suspend_Test(OERuntimeTestCase): - - def test_date(self): - (status, output) = self.target.run('date') - self.assertEqual(status, 0, msg = 'Failed to run date command, output : %s' % output) - - def test_ping(self): - t_thread = threading.Thread(target=self.target.run, args=("ping 8.8.8.8",)) - t_thread.start() - time.sleep(2) - - status, output = self.target.run('pidof ping') - self.target.run('kill -9 %s' % output) - self.assertEqual(status, 0, msg = 'Not able to find process that runs ping, output : %s' % output) - - def set_suspend(self): - (status, output) = self.target.run('sudo rtcwake -m mem -s 10') - self.assertEqual(status, 0, msg = 'Failed to suspends your system to RAM, output : %s' % output) - - @skipIfQemu('qemuall', 'Test only runs on real hardware') - @OETestDepends(['ssh.SSHTest.test_ssh']) - def test_suspend(self): - self.test_date() - self.test_ping() - self.set_suspend() - self.test_date() - self.test_ping() diff --git a/poky/meta/lib/oeqa/runtime/cases/terminal.py b/poky/meta/lib/oeqa/runtime/cases/terminal.py index 8fcca99f4..a268f2688 100644 --- a/poky/meta/lib/oeqa/runtime/cases/terminal.py +++ b/poky/meta/lib/oeqa/runtime/cases/terminal.py @@ -10,12 +10,9 @@ class TerminalTest(OERuntimeTestCase): @OEHasPackage(['matchbox-terminal']) @OETestDepends(['ssh.SSHTest.test_ssh']) def test_terminal_running(self): - t_thread = threading.Thread(target=self.target.run, args=("export DISPLAY=:0 && matchbox-terminal -e 'sh -c \"uname -a && exec sh\"'",)) + t_thread = threading.Thread(target=self.target.run, args=('export DISPLAY=:0 && matchbox-terminal',)) t_thread.start() time.sleep(2) - status, output = self.target.run('pidof matchbox-terminal') - number_of_terminal = len(output.split()) - self.assertEqual(number_of_terminal, 1, msg='There should be only one terminal being launched. Number of terminal launched : %s' % number_of_terminal) self.target.run('kill -9 %s' % output) - self.assertEqual(status, 0, msg='Not able to find process that runs terminal.') + self.assertEqual(status, 0, msg='Not able to find process that runs terminal.') diff --git a/poky/meta/lib/oeqa/selftest/cases/buildoptions.py b/poky/meta/lib/oeqa/selftest/cases/buildoptions.py index d0f647730..e91f0bd18 100644 --- a/poky/meta/lib/oeqa/selftest/cases/buildoptions.py +++ b/poky/meta/lib/oeqa/selftest/cases/buildoptions.py @@ -33,10 +33,10 @@ class ImageOptionsTests(OESelftestTestCase): self.assertTrue(incremental_removed, msg = "Match failed in:\n%s" % log_data_removed) def test_ccache_tool(self): - bb_vars = get_bb_vars(['HOSTTOOLS_DIR'], 'm4-native') - p = bb_vars['HOSTTOOLS_DIR'] + "/" + "ccache" - if not os.path.isfile(p): - self.skipTest("No ccache binary found in %s" % bb_vars['HOSTTOOLS_DIR']) + bitbake("ccache-native") + bb_vars = get_bb_vars(['SYSROOT_DESTDIR', 'bindir'], 'ccache-native') + p = bb_vars['SYSROOT_DESTDIR'] + bb_vars['bindir'] + "/" + "ccache" + self.assertTrue(os.path.isfile(p), msg = "No ccache found (%s)" % p) self.write_config('INHERIT += "ccache"') self.add_command_to_tearDown('bitbake -c clean m4-native') bitbake("m4-native -c clean") diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py index 4eba23890..b8edc8976 100644 --- a/poky/meta/lib/oeqa/selftest/cases/devtool.py +++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py @@ -57,7 +57,7 @@ def setUpModule(): if relpth.endswith('/'): destdir = os.path.join(corecopydir, relpth) # avoid race condition by not copying .pyc files YPBZ#13421,13803 - shutil.copytree(pth, destdir, ignore=shutil.ignore_patterns('*.pyc', '__pycache__')) + shutil.copytree(pth, destdir, ignore=ignore_patterns('*.pyc', '__pycache__')) else: destdir = os.path.join(corecopydir, os.path.dirname(relpth)) bb.utils.mkdirhier(destdir) diff --git a/poky/meta/lib/oeqa/selftest/cases/fitimage.py b/poky/meta/lib/oeqa/selftest/cases/fitimage.py deleted file mode 100644 index 19b9f53ee..000000000 --- a/poky/meta/lib/oeqa/selftest/cases/fitimage.py +++ /dev/null @@ -1,233 +0,0 @@ -# -# SPDX-License-Identifier: MIT -# - -from oeqa.selftest.case import OESelftestTestCase -from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu -import os -import json -import re - -class FitImageTests(OESelftestTestCase): - - def test_fit_image(self): - """ - Summary: Check if FIT image and Image Tree Source (its) are built - and the Image Tree Source has the correct fields. - Expected: 1. fitImage and fitImage-its can be built - 2. The type, load address, entrypoint address and - default values of kernel and ramdisk are as expected - in the Image Tree Source. Not all the fields are tested, - only the key fields that wont vary between different - architectures. - Product: oe-core - Author: Usama Arif <usama.arif@arm.com> - """ - config = """ -# Enable creation of fitImage -KERNEL_IMAGETYPE = "Image" -KERNEL_IMAGETYPES += " fitImage " -KERNEL_CLASSES = " kernel-fitimage " - -# RAM disk variables including load address and entrypoint for kernel and RAM disk -IMAGE_FSTYPES += "cpio.gz" -INITRAMFS_IMAGE = "core-image-minimal" -UBOOT_RD_LOADADDRESS = "0x88000000" -UBOOT_RD_ENTRYPOINT = "0x88000000" -UBOOT_LOADADDRESS = "0x80080000" -UBOOT_ENTRYPOINT = "0x80080000" -FIT_DESC = "A model description" -""" - self.write_config(config) - - # fitImage is created as part of linux recipe - bitbake("virtual/kernel") - - image_type = "core-image-minimal" - deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE') - machine = get_bb_var('MACHINE') - fitimage_its_path = os.path.join(deploy_dir_image, - "fitImage-its-%s-%s-%s" % (image_type, machine, machine)) - fitimage_path = os.path.join(deploy_dir_image, - "fitImage-%s-%s-%s" % (image_type, machine, machine)) - - self.assertTrue(os.path.exists(fitimage_its_path), - "%s image tree source doesn't exist" % (fitimage_its_path)) - self.assertTrue(os.path.exists(fitimage_path), - "%s FIT image doesn't exist" % (fitimage_path)) - - # Check that the type, load address, entrypoint address and default - # values for kernel and ramdisk in Image Tree Source are as expected. - # The order of fields in the below array is important. Not all the - # fields are tested, only the key fields that wont vary between - # different architectures. - its_field_check = [ - 'description = "A model description";', - 'type = "kernel";', - 'load = <0x80080000>;', - 'entry = <0x80080000>;', - 'type = "ramdisk";', - 'load = <0x88000000>;', - 'entry = <0x88000000>;', - 'default = "conf@1";', - 'kernel = "kernel@1";', - 'ramdisk = "ramdisk@1";' - ] - - with open(fitimage_its_path) as its_file: - field_index = 0 - for line in its_file: - if field_index == len(its_field_check): - break - if its_field_check[field_index] in line: - field_index +=1 - - if field_index != len(its_field_check): # if its equal, the test passed - self.assertTrue(field_index == len(its_field_check), - "Fields in Image Tree Source File %s did not match, error in finding %s" - % (fitimage_its_path, its_field_check[field_index])) - - - def test_sign_fit_image(self): - """ - Summary: Check if FIT image and Image Tree Source (its) are created - and signed correctly. - Expected: 1) its and FIT image are built successfully - 2) Scanning the its file indicates signing is enabled - as requested by UBOOT_SIGN_ENABLE (using keys generated - via FIT_GENERATE_KEYS) - 3) Dumping the FIT image indicates signature values - are present (including for images as enabled via - FIT_SIGN_INDIVIDUAL) - 4) Examination of the do_assemble_fitimage runfile/logfile - indicate that UBOOT_MKIMAGE, UBOOT_MKIMAGE_SIGN and - UBOOT_MKIMAGE_SIGN_ARGS are working as expected. - Product: oe-core - Author: Paul Eggleton <paul.eggleton@microsoft.com> based upon - work by Usama Arif <usama.arif@arm.com> - """ - config = """ -# Enable creation of fitImage -MACHINE = "beaglebone-yocto" -KERNEL_IMAGETYPES += " fitImage " -KERNEL_CLASSES = " kernel-fitimage test-mkimage-wrapper " -UBOOT_SIGN_ENABLE = "1" -FIT_GENERATE_KEYS = "1" -UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys" -UBOOT_SIGN_KEYNAME = "oe-selftest" -FIT_SIGN_INDIVIDUAL = "1" -UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'" -""" - self.write_config(config) - - # fitImage is created as part of linux recipe - bitbake("virtual/kernel") - - image_type = "core-image-minimal" - deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE') - machine = get_bb_var('MACHINE') - fitimage_its_path = os.path.join(deploy_dir_image, - "fitImage-its-%s" % (machine,)) - fitimage_path = os.path.join(deploy_dir_image, - "fitImage-%s.bin" % (machine,)) - - self.assertTrue(os.path.exists(fitimage_its_path), - "%s image tree source doesn't exist" % (fitimage_its_path)) - self.assertTrue(os.path.exists(fitimage_path), - "%s FIT image doesn't exist" % (fitimage_path)) - - req_itspaths = [ - ['/', 'images', 'kernel@1'], - ['/', 'images', 'kernel@1', 'signature@1'], - ['/', 'images', 'fdt@am335x-boneblack.dtb'], - ['/', 'images', 'fdt@am335x-boneblack.dtb', 'signature@1'], - ['/', 'configurations', 'conf@am335x-boneblack.dtb'], - ['/', 'configurations', 'conf@am335x-boneblack.dtb', 'signature@1'], - ] - - itspath = [] - itspaths = [] - linect = 0 - sigs = {} - with open(fitimage_its_path) as its_file: - linect += 1 - for line in its_file: - line = line.strip() - if line.endswith('};'): - itspath.pop() - elif line.endswith('{'): - itspath.append(line[:-1].strip()) - itspaths.append(itspath[:]) - elif itspath and itspath[-1] == 'signature@1': - itsdotpath = '.'.join(itspath) - if not itsdotpath in sigs: - sigs[itsdotpath] = {} - if not '=' in line or not line.endswith(';'): - self.fail('Unexpected formatting in %s sigs section line %d:%s' % (fitimage_its_path, linect, line)) - key, value = line.split('=', 1) - sigs[itsdotpath][key.rstrip()] = value.lstrip().rstrip(';') - - for reqpath in req_itspaths: - if not reqpath in itspaths: - self.fail('Missing section in its file: %s' % reqpath) - - reqsigvalues_image = { - 'algo': '"sha256,rsa2048"', - 'key-name-hint': '"oe-selftest"', - } - reqsigvalues_config = { - 'algo': '"sha256,rsa2048"', - 'key-name-hint': '"oe-selftest"', - 'sign-images': '"kernel", "fdt"', - } - - for itspath, values in sigs.items(): - if 'conf@' in itspath: - reqsigvalues = reqsigvalues_config - else: - reqsigvalues = reqsigvalues_image - for reqkey, reqvalue in reqsigvalues.items(): - value = values.get(reqkey, None) - if value is None: - self.fail('Missing key "%s" in its file signature section %s' % (reqkey, itspath)) - self.assertEqual(value, reqvalue) - - # Dump the image to see if it really got signed - bitbake("u-boot-tools-native -c addto_recipe_sysroot") - result = runCmd('bitbake -e u-boot-tools-native | grep ^RECIPE_SYSROOT_NATIVE=') - recipe_sysroot_native = result.output.split('=')[1].strip('"') - dumpimage_path = os.path.join(recipe_sysroot_native, 'usr', 'bin', 'dumpimage') - result = runCmd('%s -l %s' % (dumpimage_path, fitimage_path)) - in_signed = None - signed_sections = {} - for line in result.output.splitlines(): - if line.startswith((' Configuration', ' Image')): - in_signed = re.search('\((.*)\)', line).groups()[0] - elif re.match('^ *', line) in (' ', ''): - in_signed = None - elif in_signed: - if not in_signed in signed_sections: - signed_sections[in_signed] = {} - key, value = line.split(':', 1) - signed_sections[in_signed][key.strip()] = value.strip() - self.assertIn('kernel@1', signed_sections) - self.assertIn('fdt@am335x-boneblack.dtb', signed_sections) - self.assertIn('conf@am335x-boneblack.dtb', signed_sections) - for signed_section, values in signed_sections.items(): - value = values.get('Sign algo', None) - self.assertEqual(value, 'sha256,rsa2048:oe-selftest', 'Signature algorithm for %s not expected value' % signed_section) - value = values.get('Sign value', None) - self.assertEqual(len(value), 512, 'Signature value for section %s not expected length' % signed_section) - - # Check for UBOOT_MKIMAGE_SIGN_ARGS - result = runCmd('bitbake -e virtual/kernel | grep ^T=') - tempdir = result.output.split('=', 1)[1].strip().strip('') - result = runCmd('grep "a smart comment" %s/run.do_assemble_fitimage' % tempdir, ignore_status=True) - self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE_SIGN_ARGS value did not get used') - - # Check for evidence of test-mkimage-wrapper class - result = runCmd('grep "### uboot-mkimage wrapper message" %s/log.do_assemble_fitimage' % tempdir, ignore_status=True) - self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE did not work') - result = runCmd('grep "### uboot-mkimage signing wrapper message" %s/log.do_assemble_fitimage' % tempdir, ignore_status=True) - self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE_SIGN did not work') - diff --git a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py index 6723a8198..415e0315f 100644 --- a/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py +++ b/poky/meta/lib/oeqa/selftest/cases/imagefeatures.py @@ -264,6 +264,80 @@ PNBLACKLIST[busybox] = "Don't build this" bitbake("--graphviz core-image-sato") + def test_fit_image(self): + """ + Summary: Check if FIT image and Image Tree Source (its) are built + and the Image Tree Source has the correct fields. + Expected: 1. fitImage and fitImage-its can be built + 2. The type, load address, entrypoint address and + default values of kernel and ramdisk are as expected + in the Image Tree Source. Not all the fields are tested, + only the key fields that wont vary between different + architectures. + Product: oe-core + Author: Usama Arif <usama.arif@arm.com> + """ + config = """ +# Enable creation of fitImage +KERNEL_IMAGETYPE = "Image" +KERNEL_IMAGETYPES += " fitImage " +KERNEL_CLASSES = " kernel-fitimage " + +# RAM disk variables including load address and entrypoint for kernel and RAM disk +IMAGE_FSTYPES += "cpio.gz" +INITRAMFS_IMAGE = "core-image-minimal" +UBOOT_RD_LOADADDRESS = "0x88000000" +UBOOT_RD_ENTRYPOINT = "0x88000000" +UBOOT_LOADADDRESS = "0x80080000" +UBOOT_ENTRYPOINT = "0x80080000" +""" + self.write_config(config) + + # fitImage is created as part of linux recipe + bitbake("virtual/kernel") + + image_type = "core-image-minimal" + deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE') + machine = get_bb_var('MACHINE') + fitimage_its_path = os.path.join(deploy_dir_image, + "fitImage-its-%s-%s-%s" % (image_type, machine, machine)) + fitimage_path = os.path.join(deploy_dir_image, + "fitImage-%s-%s-%s" % (image_type, machine, machine)) + + self.assertTrue(os.path.exists(fitimage_its_path), + "%s image tree source doesn't exist" % (fitimage_its_path)) + self.assertTrue(os.path.exists(fitimage_path), + "%s FIT image doesn't exist" % (fitimage_path)) + + # Check that the type, load address, entrypoint address and default + # values for kernel and ramdisk in Image Tree Source are as expected. + # The order of fields in the below array is important. Not all the + # fields are tested, only the key fields that wont vary between + # different architectures. + its_field_check = ['type = "kernel";', + 'load = <0x80080000>;', + 'entry = <0x80080000>;', + 'type = "ramdisk";', + 'load = <0x88000000>;', + 'entry = <0x88000000>;', + 'default = "conf@1";', + 'kernel = "kernel@1";', + 'ramdisk = "ramdisk@1";' + ] + + with open(fitimage_its_path) as its_file: + field_index = 0 + for line in its_file: + if field_index == len(its_field_check): + break + if its_field_check[field_index] in line: + field_index +=1 + + if field_index != len(its_field_check): # if its equal, the test passed + self.assertTrue(field_index == len(its_field_check), + "Fields in Image Tree Source File %s did not match, error in finding %s" + % (fitimage_its_path, its_field_check[field_index])) + def test_image_gen_debugfs(self): """ Summary: Check debugfs generation diff --git a/poky/meta/lib/oeqa/selftest/cases/oelib/elf.py b/poky/meta/lib/oeqa/selftest/cases/oelib/elf.py index 5a5f9b4fd..d0a28090f 100644 --- a/poky/meta/lib/oeqa/selftest/cases/oelib/elf.py +++ b/poky/meta/lib/oeqa/selftest/cases/oelib/elf.py @@ -21,6 +21,6 @@ class TestElf(TestCase): self.assertEqual(oe.qa.elf_machine_to_string(0xB7), "AArch64") self.assertEqual(oe.qa.elf_machine_to_string(0xF7), "BPF") - self.assertEqual(oe.qa.elf_machine_to_string(0x00), "Unset") + self.assertEqual(oe.qa.elf_machine_to_string(0x00), "Unknown (0)") self.assertEqual(oe.qa.elf_machine_to_string(0xDEADBEEF), "Unknown (3735928559)") self.assertEqual(oe.qa.elf_machine_to_string("foobar"), "Unknown ('foobar')") diff --git a/poky/meta/lib/oeqa/selftest/cases/package.py b/poky/meta/lib/oeqa/selftest/cases/package.py index 7166c3991..3010b1af4 100644 --- a/poky/meta/lib/oeqa/selftest/cases/package.py +++ b/poky/meta/lib/oeqa/selftest/cases/package.py @@ -168,7 +168,6 @@ class PackageTests(OESelftestTestCase): with runqemu('core-image-minimal') as qemu: for path in [ sysconfdir + "/selftest-chown/file", sysconfdir + "/selftest-chown/dir", - sysconfdir + "/selftest-chown/symlink", - sysconfdir + "/selftest-chown/fifotest/fifo"]: + sysconfdir + "/selftest-chown/symlink"]: if not check_ownership(qemu, "test", "test", path): self.fail('Test ownership %s failed' % path) diff --git a/poky/meta/lib/oeqa/selftest/cases/pkgdata.py b/poky/meta/lib/oeqa/selftest/cases/pkgdata.py index 254abc40c..833a1803b 100644 --- a/poky/meta/lib/oeqa/selftest/cases/pkgdata.py +++ b/poky/meta/lib/oeqa/selftest/cases/pkgdata.py @@ -218,9 +218,3 @@ class OePkgdataUtilTests(OESelftestTestCase): def test_specify_pkgdatadir(self): result = runCmd('oe-pkgdata-util -p %s lookup-pkg zlib' % get_bb_var('PKGDATA_DIR')) self.assertEqual(result.output, 'libz1') - - def test_no_param(self): - result = runCmd('oe-pkgdata-util', ignore_status=True) - self.assertEqual(result.status, 2, "Status different than 2. output: %s" % result.output) - currpos = result.output.find('usage: oe-pkgdata-util') - self.assertTrue(currpos != -1, msg = "Test is Failed. Help is not Displayed in %s" % result.output) diff --git a/poky/meta/lib/oeqa/selftest/cases/pseudo.py b/poky/meta/lib/oeqa/selftest/cases/pseudo.py deleted file mode 100644 index 33593d5ce..000000000 --- a/poky/meta/lib/oeqa/selftest/cases/pseudo.py +++ /dev/null @@ -1,27 +0,0 @@ -# -# SPDX-License-Identifier: MIT -# - -import glob -import os -import shutil -from oeqa.utils.commands import bitbake, get_test_layer -from oeqa.selftest.case import OESelftestTestCase - -class Pseudo(OESelftestTestCase): - - def test_pseudo_pyc_creation(self): - self.write_config("") - - metaselftestpath = get_test_layer() - pycache_path = os.path.join(metaselftestpath, 'lib/__pycache__') - if os.path.exists(pycache_path): - shutil.rmtree(pycache_path) - - bitbake('pseudo-pyc-test -c install') - - test1_pyc_present = len(glob.glob(os.path.join(pycache_path, 'pseudo_pyc_test1.*.pyc'))) - self.assertTrue(test1_pyc_present, 'test1 pyc file missing, should be created outside of pseudo context.') - - test2_pyc_present = len(glob.glob(os.path.join(pycache_path, 'pseudo_pyc_test2.*.pyc'))) - self.assertFalse(test2_pyc_present, 'test2 pyc file present, should not be created in pseudo context.') diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py index eee494e5c..a7ef33614 100644 --- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py +++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py @@ -17,72 +17,6 @@ import stat import os import datetime -# For sample packages, see: -# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201127-0t7wr_oo/ -# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201127-4s9ejwyp/ -# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201127-haiwdlbr/ -# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201127-hwds3mcl/ -# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201203-sua0pzvc/ -# (both packages/ and packages-excluded/) -exclude_packages = [ - 'acpica-src', - 'babeltrace2-ptest', - 'bootchart2-doc', - 'cups', - 'cwautomacros', - 'dtc', - 'efivar', - 'epiphany', - 'gcr', - 'git', - 'glide', - 'go-dep', - 'go-helloworld', - 'go-runtime', - 'go_', - 'groff', - 'gst-devtools', - 'gstreamer1.0-python', - 'gtk-doc', - 'igt-gpu-tools', - 'kernel-devsrc', - 'libaprutil', - 'libcap-ng', - 'libhandy-1-src', - 'libid3tag', - 'libproxy', - 'libsecret-dev', - 'libsecret-src', - 'lttng-tools-dbg', - 'lttng-tools-ptest', - 'ltp', - 'meson', - 'ovmf-shell-efi', - 'parted-ptest', - 'perf', - 'python3-cython', - 'qemu', - 'quilt-ptest', - 'rsync', - 'ruby', - 'spirv-tools-dev', - 'swig', - 'syslinux-misc', - 'systemd-bootchart', - 'valgrind-ptest', - 'vim', - 'watchdog', - 'xmlto', - 'xorg-minimal-fonts' - ] - -def is_excluded(package): - package_name = os.path.basename(package) - for i in exclude_packages: - if package_name.startswith(i): - return True - return False - MISSING = 'MISSING' DIFFERENT = 'DIFFERENT' SAME = 'SAME' @@ -105,7 +39,6 @@ class PackageCompareResults(object): self.total = [] self.missing = [] self.different = [] - self.different_excluded = [] self.same = [] def add_result(self, r): @@ -113,10 +46,7 @@ class PackageCompareResults(object): if r.status == MISSING: self.missing.append(r) elif r.status == DIFFERENT: - if is_excluded(r.reference): - self.different_excluded.append(r) - else: - self.different.append(r) + self.different.append(r) else: self.same.append(r) @@ -124,11 +54,10 @@ class PackageCompareResults(object): self.total.sort() self.missing.sort() self.different.sort() - self.different_excluded.sort() self.same.sort() def __str__(self): - return 'same=%i different=%i different_excluded=%i missing=%i total=%i' % (len(self.same), len(self.different), len(self.different_excluded), len(self.missing), len(self.total)) + return 'same=%i different=%i missing=%i total=%i' % (len(self.same), len(self.different), len(self.missing), len(self.total)) def compare_file(reference, test, diffutils_sysroot): result = CompareResult() @@ -176,7 +105,7 @@ class DiffoscopeTests(OESelftestTestCase): class ReproducibleTests(OESelftestTestCase): package_classes = ['deb', 'ipk'] - images = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline', 'world'] + images = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline'] save_results = False if 'OEQA_DEBUGGING_SAVED_OUTPUT' in os.environ: save_results = os.environ['OEQA_DEBUGGING_SAVED_OUTPUT'] @@ -247,12 +176,6 @@ class ReproducibleTests(OESelftestTestCase): PACKAGE_CLASSES = "{package_classes}" INHIBIT_PACKAGE_STRIP = "1" TMPDIR = "{tmpdir}" - LICENSE_FLAGS_WHITELIST = "commercial" - DISTRO_FEATURES_append = ' systemd pam' - USERADDEXTENSION = "useradd-staticids" - USERADD_ERROR_DYNAMIC = "skip" - USERADD_UID_TABLES += "files/static-passwd" - USERADD_GID_TABLES += "files/static-group" ''').format(package_classes=' '.join('package_%s' % c for c in self.package_classes), tmpdir=tmpdir) @@ -312,7 +235,6 @@ class ReproducibleTests(OESelftestTestCase): self.write_package_list(package_class, 'missing', result.missing) self.write_package_list(package_class, 'different', result.different) - self.write_package_list(package_class, 'different_excluded', result.different_excluded) self.write_package_list(package_class, 'same', result.same) if self.save_results: @@ -320,12 +242,8 @@ class ReproducibleTests(OESelftestTestCase): self.copy_file(d.reference, '/'.join([save_dir, 'packages', strip_topdir(d.reference)])) self.copy_file(d.test, '/'.join([save_dir, 'packages', strip_topdir(d.test)])) - for d in result.different_excluded: - self.copy_file(d.reference, '/'.join([save_dir, 'packages-excluded', strip_topdir(d.reference)])) - self.copy_file(d.test, '/'.join([save_dir, 'packages-excluded', strip_topdir(d.test)])) - if result.missing or result.different: - fails.append("The following %s packages are missing or different and not in exclusion list: %s" % + fails.append("The following %s packages are missing or different: %s" % (c, '\n'.join(r.test for r in (result.missing + result.different)))) # Clean up empty directories diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py index 091f0ab47..714637ec1 100644 --- a/poky/meta/lib/oeqa/selftest/cases/wic.py +++ b/poky/meta/lib/oeqa/selftest/cases/wic.py @@ -990,26 +990,6 @@ class Wic2(WicTestCase): out = glob(self.resultdir + "%s-*direct" % wksname) self.assertEqual(1, len(out)) - def test_empty_plugin(self): - """Test empty plugin""" - config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_empty_plugin.wks"\n' - self.append_config(config) - self.assertEqual(0, bitbake('core-image-minimal').status) - self.remove_config(config) - - bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'MACHINE']) - deploy_dir = bb_vars['DEPLOY_DIR_IMAGE'] - machine = bb_vars['MACHINE'] - image_path = os.path.join(deploy_dir, 'core-image-minimal-%s.wic' % machine) - self.assertEqual(True, os.path.exists(image_path)) - - sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools') - - # Fstype column from 'wic ls' should be empty for the second partition - # as listed in test_empty_plugin.wks - result = runCmd("wic ls %s -n %s | awk -F ' ' '{print $1 \" \" $5}' | grep '^2' | wc -w" % (image_path, sysroot)) - self.assertEqual('1', result.output) - @only_for_arch(['i586', 'i686', 'x86_64']) def test_biosplusefi_plugin_qemu(self): """Test biosplusefi plugin in qemu""" diff --git a/poky/meta/lib/oeqa/selftest/context.py b/poky/meta/lib/oeqa/selftest/context.py index 165992697..dd3609c1d 100644 --- a/poky/meta/lib/oeqa/selftest/context.py +++ b/poky/meta/lib/oeqa/selftest/context.py @@ -34,7 +34,7 @@ class NonConcurrentTestSuite(unittest.TestSuite): (builddir, newbuilddir) = self.setupfunc("-st", None, self.suite) ret = super().run(result) os.chdir(builddir) - if newbuilddir and ret.wasSuccessful() and self.removefunc: + if newbuilddir and ret.wasSuccessful(): self.removefunc(newbuilddir) def removebuilddir(d): @@ -54,7 +54,7 @@ def removebuilddir(d): bb.utils.prunedir(d, ionice=True) class OESelftestTestContext(OETestContext): - def __init__(self, td=None, logger=None, machines=None, config_paths=None, newbuilddir=None, keep_builddir=None): + def __init__(self, td=None, logger=None, machines=None, config_paths=None, newbuilddir=None): super(OESelftestTestContext, self).__init__(td, logger) self.machines = machines @@ -62,11 +62,6 @@ class OESelftestTestContext(OETestContext): self.config_paths = config_paths self.newbuilddir = newbuilddir - if keep_builddir: - self.removebuilddir = None - else: - self.removebuilddir = removebuilddir - def setup_builddir(self, suffix, selftestdir, suite): builddir = os.environ['BUILDDIR'] if not selftestdir: @@ -124,9 +119,9 @@ class OESelftestTestContext(OETestContext): if processes: from oeqa.core.utils.concurrencytest import ConcurrentTestSuite - return ConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir) + return ConcurrentTestSuite(suites, processes, self.setup_builddir, removebuilddir) else: - return NonConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir) + return NonConcurrentTestSuite(suites, processes, self.setup_builddir, removebuilddir) def runTests(self, processes=None, machine=None, skips=[]): if machine: @@ -184,9 +179,6 @@ class OESelftestTestContextExecutor(OETestContextExecutor): action='append', default=None, help='Exclude all (unhidden) tests that match any of the specified tag(s). (exclude applies before select)') - parser.add_argument('-K', '--keep-builddir', action='store_true', - help='Keep the test build directory even if all tests pass') - parser.add_argument('-B', '--newbuilddir', help='New build directory to use for tests.') parser.add_argument('-v', '--verbose', action='store_true') parser.set_defaults(func=self.run) @@ -244,7 +236,6 @@ class OESelftestTestContextExecutor(OETestContextExecutor): self.tc_kwargs['init']['config_paths']['localconf'] = os.path.join(builddir, "conf/local.conf") self.tc_kwargs['init']['config_paths']['bblayers'] = os.path.join(builddir, "conf/bblayers.conf") self.tc_kwargs['init']['newbuilddir'] = args.newbuilddir - self.tc_kwargs['init']['keep_builddir'] = args.keep_builddir def tag_filter(tags): if args.exclude_tags: diff --git a/poky/meta/lib/oeqa/utils/commands.py b/poky/meta/lib/oeqa/utils/commands.py index a71c16ab1..6c1535ddf 100644 --- a/poky/meta/lib/oeqa/utils/commands.py +++ b/poky/meta/lib/oeqa/utils/commands.py @@ -188,10 +188,7 @@ def runCmd(command, ignore_status=False, timeout=None, assert_error=True, sync=T # call sync around the tests to ensure the IO queue doesn't get too large, taking any IO # hit here rather than in bitbake shutdown. if sync: - p = os.environ['PATH'] - os.environ['PATH'] = "/usr/bin:/bin:/usr/sbin:/sbin:" + p os.system("sync") - os.environ['PATH'] = p result.command = command result.status = cmd.status |