summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRandy Witt <randy.e.witt@linux.intel.com>2016-04-07 16:34:53 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-04-08 07:53:09 +0100
commit6b2b5ffdcb8bf885a1c756ea132e9d2c55e13dcd (patch)
tree9efa85203ddb52707166367a84290e37c8aaedcc
parent8a8fc54d824767a6a94d12a4ace98b0bdbb1aa25 (diff)
downloadopenembedded-core-contrib-6b2b5ffdcb8bf885a1c756ea132e9d2c55e13dcd.tar.gz
openembedded-core-contrib-6b2b5ffdcb8bf885a1c756ea132e9d2c55e13dcd.tar.bz2
openembedded-core-contrib-6b2b5ffdcb8bf885a1c756ea132e9d2c55e13dcd.zip
devtool: Create unlocked-sigs.inc containing items in the workspace
When a recipe is added to the workspace, the signatures for the tasks will change. This means that bitbake must be told to allow the signatures to be different if they are in locked-sigs.inc. This is done by creating an unlocked-sigs.inc file which contains all the recipes in the workspace each time devtool reads the workspace. So not only will necessary things get added, previously added items will be removed by virtue of them no longer being in the workspace. This also makes sure that the extensible sdk picks up unlocked-sigs.inc as part of the configuration. [YOCTO #9195] Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/populate_sdk_ext.bbclass5
-rwxr-xr-xscripts/devtool20
2 files changed, 25 insertions, 0 deletions
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index d1977a760a..87518d1767 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -140,6 +140,10 @@ python copy_buildsystem () {
with open(os.path.join(baseoutpath, 'conf', 'devtool.conf'), 'w') as f:
config.write(f)
+ unlockedsigs = os.path.join(baseoutpath, 'conf', 'unlocked-sigs.inc')
+ with open(unlockedsigs, 'w') as f:
+ pass
+
# Create a layer for new recipes / appends
bbpath = d.getVar('BBPATH', True)
bb.process.run(['devtool', '--bbpath', bbpath, '--basepath', baseoutpath, 'create-workspace', '--create-only', os.path.join(baseoutpath, 'workspace')])
@@ -238,6 +242,7 @@ python copy_buildsystem () {
f.write(line.strip() + '\n')
f.write('require conf/locked-sigs.inc\n')
+ f.write('require conf/unlocked-sigs.inc\n')
if os.path.exists(builddir + '/conf/auto.conf'):
if derivative:
diff --git a/scripts/devtool b/scripts/devtool
index e1198b1369..4780390654 100755
--- a/scripts/devtool
+++ b/scripts/devtool
@@ -125,6 +125,25 @@ def read_workspace():
'recipefile': recipefile}
logger.debug('Found recipe %s' % workspace[pn])
+def create_unlockedsigs():
+ """ This function will make unlocked-sigs.inc match the recipes in the
+ workspace. This runs on every run of devtool, but it lets us ensure
+ the unlocked items are in sync with the workspace. """
+
+ confdir = os.path.join(basepath, 'conf')
+ unlockedsigs = os.path.join(confdir, 'unlocked-sigs.inc')
+ bb.utils.mkdirhier(confdir)
+ with open(os.path.join(confdir, 'unlocked-sigs.inc'), 'w') as f:
+ f.write("# DO NOT MODIFY! YOUR CHANGES WILL BE LOST.\n" +
+ "# This layer was created by the OpenEmbedded devtool" +
+ " utility in order to\n" +
+ "# contain recipes that are unlocked.\n")
+
+ f.write('SIGGEN_UNLOCKED_RECIPES += "\\\n')
+ for pn in workspace:
+ f.write(' ' + pn)
+ f.write('"')
+
def create_workspace(args, config, basepath, workspace):
if args.layerpath:
workspacedir = os.path.abspath(args.layerpath)
@@ -299,6 +318,7 @@ def main():
if not getattr(args, 'no_workspace', False):
read_workspace()
+ create_unlockedsigs()
try:
ret = args.func(args, config, basepath, workspace)