diff options
author | Cristiana Voicu <cristiana.voicu@intel.com> | 2013-07-29 09:55:06 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-08-06 13:02:24 +0100 |
commit | 140744c4701bcac0dd61e11303d008f2ea34fc1b (patch) | |
tree | 56d29d44308a0c357069b6e7957317a88111c273 /bitbake | |
parent | ee4fe5a229125d01cf8b697c759d0852f9a715a8 (diff) | |
download | 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.py | 8 | ||||
-rw-r--r-- | bitbake/lib/bb/cooker.py | 24 | ||||
-rwxr-xr-x | bitbake/lib/bb/ui/crumbs/builder.py | 10 | ||||
-rw-r--r-- | bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py | 2 | ||||
-rw-r--r-- | bitbake/lib/bb/ui/crumbs/hobeventhandler.py | 9 | ||||
-rwxr-xr-x | bitbake/lib/bb/ui/crumbs/imagedetailspage.py | 2 |
6 files changed, 45 insertions, 10 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index 17276541cc..1893cce71e 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/lib/bb/command.py | |||
@@ -214,7 +214,13 @@ class CommandsSync: | |||
214 | image = params[0] | 214 | image = params[0] |
215 | base_image = params[1] | 215 | base_image = params[1] |
216 | package_queue = params[2] | 216 | package_queue = params[2] |
217 | return command.cooker.generateNewImage(image, base_image, package_queue) | 217 | timestamp = params[3] |
218 | return command.cooker.generateNewImage(image, base_image, | ||
219 | package_queue, timestamp) | ||
220 | |||
221 | def ensureDir(self, command, params): | ||
222 | directory = params[0] | ||
223 | bb.utils.mkdirhier(directory) | ||
218 | 224 | ||
219 | def setVarFile(self, command, params): | 225 | def setVarFile(self, command, params): |
220 | """ | 226 | """ |
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 49e6345ce4..4a5638fb60 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -1100,16 +1100,25 @@ class BBCooker: | |||
1100 | 1100 | ||
1101 | self.configuration.server_register_idlecallback(buildTargetsIdle, rq) | 1101 | self.configuration.server_register_idlecallback(buildTargetsIdle, rq) |
1102 | 1102 | ||
1103 | def generateNewImage(self, image, base_image, package_queue): | 1103 | def generateNewImage(self, image, base_image, package_queue, timestamp): |
1104 | ''' | 1104 | ''' |
1105 | Create a new image with a "require" base_image statement | 1105 | Create a new image with a "require"/"inherit" base_image statement |
1106 | ''' | 1106 | ''' |
1107 | image_name = os.path.splitext(image)[0] | 1107 | if timestamp: |
1108 | timestr = time.strftime("-%Y%m%d-%H%M%S") | 1108 | image_name = os.path.splitext(image)[0] |
1109 | dest = image_name + str(timestr) + ".bb" | 1109 | timestr = time.strftime("-%Y%m%d-%H%M%S") |
1110 | dest = image_name + str(timestr) + ".bb" | ||
1111 | else: | ||
1112 | if not image.endswith(".bb"): | ||
1113 | dest = image + ".bb" | ||
1114 | else: | ||
1115 | dest = image | ||
1110 | 1116 | ||
1111 | with open(dest, "w") as imagefile: | 1117 | with open(dest, "w") as imagefile: |
1112 | imagefile.write("require " + base_image + "\n") | 1118 | if base_image is None: |
1119 | imagefile.write("inherit image\n") | ||
1120 | else: | ||
1121 | imagefile.write("require " + base_image + "\n") | ||
1113 | package_install = "PACKAGE_INSTALL_forcevariable = \"" | 1122 | package_install = "PACKAGE_INSTALL_forcevariable = \"" |
1114 | for package in package_queue: | 1123 | for package in package_queue: |
1115 | package_install += str(package) + " " | 1124 | package_install += str(package) + " " |
@@ -1117,7 +1126,8 @@ class BBCooker: | |||
1117 | imagefile.write(package_install) | 1126 | imagefile.write(package_install) |
1118 | 1127 | ||
1119 | self.state = state.initial | 1128 | self.state = state.initial |
1120 | return timestr | 1129 | if timestamp: |
1130 | return timestr | ||
1121 | 1131 | ||
1122 | def updateCache(self): | 1132 | def updateCache(self): |
1123 | if self.state == state.running: | 1133 | if self.state == state.running: |
diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py index 317a2fe16d..0a04c90bc6 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): | |||
593 | toolchain_packages, | 593 | toolchain_packages, |
594 | self.configuration.default_task) | 594 | self.configuration.default_task) |
595 | 595 | ||
596 | def generate_new_image(self, image): | ||
597 | base_image = self.configuration.initial_selected_image | ||
598 | if base_image == self.recipe_model.__custom_image__: | ||
599 | base_image = None | ||
600 | packages = self.package_model.get_selected_packages() | ||
601 | self.handler.generate_new_image(image, base_image, packages) | ||
602 | |||
603 | def ensure_dir(self, directory): | ||
604 | self.handler.ensure_dir(directory) | ||
605 | |||
596 | def get_parameters_sync(self): | 606 | def get_parameters_sync(self): |
597 | return self.handler.get_parameters() | 607 | return self.handler.get_parameters() |
598 | 608 | ||
diff --git a/bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py b/bitbake/lib/bb/ui/crumbs/hig/saveimagedialog.py index 3fc389aaa1..b2fa3bd5a9 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): | |||
117 | text = self.name_entry.get_text() | 117 | text = self.name_entry.get_text() |
118 | new_text = text.replace("-","") | 118 | new_text = text.replace("-","") |
119 | if new_text.islower() and new_text.isalnum(): | 119 | if new_text.islower() and new_text.isalnum(): |
120 | print(text) | 120 | self.builder.generate_new_image(self.directory+text) |
121 | self.destroy() | 121 | self.destroy() |
122 | else: | 122 | else: |
123 | self.show_invalid_input_error_dialog() | 123 | 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 294eb5dd1f..34cd3478ed 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): | |||
176 | hobImage = self.runCommand(["matchFile", "hob-image.bb"]) | 176 | hobImage = self.runCommand(["matchFile", "hob-image.bb"]) |
177 | if self.base_image != "Start with an empty image recipe": | 177 | if self.base_image != "Start with an empty image recipe": |
178 | baseImage = self.runCommand(["matchFile", self.base_image + ".bb"]) | 178 | baseImage = self.runCommand(["matchFile", self.base_image + ".bb"]) |
179 | version = self.runCommand(["generateNewImage", hobImage, baseImage, self.package_queue]) | 179 | version = self.runCommand(["generateNewImage", hobImage, baseImage, self.package_queue, True]) |
180 | targets[0] += version | 180 | targets[0] += version |
181 | self.recipe_model.set_custom_image_version(version) | 181 | self.recipe_model.set_custom_image_version(version) |
182 | 182 | ||
@@ -426,6 +426,13 @@ class HobHandler(gobject.GObject): | |||
426 | self.commands_async.append(self.SUB_BUILD_IMAGE) | 426 | self.commands_async.append(self.SUB_BUILD_IMAGE) |
427 | self.run_next_command(self.GENERATE_IMAGE) | 427 | self.run_next_command(self.GENERATE_IMAGE) |
428 | 428 | ||
429 | def generate_new_image(self, image, base_image, package_queue): | ||
430 | base_image = self.runCommand(["matchFile", self.base_image + ".bb"]) | ||
431 | self.runCommand(["generateNewImage", image, base_image, package_queue, False]) | ||
432 | |||
433 | def ensure_dir(self, directory): | ||
434 | self.runCommand(["ensureDir", directory]) | ||
435 | |||
429 | def build_succeeded_async(self): | 436 | def build_succeeded_async(self): |
430 | self.building = False | 437 | self.building = False |
431 | 438 | ||
diff --git a/bitbake/lib/bb/ui/crumbs/imagedetailspage.py b/bitbake/lib/bb/ui/crumbs/imagedetailspage.py index a02ab610c0..f55d43f30d 100755 --- a/bitbake/lib/bb/ui/crumbs/imagedetailspage.py +++ b/bitbake/lib/bb/ui/crumbs/imagedetailspage.py | |||
@@ -624,6 +624,8 @@ class ImageDetailsPage (HobPage): | |||
624 | def save_button_clicked_cb(self, button): | 624 | def save_button_clicked_cb(self, button): |
625 | topdir = self.builder.get_topdir() | 625 | topdir = self.builder.get_topdir() |
626 | images_dir = topdir + "/recipes/images/" | 626 | images_dir = topdir + "/recipes/images/" |
627 | self.builder.ensure_dir(images_dir) | ||
628 | |||
627 | dialog = SaveImageDialog(images_dir, "Save image recipe", self.builder, | 629 | dialog = SaveImageDialog(images_dir, "Save image recipe", self.builder, |
628 | gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT) | 630 | gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT) |
629 | response = dialog.run() | 631 | response = dialog.run() |