mirror of
https://git.yoctoproject.org/poky
synced 2026-09-15 06:49:33 +02:00
recipetool: add appendfile subcommand
Locating which recipe provides a file in an image that you want to modify and then figuring out how to bbappend the recipe in order to replace it can be a tedious process. Thus, add a new appendfile subcommand to recipetool, providing the ability to create a bbappend file to add/replace any file in the target system. Without the -r option, it will search for the recipe packaging the specified file (using pkgdata from previously built recipes). The bbappend will be created at the appropriate path within the specified layer directory (which may or may not be in your bblayers.conf) or if one already exists it will be updated appropriately. Fairly extensive oe-selftest tests are also provided. Implements [YOCTO #6447]. (From OE-Core rev: dd2aa93b3c13d2c6464ef0fda59620c7dba450bb) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
c63adf5c5b
commit
fbfc06a969
@@ -8,7 +8,7 @@ import glob
|
||||
|
||||
import oeqa.utils.ftools as ftools
|
||||
from oeqa.selftest.base import oeSelfTest
|
||||
from oeqa.utils.commands import runCmd, bitbake, get_bb_var
|
||||
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, create_temp_layer
|
||||
from oeqa.utils.decorators import testcase
|
||||
|
||||
class DevtoolBase(oeSelfTest):
|
||||
@@ -31,6 +31,35 @@ class DevtoolBase(oeSelfTest):
|
||||
for inherit in checkinherits:
|
||||
self.assertIn(inherit, inherits, 'Missing inherit of %s' % inherit)
|
||||
|
||||
def _check_bbappend(self, testrecipe, recipefile, appenddir):
|
||||
result = runCmd('bitbake-layers show-appends', cwd=self.builddir)
|
||||
resultlines = result.output.splitlines()
|
||||
inrecipe = False
|
||||
bbappends = []
|
||||
bbappendfile = None
|
||||
for line in resultlines:
|
||||
if inrecipe:
|
||||
if line.startswith(' '):
|
||||
bbappends.append(line.strip())
|
||||
else:
|
||||
break
|
||||
elif line == '%s:' % os.path.basename(recipefile):
|
||||
inrecipe = True
|
||||
self.assertLessEqual(len(bbappends), 2, '%s recipe is being bbappended by another layer - bbappends found:\n %s' % (testrecipe, '\n '.join(bbappends)))
|
||||
for bbappend in bbappends:
|
||||
if bbappend.startswith(appenddir):
|
||||
bbappendfile = bbappend
|
||||
break
|
||||
else:
|
||||
self.assertTrue(False, 'bbappend for recipe %s does not seem to be created in test layer' % testrecipe)
|
||||
return bbappendfile
|
||||
|
||||
def _create_temp_layer(self, templayerdir, addlayer, templayername, priority=999, recipepathspec='recipes-*/*'):
|
||||
create_temp_layer(templayerdir, templayername, priority, recipepathspec)
|
||||
if addlayer:
|
||||
self.add_command_to_tearDown('bitbake-layers remove-layer %s || true' % templayerdir)
|
||||
result = runCmd('bitbake-layers add-layer %s' % templayerdir, cwd=self.builddir)
|
||||
|
||||
|
||||
class DevtoolTests(DevtoolBase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user