summaryrefslogtreecommitdiffstats
path: root/meta-yocto-bsp/lib/oeqa/selftest/cases/systemd_boot.py
blob: b3db226d7e2ab2e93598c297174ca7a4a7e376b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os

from oeqa.selftest.case import OESelftestTestCase
from oeqa.core.decorator.depends import OETestDepends
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu

class Systemdboot(OESelftestTestCase):

    def test_efi_systemdboot_images_can_be_built(self):
        """
        Summary:     Check if systemd-boot images can be built correctly
        Expected:    1. File systemd-boot.efi should be available in $poky/build/tmp/deploy/images/genericx86-64
                     2. 'systemd-boot" can be built correctly
        Product:     oe-core
        Author:      Jose Perez Carranza <jose.perez.carranza@intel.com>
        AutomatedBy: Jose Perez Carranza <jose.perez.carranza@intel.com>
        """

        # Set EFI_PROVIDER = "systemdboot" and MACHINE = "genericx86-64" in conf/local.conf
        features = 'EFI_PROVIDER = "systemd-boot"\n'
        features += 'MACHINE = "genericx86-64"'
        self.append_config(features)

        deploydir = get_bb_var('DEPLOY_DIR_IMAGE', "core-image-minimal")
        systemdbootfile = os.path.join(deploydir, 'systemd-bootx64.efi')

        # Ensure we're actually testing that this gets built and not that
        # it was around from an earlier build
        bitbake('-c clean systemd-boot')
        runCmd('rm -f %s' % systemdbootfile)

        # Build a genericx86-64/efi systemdboot image
        bitbake('mtools-native core-image-minimal')

        found = os.path.isfile(systemdbootfile)
        self.assertTrue(found, 'Systemd-Boot file %s not found' % systemdbootfile)

        """
        Summary:      Check if EFI bootloader for systemd is correctly build
        Dependencies: Image was built correctly on testcase 1445
        Steps:        1. Copy bootx64.efi file from the wic created
                      under build/tmp/deploy/images/genericx86-64
                      2. Check bootx64.efi was copied from wic
                      3. Verify the checksums from the copied and previously
                      created file are equal.
        Expected :    Systemd-bootx64.efi and bootx64.efi should be the same
                      hence checksums should be equal.
        Product:      oe-core
        Author:       Jose Perez Carranza <jose.perez.carranza at linux-intel.com>
        AutomatedBy:  Jose Perez Carranza <jose.perez.carranza at linux-intel.com>
        """

        systemdbootimage = os.path.join(deploydir, 'core-image-minimal-genericx86-64.wic')
        imagebootfile = os.path.join(deploydir, 'bootx64.efi')

        # Clean environment before start the test
        if os.path.isfile(imagebootfile):
            runCmd('rm -f %s' % imagebootfile)

        runCmd('wic cp %s:1/EFI/BOOT/bootx64.efi %s' % (systemdbootimage,
                                                           imagebootfile))

        found = os.path.isfile(imagebootfile)
        self.assertTrue(found, 'bootx64.efi file %s was not copied from image'
                            % imagebootfile)

        result = runCmd('md5sum %s %s' % (systemdbootfile, imagebootfile))
        self.assertEqual(result.output.split()[0], result.output.split()[2],
                             '%s was not correclty generated' % imagebootfile)