xref: /openbmc/openbmc/poky/meta/lib/oeqa/selftest/cases/layerappend.py (revision edff49234e31f23dc79f823473c9e286a21596c1)
1c342db35SBrad Bishop#
292b42cb3SPatrick Williams# Copyright OpenEmbedded Contributors
392b42cb3SPatrick Williams#
4c342db35SBrad Bishop# SPDX-License-Identifier: MIT
5c342db35SBrad Bishop#
6c342db35SBrad Bishop
7eb8dc403SDave Cobbleyimport os
8eb8dc403SDave Cobbley
9eb8dc403SDave Cobbleyfrom oeqa.selftest.case import OESelftestTestCase
1045852739SPatrick Williamsfrom oeqa.utils.commands import bitbake, get_bb_var
11eb8dc403SDave Cobbleyimport oeqa.utils.ftools as ftools
12eb8dc403SDave Cobbley
13eb8dc403SDave Cobbleyclass LayerAppendTests(OESelftestTestCase):
14eb8dc403SDave Cobbley    layerconf = """
15eb8dc403SDave Cobbley# We have a conf and classes directory, append to BBPATH
16eb8dc403SDave CobbleyBBPATH .= ":${LAYERDIR}"
17eb8dc403SDave Cobbley
18eb8dc403SDave Cobbley# We have a recipes directory, add to BBFILES
19eb8dc403SDave CobbleyBBFILES += "${LAYERDIR}/recipes*/*.bb ${LAYERDIR}/recipes*/*.bbappend"
20eb8dc403SDave Cobbley
21eb8dc403SDave CobbleyBBFILE_COLLECTIONS += "meta-layerINT"
22eb8dc403SDave CobbleyBBFILE_PATTERN_meta-layerINT := "^${LAYERDIR}/"
23eb8dc403SDave CobbleyBBFILE_PRIORITY_meta-layerINT = "6"
24eb8dc403SDave Cobbley"""
25eb8dc403SDave Cobbley    recipe = """
26eb8dc403SDave CobbleyLICENSE="CLOSED"
27eb8dc403SDave CobbleyINHIBIT_DEFAULT_DEPS = "1"
28eb8dc403SDave Cobbley
29eb8dc403SDave Cobbleypython do_build() {
30eb8dc403SDave Cobbley    bb.plain('Building ...')
31eb8dc403SDave Cobbley}
32eb8dc403SDave Cobbleyaddtask build
33eb8dc403SDave Cobbley"""
34eb8dc403SDave Cobbley    append = """
35213cb269SPatrick WilliamsFILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
36eb8dc403SDave Cobbley
37213cb269SPatrick WilliamsSRC_URI:append = " file://appendtest.txt"
38eb8dc403SDave Cobbley
39213cb269SPatrick Williamssysroot_stage_all:append() {
40*edff4923SAndrew Geissler	install -m 644 ${UNPACKDIR}/appendtest.txt ${SYSROOT_DESTDIR}/
41eb8dc403SDave Cobbley}
42eb8dc403SDave Cobbley
43eb8dc403SDave Cobbley"""
44eb8dc403SDave Cobbley
45eb8dc403SDave Cobbley    append2 = """
46213cb269SPatrick WilliamsFILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
47eb8dc403SDave Cobbley
48213cb269SPatrick WilliamsSRC_URI:append = " file://appendtest.txt"
49eb8dc403SDave Cobbley"""
50eb8dc403SDave Cobbley    layerappend = ''
51eb8dc403SDave Cobbley
52eb8dc403SDave Cobbley    def tearDownLocal(self):
53eb8dc403SDave Cobbley        if self.layerappend:
54eb8dc403SDave Cobbley            ftools.remove_from_file(self.builddir + "/conf/bblayers.conf", self.layerappend)
55eb8dc403SDave Cobbley        super(LayerAppendTests, self).tearDownLocal()
56eb8dc403SDave Cobbley
57eb8dc403SDave Cobbley    def test_layer_appends(self):
58eb8dc403SDave Cobbley        corebase = get_bb_var("COREBASE")
59eb8dc403SDave Cobbley
60eb8dc403SDave Cobbley        for l in ["0", "1", "2"]:
61eb8dc403SDave Cobbley            layer = os.path.join(corebase, "meta-layertest" + l)
62eb8dc403SDave Cobbley            self.assertFalse(os.path.exists(layer))
63eb8dc403SDave Cobbley            os.mkdir(layer)
64eb8dc403SDave Cobbley            os.mkdir(layer + "/conf")
65eb8dc403SDave Cobbley            with open(layer + "/conf/layer.conf", "w") as f:
66eb8dc403SDave Cobbley                f.write(self.layerconf.replace("INT", l))
67eb8dc403SDave Cobbley            os.mkdir(layer + "/recipes-test")
68eb8dc403SDave Cobbley            if l == "0":
69eb8dc403SDave Cobbley                with open(layer + "/recipes-test/layerappendtest.bb", "w") as f:
70eb8dc403SDave Cobbley                    f.write(self.recipe)
71eb8dc403SDave Cobbley            elif l == "1":
72eb8dc403SDave Cobbley                with open(layer + "/recipes-test/layerappendtest.bbappend", "w") as f:
73eb8dc403SDave Cobbley                    f.write(self.append)
74eb8dc403SDave Cobbley                os.mkdir(layer + "/recipes-test/layerappendtest")
75eb8dc403SDave Cobbley                with open(layer + "/recipes-test/layerappendtest/appendtest.txt", "w") as f:
76eb8dc403SDave Cobbley                    f.write("Layer 1 test")
77eb8dc403SDave Cobbley            elif l == "2":
78eb8dc403SDave Cobbley                with open(layer + "/recipes-test/layerappendtest.bbappend", "w") as f:
79eb8dc403SDave Cobbley                    f.write(self.append2)
80eb8dc403SDave Cobbley                os.mkdir(layer + "/recipes-test/layerappendtest")
81eb8dc403SDave Cobbley                with open(layer + "/recipes-test/layerappendtest/appendtest.txt", "w") as f:
82eb8dc403SDave Cobbley                    f.write("Layer 2 test")
83eb8dc403SDave Cobbley            self.track_for_cleanup(layer)
84eb8dc403SDave Cobbley
85eb8dc403SDave Cobbley        self.layerappend = "BBLAYERS += \"{0}/meta-layertest0 {0}/meta-layertest1 {0}/meta-layertest2\"".format(corebase)
86eb8dc403SDave Cobbley        ftools.append_file(self.builddir + "/conf/bblayers.conf", self.layerappend)
87eb8dc403SDave Cobbley        stagingdir = get_bb_var("SYSROOT_DESTDIR", "layerappendtest")
88eb8dc403SDave Cobbley        bitbake("layerappendtest")
89eb8dc403SDave Cobbley        data = ftools.read_file(stagingdir + "/appendtest.txt")
90eb8dc403SDave Cobbley        self.assertEqual(data, "Layer 2 test")
91eb8dc403SDave Cobbley        os.remove(corebase + "/meta-layertest2/recipes-test/layerappendtest/appendtest.txt")
92eb8dc403SDave Cobbley        bitbake("layerappendtest")
93eb8dc403SDave Cobbley        data = ftools.read_file(stagingdir + "/appendtest.txt")
94eb8dc403SDave Cobbley        self.assertEqual(data, "Layer 1 test")
95eb8dc403SDave Cobbley        with open(corebase + "/meta-layertest2/recipes-test/layerappendtest/appendtest.txt", "w") as f:
96eb8dc403SDave Cobbley            f.write("Layer 2 test")
97eb8dc403SDave Cobbley        bitbake("layerappendtest")
98eb8dc403SDave Cobbley        data = ftools.read_file(stagingdir + "/appendtest.txt")
99eb8dc403SDave Cobbley        self.assertEqual(data, "Layer 2 test")
100