summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorCristiana Voicu <cristiana.voicu@intel.com>2013-07-29 09:55:06 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-06 13:02:24 +0100
commit140744c4701bcac0dd61e11303d008f2ea34fc1b (patch)
tree56d29d44308a0c357069b6e7957317a88111c273 /bitbake
parentee4fe5a229125d01cf8b697c759d0852f9a715a8 (diff)
downloadast2050-yocto-poky-140744c4701bcac0dd61e11303d008f2ea34fc1b.zip
ast2050-yocto-poky-140744c4701bcac0dd61e11303d008f2ea34fc1b.tar.gz
bitbake: hob/bitbake: create a template (a .bb file) from hob through bitbake
Modified generateNewImage function from cooker, in order to be used to save a template in Hob. Created a command to ensure that some dirs are created. The templates (recipes) will be saved in {TOPDIR}/recipes/images folder. Called these methods from Hob. [YOCTO #4193] (Bitbake rev: 96ffa00945c7eb09a0132fa47159aef3ef20fb3e) 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.py8
-rw-r--r--bitbake/lib/bb/cooker.py24
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/builder.py10
-rw-r--r--bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py2
-rw-r--r--bitbake/lib/bb/ui/crumbs/hobeventhandler.py9
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/imagedetailspage.py2
6 files changed, 45 insertions, 10 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index 1727654..1893cce 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -214,7 +214,13 @@ class CommandsSync:
image = params[0]
base_image = params[1]
package_queue = params[2]
- return command.cooker.generateNewImage(image, base_image, package_queue)
+ timestamp = params[3]
+ return command.cooker.generateNewImage(image, base_image,
+ package_queue, timestamp)
+
+ def ensureDir(self, command, params):
+ directory = params[0]
+ bb.utils.mkdirhier(directory)
def setVarFile(self, command, params):
"""
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 49e6345..4a5638f 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -1100,16 +1100,25 @@ class BBCooker:
self.configuration.server_register_idlecallback(buildTargetsIdle, rq)
- def generateNewImage(self, image, base_image, package_queue):
+ def generateNewImage(self, image, base_image, package_queue, timestamp):
'''
- Create a new image with a "require" base_image statement
+ Create a new image with a "require"/"inherit" base_image statement
'''
- image_name = os.path.splitext(image)[0]
- timestr = time.strftime("-%Y%m%d-%H%M%S")
- dest = image_name + str(timestr) + ".bb"
+ if timestamp:
+ image_name = os.path.splitext(image)[0]
+ timestr = time.strftime("-%Y%m%d-%H%M%S")
+ dest = image_name + str(timestr) + ".bb"
+ else:
+ if not image.endswith(".bb"):
+ dest = image + ".bb"
+ else:
+ dest = image
with open(dest, "w") as imagefile:
- imagefile.write("require " + base_image + "\n")
+ if base_image is None:
+ imagefile.write("inherit image\n")
+ else:
+ imagefile.write("require " + base_image + "\n")
package_install = "PACKAGE_INSTALL_forcevariable = \""
for package in package_queue:
package_install += str(package) + " "
@@ -1117,7 +1126,8 @@ class BBCooker:
imagefile.write(package_install)
self.state = state.initial
- return timestr
+ if timestamp:
+ return timestr
def updateCache(self):
if self.state == state.running:
diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py
index 317a2fe..0a04c90 100755
--- a/bitbake/lib/bb/ui/crumbs/builder.py
+++ b/bitbake/lib/bb/ui/crumbs/builder.py
@@ -593,6 +593,16 @@ class Builder(gtk.Window):
toolchain_packages,
self.configuration.default_task)
+ def generate_new_image(self, image):
+ base_image = self.configuration.initial_selected_image
+ if base_image == self.recipe_model.__custom_image__:
+ base_image = None
+ packages = self.package_model.get_selected_packages()
+ self.handler.generate_new_image(image, base_image, packages)
+
+ def ensure_dir(self, directory):
+ self.handler.ensure_dir(directory)
+
def get_parameters_sync(self):
return self.handler.get_parameters()
diff --git a/bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py b/bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py
index 3fc389a..b2fa3bd 100644
--- a/bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py
+++ b/bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py
@@ -117,7 +117,7 @@ class SaveImageDialog (CrumbsDialog):
text = self.name_entry.get_text()
new_text = text.replace("-","")
if new_text.islower() and new_text.isalnum():
- print(text)
+ self.builder.generate_new_image(self.directory+text)
self.destroy()
else:
self.show_invalid_input_error_dialog()
diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
index 294eb5d..34cd347 100644
--- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
+++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
@@ -176,7 +176,7 @@ class HobHandler(gobject.GObject):
hobImage = self.runCommand(["matchFile", "hob-image.bb"])
if self.base_image != "Start with an empty image recipe":
baseImage = self.runCommand(["matchFile", self.base_image + ".bb"])
- version = self.runCommand(["generateNewImage", hobImage, baseImage, self.package_queue])
+ version = self.runCommand(["generateNewImage", hobImage, baseImage, self.package_queue, True])
targets[0] += version
self.recipe_model.set_custom_image_version(version)
@@ -426,6 +426,13 @@ class HobHandler(gobject.GObject):
self.commands_async.append(self.SUB_BUILD_IMAGE)
self.run_next_command(self.GENERATE_IMAGE)
+ def generate_new_image(self, image, base_image, package_queue):
+ base_image = self.runCommand(["matchFile", self.base_image + ".bb"])
+ self.runCommand(["generateNewImage", image, base_image, package_queue, False])
+
+ def ensure_dir(self, directory):
+ self.runCommand(["ensureDir", directory])
+
def build_succeeded_async(self):
self.building = False
diff --git a/bitbake/lib/bb/ui/crumbs/imagedetailspage.py b/bitbake/lib/bb/ui/crumbs/imagedetailspage.py
index a02ab61..f55d43f 100755
--- a/bitbake/lib/bb/ui/crumbs/imagedetailspage.py
+++ b/bitbake/lib/bb/ui/crumbs/imagedetailspage.py
@@ -624,6 +624,8 @@ class ImageDetailsPage (HobPage):
def save_button_clicked_cb(self, button):
topdir = self.builder.get_topdir()
images_dir = topdir + "/recipes/images/"
+ self.builder.ensure_dir(images_dir)
+
dialog = SaveImageDialog(images_dir, "Save image recipe", self.builder,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)
response = dialog.run()
OpenPOWER on IntegriCloud