summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorCristiana Voicu <cristiana.voicu@intel.com>2013-07-29 11:44:58 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-06 13:02:24 +0100
commitbb8a265b0fa61a502c95b830ac82715e6685e2ab (patch)
treee9b9facdca1126f32037309e21d9dc30253367ea /bitbake
parent116219ce09c63dfdbf1f57563c6d0b400bd96823 (diff)
downloadast2050-yocto-poky-bb8a265b0fa61a502c95b830ac82715e6685e2ab.zip
ast2050-yocto-poky-bb8a265b0fa61a502c95b830ac82715e6685e2ab.tar.gz
bitbake: hob & bitbake: append a value to a variable from hob throught bitbake
It was necessary to append ${TOPDIR}/recipes/images to BBFILES. Implemented the mechanism to append a value to a variable: a command and the method in cooker. [YOCTO #4193] (Bitbake rev: 4aedbee90bd92395c2460a68702e6ede00e256c9) Signed-off-by: Cristiana Voicu <cristiana.voicu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/command.py5
-rw-r--r--bitbake/lib/bb/cooker.py29
-rw-r--r--bitbake/lib/bb/data.py4
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/builder.py1
-rw-r--r--bitbake/lib/bb/ui/crumbs/hobeventhandler.py11
5 files changed, 47 insertions, 3 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index 5eb34af..33a2440 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -153,7 +153,7 @@ class CommandsSync:
varname = params[0]
expand = True
if len(params) > 1:
- expand = params[1]
+ expand = (params[1] == "True")
return command.cooker.data.getVar(varname, expand)
getVariable.readonly = True
@@ -230,7 +230,8 @@ class CommandsSync:
var = params[0]
val = params[1]
default_file = params[2]
- command.cooker.saveConfigurationVar(var, val, default_file)
+ op = params[3]
+ command.cooker.modifyConfigurationVar(var, val, default_file, op)
def createConfigFile(self, command, params):
"""
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 7ca9947..a4a6be6 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -162,6 +162,35 @@ class BBCooker:
self.data = self.databuilder.data
self.data_hash = self.databuilder.data_hash
+ def modifyConfigurationVar(self, var, val, default_file, op):
+ if op == "append":
+ self.appendConfigurationVar(var, val, default_file)
+ elif op == "set":
+ self.saveConfigurationVar(var, val, default_file)
+
+ def appendConfigurationVar(self, var, val, default_file):
+ #add append var operation to the end of default_file
+ default_file = bb.cookerdata.findConfigFile(default_file)
+
+ with open(default_file, 'r') as f:
+ contents = f.readlines()
+ f.close()
+
+ total = ""
+ for c in contents:
+ total += c
+
+ total += "#added by bitbake"
+ total += "\n%s += \"%s\"\n" % (var, val)
+
+ with open(default_file, 'w') as f:
+ f.write(total)
+ f.close()
+
+ #add to history
+ loginfo = {"op":append, "file":default_file, "line":total.count("\n")}
+ self.data.appendVar(var, val, **loginfo)
+
def saveConfigurationVar(self, var, val, default_file):
replaced = False
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py
index 87c4808..8c9cb0f 100644
--- a/bitbake/lib/bb/data.py
+++ b/bitbake/lib/bb/data.py
@@ -97,6 +97,10 @@ def delVar(var, d):
"""Removes a variable from the data set"""
d.delVar(var)
+def appendVar(var, value, d):
+ """Append additional value to a variable"""
+ d.appendVar(var, value)
+
def setVarFlag(var, flag, flagvalue, d):
"""Set a flag for a given variable to a given value"""
d.setVarFlag(var, flag, flagvalue)
diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py
index 6bf4024..3ddfb36 100755
--- a/bitbake/lib/bb/ui/crumbs/builder.py
+++ b/bitbake/lib/bb/ui/crumbs/builder.py
@@ -440,6 +440,7 @@ class Builder(gtk.Window):
self.handler.connect("recipe-populated", self.handler_recipe_populated_cb)
self.handler.connect("package-populated", self.handler_package_populated_cb)
+ self.handler.append_to_bbfiles("${TOPDIR}/recipes/images/*.bb")
self.initiate_new_build_async()
signal.signal(signal.SIGINT, self.event_handle_SIGINT)
diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
index 42fd0b9..7854742 100644
--- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
+++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
@@ -471,9 +471,18 @@ class HobHandler(gobject.GObject):
def set_var_in_file(self, var, val, default_file=None):
self.runCommand(["enableDataTracking"])
- self.server.runCommand(["setVarFile", var, val, default_file])
+ self.server.runCommand(["setVarFile", var, val, default_file, "set"])
self.runCommand(["disableDataTracking"])
+ def append_var_in_file(self, var, val, default_file=None):
+ self.server.runCommand(["setVarFile", var, val, default_file, "append"])
+
+ def append_to_bbfiles(self, val):
+ bbfiles = self.runCommand(["getVariable", "BBFILES", "False"]) or ""
+ bbfiles = bbfiles.split()
+ if val not in bbfiles:
+ self.append_var_in_file("BBFILES", val, "local.conf")
+
def get_parameters(self):
# retrieve the parameters from bitbake
params = {}
OpenPOWER on IntegriCloud