| import unittest |
| import os |
| import logging |
| import re |
| |
| from oeqa.selftest.base import oeSelfTest |
| from oeqa.selftest.buildhistory import BuildhistoryBase |
| from oeqa.utils.commands import runCmd, bitbake, get_bb_var |
| import oeqa.utils.ftools as ftools |
| from oeqa.utils.decorators import testcase |
| |
| class LayerAppendTests(oeSelfTest): |
| layerconf = """ |
| # We have a conf and classes directory, append to BBPATH |
| BBPATH .= ":${LAYERDIR}" |
| |
| # We have a recipes directory, add to BBFILES |
| BBFILES += "${LAYERDIR}/recipes*/*.bb ${LAYERDIR}/recipes*/*.bbappend" |
| |
| BBFILE_COLLECTIONS += "meta-layerINT" |
| BBFILE_PATTERN_meta-layerINT := "^${LAYERDIR}/" |
| BBFILE_PRIORITY_meta-layerINT = "6" |
| """ |
| recipe = """ |
| LICENSE="CLOSED" |
| INHIBIT_DEFAULT_DEPS = "1" |
| |
| python do_build() { |
| bb.plain('Building ...') |
| } |
| addtask build |
| """ |
| append = """ |
| FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" |
| |
| SRC_URI_append = " file://appendtest.txt" |
| |
| sysroot_stage_all_append() { |
| install -m 644 ${WORKDIR}/appendtest.txt ${SYSROOT_DESTDIR}/ |
| } |
| |
| """ |
| |
| append2 = """ |
| FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" |
| |
| SRC_URI_append += "file://appendtest.txt" |
| """ |
| layerappend = "BBLAYERS += \"COREBASE/meta-layertest0 COREBASE/meta-layertest1 COREBASE/meta-layertest2\"" |
| |
| def tearDownLocal(self): |
| ftools.remove_from_file(self.builddir + "/conf/bblayers.conf", self.layerappend.replace("COREBASE", self.builddir + "/..")) |
| |
| @testcase(1196) |
| def test_layer_appends(self): |
| corebase = get_bb_var("COREBASE") |
| stagingdir = get_bb_var("STAGING_DIR_TARGET") |
| for l in ["0", "1", "2"]: |
| layer = os.path.join(corebase, "meta-layertest" + l) |
| self.assertFalse(os.path.exists(layer)) |
| os.mkdir(layer) |
| os.mkdir(layer + "/conf") |
| with open(layer + "/conf/layer.conf", "w") as f: |
| f.write(self.layerconf.replace("INT", l)) |
| os.mkdir(layer + "/recipes-test") |
| if l == "0": |
| with open(layer + "/recipes-test/layerappendtest.bb", "w") as f: |
| f.write(self.recipe) |
| elif l == "1": |
| with open(layer + "/recipes-test/layerappendtest.bbappend", "w") as f: |
| f.write(self.append) |
| os.mkdir(layer + "/recipes-test/layerappendtest") |
| with open(layer + "/recipes-test/layerappendtest/appendtest.txt", "w") as f: |
| f.write("Layer 1 test") |
| elif l == "2": |
| with open(layer + "/recipes-test/layerappendtest.bbappend", "w") as f: |
| f.write(self.append2) |
| os.mkdir(layer + "/recipes-test/layerappendtest") |
| with open(layer + "/recipes-test/layerappendtest/appendtest.txt", "w") as f: |
| f.write("Layer 2 test") |
| self.track_for_cleanup(layer) |
| ftools.append_file(self.builddir + "/conf/bblayers.conf", self.layerappend.replace("COREBASE", self.builddir + "/..")) |
| bitbake("layerappendtest") |
| data = ftools.read_file(stagingdir + "/appendtest.txt") |
| self.assertEqual(data, "Layer 2 test") |
| os.remove(corebase + "/meta-layertest2/recipes-test/layerappendtest/appendtest.txt") |
| bitbake("layerappendtest") |
| data = ftools.read_file(stagingdir + "/appendtest.txt") |
| self.assertEqual(data, "Layer 1 test") |
| with open(corebase + "/meta-layertest2/recipes-test/layerappendtest/appendtest.txt", "w") as f: |
| f.write("Layer 2 test") |
| bitbake("layerappendtest") |
| data = ftools.read_file(stagingdir + "/appendtest.txt") |
| self.assertEqual(data, "Layer 2 test") |
| |
| |