From patchwork Wed Sep 26 10:44:08 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [bitbake-devel, v2] hob/settings: implement a new tab in settings dialog to show SSTATE_MIRRORS Date: Wed, 26 Sep 2012 10:44:08 -0000 From: Cristiana Voicu X-Patchwork-Id: 37259 Message-Id: <1348656248-5807-1-git-send-email-cristiana.voicu@intel.com> To: bitbake-devel@lists.openembedded.org Add a new tab to show correctly SSTATE_MIRRORS variable. Now you can add new mirrors or delete mirror. "info" image was also changed( it is smaller, so it can be next to labels). >From "Build environment" tab, SSTATE_DIR and SSTATE_MIRRORS vars were removed. [YOCTO #2893] Signed-off-by: Cristiana Voicu --- bitbake/lib/bb/ui/crumbs/builder.py | 8 +- bitbake/lib/bb/ui/crumbs/hig.py | 180 +++++++++++++++++++++++-- bitbake/lib/bb/ui/crumbs/hobeventhandler.py | 6 +- bitbake/lib/bb/ui/crumbs/template.py | 2 +- bitbake/lib/bb/ui/icons/info/info_display.png | Bin 4558 -> 4117 bytes bitbake/lib/bb/ui/icons/info/info_hover.png | Bin 4650 -> 4167 bytes 6 files changed, 175 insertions(+), 21 deletions(-) diff --git a/bitbake/lib/bb/ui/icons/info/info_display.png b/bitbake/lib/bb/ui/icons/info/info_display.png index 6e2c44b2c9c794e7fe43859469d88605525ab3e2..5afbba29f578425ca337161130297daf47189e2a 100644 GIT binary patch delta 1467 zcmV;s1w{JJBb6W_iBL{Q4GJ0x0000DNk~Le0000O0000O2nGNE0N{5$_>+zb7qKH; z3V$GDNK#Dz0D2_=0Dyx40Qvs_0D$QL0Cg|`0P0`>06Lfe02gnPU&TfM00lrvL_t(| z+O(EUXdTxT$A5G0%)I${U-R_*?8udkiKKv<6jQ6Rp-D{&5!9;^0yZ)3rUhjYu+w5g z0$r3+TF9o|rJLaH3R$!mHJDPWRt|1bCx1{dc9dEzRE{F5FDrT<^Jebcxm`To%TuJZ ztDfO(W)9~+=lsw8pKBRo_+S)ojt}bY4%A6m`y=IrH)6=B9t= z&Ydx13`JF>SS%8TA)e>4;cR?c2=O}b{m%d_upOIPt@cJGs*FB1`WW>?bxNfYuIpl1 z7FugAT)6Ou@$vCDfurl|>pxmqS*iQJkK;JFuG_0n2y&CZ(x^9nzrMMC6Mw*#QsVpm zsW1$mZ!{W=jEqn!l?J3{Sw_3v=H9(~KfZG1%KNsonVFfH>vp?!&-0K{;`ts`s+io6 zWf_j+`~r9az=|pn6O$8f`M&?c=;$a>Ey8tOgb)CvY0A!{9k#Z%Zf$LCz2-R16Gx65 z`DJaSCc`is#A&VRv^#8UY=7|Z;X~He*1od($?9FZP$(dT_*S`G#t;0#q-fpaDa$gn z*2HoAjFj?C$8pMOno6B%wAKtCRL6A)iy@Utg}@KyfR{y~P&g!|41M3nw(UXkz8hn( zEQ`69=Kg;BFSl;W>~q?rlp;wI z7XQ5Xw`Q}6l#=!J^?xU6g6-HyDG!nu01rS+eR(SG6J?Ac&+|R5Gfk2tBuPTE*`(EM zk#rN%G(~56Uwpr%wSQWz3m|4^XYWZV^Us&tca67kD*%zEDSwwPUHW-7sUkaTKaOL9Ab;q!D$fTK=s1qLcJ12RrBdnF12t8tqSNXyF+TDBgXIT5G{*d7et!Oh z)iaDS*tSg=gjiU({SOZf|b~#`F|2NfI)Z4NmIthMSq0S(}@idw-{1uU`fJwP&L_(&=xrflw`d zv^1S%+2tEIZcM-T?t6!pK3a;hEE6U-V1cj%)u`G%dGh4uxpU{%rlzLe0^R_c`*yM; z9RQ@1IF3UQ1Qbg}mjAIVfLY)yFulCIT<&x_5@2j>tQ$qqDsT&U8~EoJ-75Yw0DA-; V$U2m<77PFY002ovPDHLkV1jFy(lY=6 delta 1909 zcmV-*2a5QWAkHHpiBL{Q4GJ0x0000DNk~Le0000U0000V2nGNE0Pt*m2eCF@3J(Ti zOGiWi{{a60|De66laV18e*gz`Nliru+yep=H#MA9y^#O_2LMS#K~zY`omWe2Tvr+X z&f~skJjTJ9iO2DyO_WF7WYfA8v6#pU(zJE5D4V7ZptMAySr8M6f

qY!C=qR8%!U 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 delta 2002 zcmV;@2QB!=AgUxGiBL{Q4GJ0x0000DNk~Le0000U0000V2nGNE0Pt*m2eCF@3J(Ti zOGiWi{{a60|De66laV18e*gz`Nliru+yep=H!+(yd58c22V6-+K~zY`omX3I99J3s z&N*}Dva^@W+Pl6HU*fn)NC=e`XdMuCLnEA8*lHpLDKvnn@<8$u$O{O>OL;*cASehy zLQ`Iy~2Bu{~*L7%`20};*9EKqRKY-_ZXt)iyu6xDvyipXk|_%jaIq=kslaLIL@F9@$(LmSwF127ow@5k(Pv--qkEs4dp8u&{uIg$2|W zYiC^7JvB8w6+RTWzqkLW<2WxkMTfSuw7_v3hJ6SWLsO? zOXYHzwzapRe^e@=u&I!GniNwU$7qHRI~ls{>IK8Jea+*LCQI4#PBH zn8tEiC>a6pa{wn+0rz(IvaYVK7mF=LtF65aZEbDXEyT0H6&#GVpcIIkMR-Ow)wMf3y@ZIUs!|NLcGx#@I8AF|L%N3QM1* zORf}3X%pPGk;~^$tJNOcy>qvv8M-lSnr0d*g$IojPY5C4I+w?e9eeM1KbgjLk{WDYu(PNlRVpz$)Yc=uy@y8y&bKt21 zer5U_;=fGJ`O;&t|h*G(rhwjIAR5wUUAc0p{oC7ix<&xULJv z7$(LiYJGiu&~+U`h-TkzG?A9TGj_((e=N%qAmC7VIIthU4}H{XHPq|%rU!-&-}hl! zCWH`3oLDPKst6&_bv@Jy`GTjU;!?@9Z`T7BLLiL7l#e~ngQjT+`~XoDK|~_W@p@+@ zA(u*`R4U!0t) zf=bnVPJU1SyT)F`%`^pJfSo&cP6C*wot>R;?E2KMyHOZH2(gOx)>9}n+YTxn0#H~T zi8Y!Or<5`t9vOZf04RW9Y;5eTe-I)L!*IiVDcP(_&+}{mARs`qhV&?k=-QA!(EmYz z!NI{>J9g}NApypgEn9xI_j7yy?R!2p0#|5K=B-<|MmXn|uItdb4%0Nhsg$B?2g=I9 z5(EJ>rupOJ<39s1yK)1WJ9OyKbCVxVo~g`LoMf`BTx|#;V2mLMg3Wfue}0dE{Dm>r z&N(0FoP*E@2}nwbD2(9yzC3#L=;hYd*7NJ_T(nxP{^IoM)8DAq>$zmzSvimEwK}TR zD(0*6@O>YQG30VN6kCeO7n&nAnaQcQejq0%CT@;AG4c$6cQ)EG?M9>V%d=SOT8xT~X9*J3ak> z0B~e>cJ|p<|NQFqoBz7mP6(k%&J!X5LAve&fQ%)IEycyr(b360e|z>^0Pqt4)Bn>e z%#suVe67)FjKB5fTcsQSyiuxDDw!Y%_~PQC$vKZ5$7yiR#n!D`t3yLW)1952Zv*(< zz9;rwTU=bkwd>dL{{UlTcm$VTzhnW}17H}yW&k+=9RNH4cL2Bmt^v6Cz?}`6pQLm7x5;^Gynhq07*qoM6N<$f--iy`~Uy| diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py index 267fde1..555ba73 100755 --- a/bitbake/lib/bb/ui/crumbs/builder.py +++ b/bitbake/lib/bb/ui/crumbs/builder.py @@ -187,7 +187,7 @@ class Configuration: self.curr_distro = template.getVar("DISTRO") self.dldir = template.getVar("DL_DIR") self.sstatedir = template.getVar("SSTATE_DIR") - self.sstatemirror = template.getVar("SSTATE_MIRROR") + self.sstatemirror = template.getVar("SSTATE_MIRRORS") try: self.pmake = int(template.getVar("PARALLEL_MAKE").split()[1]) except: @@ -237,7 +237,7 @@ class Configuration: template.setVar("DISTRO", self.curr_distro) template.setVar("DL_DIR", self.dldir) template.setVar("SSTATE_DIR", self.sstatedir) - template.setVar("SSTATE_MIRROR", self.sstatemirror) + template.setVar("SSTATE_MIRRORS", self.sstatemirror) template.setVar("PARALLEL_MAKE", "-j %s" % self.pmake) template.setVar("BB_NUMBER_THREADS", self.bbthread) template.setVar("PACKAGE_CLASSES", " ".join(["package_" + i for i in self.curr_package_format.split()])) @@ -326,7 +326,7 @@ def hob_conf_filter(fn, data): keys = ["MACHINE_HOB", "SDKMACHINE_HOB", "PACKAGE_CLASSES_HOB", \ "BB_NUMBER_THREADS_HOB", "PARALLEL_MAKE_HOB", "DL_DIR_HOB", \ - "SSTATE_DIR_HOB", "SSTATE_MIRROR_HOB", "INCOMPATIBLE_LICENSE_HOB"] + "SSTATE_DIR_HOB", "SSTATE_MIRRORS_HOB", "INCOMPATIBLE_LICENSE_HOB"] for key in keys: var_hob = data.getVar(key) if var_hob: @@ -697,7 +697,7 @@ class Builder(gtk.Window): self.handler.set_distro(self.configuration.curr_distro) self.handler.set_dl_dir(self.configuration.dldir) self.handler.set_sstate_dir(self.configuration.sstatedir) - self.handler.set_sstate_mirror(self.configuration.sstatemirror) + self.handler.set_sstate_mirrors(self.configuration.sstatemirror) self.handler.set_pmake(self.configuration.pmake) self.handler.set_bbthreads(self.configuration.bbthread) self.handler.set_rootfs_size(self.configuration.image_rootfs_size) diff --git a/bitbake/lib/bb/ui/crumbs/hig.py b/bitbake/lib/bb/ui/crumbs/hig.py index f304a68..31747b3 100644 --- a/bitbake/lib/bb/ui/crumbs/hig.py +++ b/bitbake/lib/bb/ui/crumbs/hig.py @@ -51,6 +51,14 @@ class SettingsUIHelper(): label.show() return label + def gen_label_info_widget(self, content, tooltip): + table = gtk.Table(1, 10, False) + label = self.gen_label_widget(content) + info = HobInfoButton(tooltip, self) + table.attach(label, 0, 1, 0, 1, xoptions=gtk.FILL) + table.attach(info, 1, 2, 0, 1, xoptions=gtk.FILL, xpadding=10) + return table + def gen_spinner_widget(self, content, lower, upper, tooltip=""): hbox = gtk.HBox(False, 12) adjust = gtk.Adjustment(value=content, lower=lower, upper=upper, step_incr=1) @@ -117,12 +125,94 @@ class SettingsUIHelper(): else: hbox.pack_start(entry, expand=True, fill=True) - info = HobInfoButton(tooltip, self) - hbox.pack_start(info, expand=False, fill=False) + if tooltip != "": + info = HobInfoButton(tooltip, self) + hbox.pack_start(info, expand=False, fill=False) hbox.show_all() return hbox, entry + def gen_mirror_entry_widget(self, content, index, match_content=""): + hbox = gtk.HBox(False, 12) + entry = gtk.Entry() + content = content[:-2] + entry.set_text(content) + entry_match = gtk.Entry() + entry_match.set_text(match_content) + + table = gtk.Table(2, 6, True) + hbox.pack_start(table, expand=True, fill=True) + label_configuration = gtk.Label("Configuration") + label_mirror_url = gtk.Label("Mirror URL") + label_match = gtk.Label("Match") + label_replace_with = gtk.Label("Replace with") + + combo = gtk.combo_box_new_text() + combo.append_text("Standard") + combo.append_text("Custom") + if match_content == "": + combo.set_active(0) + else: + combo.set_active(1) + combo.connect("changed", self.on_combo_changed, index) + + delete_button = HobAltButton("Delete") + delete_button.connect("clicked", self.delete_cb, index, entry) + if content == "": + delete_button.set_sensitive(False) + + entry_match.connect("changed", self.insert_entry_match_cb, index) + entry.connect("changed", self.insert_entry_cb, index, delete_button) + + if match_content == "": + table.attach(label_configuration, 0, 1, 0, 1) + table.attach(label_mirror_url, 1, 2, 0, 1) + table.attach(combo, 0, 1, 1, 2) + table.attach(entry, 1, 5, 1, 2) + table.attach(delete_button, 5, 6, 1, 2) + else: + table.attach(label_configuration, 0, 1, 0, 1) + table.attach(label_match, 1, 2, 0, 1) + table.attach(label_replace_with, 2, 3, 0, 1) + table.attach(combo, 0, 1, 1, 2) + table.attach(entry_match, 1, 2, 1, 2) + table.attach(entry, 2, 5, 1, 2) + table.attach(delete_button, 5, 6, 1, 2) + + hbox.show_all() + return hbox + + def insert_entry_match_cb(self, entry_match, index): + self.sstatemirrors_list[index][2] = entry_match.get_text() + + def insert_entry_cb(self, entry, index, button): + self.sstatemirrors_list[index][1] = entry.get_text() + if entry.get_text() == "": + button.set_sensitive(False) + else: + button.set_sensitive(True) + + def on_combo_changed(self, combo, index): + if combo.get_active_text() == "Standard": + self.sstatemirrors_list[index][0] = 0 + else: + self.sstatemirrors_list[index][0] = 1 + self.refresh_shared_state_page() + + def delete_cb(self, button, index, entry): + if index == 0 and len(self.sstatemirrors_list)==1: + entry.set_text("") + else: + self.sstatemirrors_list.pop(index) + self.refresh_shared_state_page() + + def add_mirror(self, button): + tooltip = "Select the pre-built mirror that will speed your build" + index = len(self.sstatemirrors_list) + sm_list = [0, "", "file://(.*)"] + self.sstatemirrors_list.append(sm_list) + self.refresh_shared_state_page() + # # CrumbsDialog # @@ -197,7 +287,8 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): # class members for internal use self.dldir_text = None self.sstatedir_text = None - self.sstatemirror_text = None + self.sstatemirrors_list = [] + self.sstatemirrors_changed = 0 self.bb_spinner = None self.pmake_spinner = None self.rootfs_size_spinner = None @@ -331,7 +422,14 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): def response_cb(self, dialog, response_id): self.configuration.dldir = self.dldir_text.get_text() self.configuration.sstatedir = self.sstatedir_text.get_text() - self.configuration.sstatemirror = self.sstatemirror_text.get_text() + self.configuration.sstatemirror = "" + for mirror in self.sstatemirrors_list: + if mirror[1] != "" or len(self.sstatemirrors_list)==1: + if mirror[1].endswith("\\1"): + smirror = mirror[2] + " " + mirror[1] + " \\n " + else: + smirror = mirror[2] + " " + mirror[1] + "\\1 \\n " + self.configuration.sstatemirror += smirror self.configuration.bbthread = self.bb_spinner.get_value_as_int() self.configuration.pmake = self.pmake_spinner.get_value_as_int() @@ -382,24 +480,79 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): sub_vbox.pack_start(label, expand=False, fill=False) sub_vbox.pack_start(dldir_widget, expand=False, fill=False) + return advanced_vbox + + def create_shared_state_page(self): + advanced_vbox = gtk.VBox(False, 6) + advanced_vbox.set_border_width(6) + sub_vbox = gtk.VBox(False, 6) advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) - label = self.gen_label_widget("Select SSTATE directory:") + content = "Shared state directory" tooltip = "Select a folder that caches your prebuilt results" - sstatedir_widget, self.sstatedir_text = self.gen_entry_widget(self.configuration.sstatedir, self, tooltip) + label = self.gen_label_info_widget(content, tooltip) + sstatedir_widget, self.sstatedir_text = self.gen_entry_widget(self.configuration.sstatedir, self) sub_vbox.pack_start(label, expand=False, fill=False) sub_vbox.pack_start(sstatedir_widget, expand=False, fill=False) sub_vbox = gtk.VBox(False, 6) advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) - label = self.gen_label_widget("Select SSTATE mirror:") - tooltip = "Select the pre-built mirror that will speed your build" - sstatemirror_widget, self.sstatemirror_text = self.gen_entry_widget(self.configuration.sstatemirror, self, tooltip) - sub_vbox.pack_start(label, expand=False, fill=False) - sub_vbox.pack_start(sstatemirror_widget, expand=False, fill=False) + content = "Shared state mirrors" + tooltip = "URLs pointing to pre-built mirrors that will speed your build. " + tooltip += "Select the \'Standard\' configuration if the structure of your " + tooltip += "mirror replicates the structure of your local shared state directory. " + tooltip += "For more information on shared state mirrors, check the Yocto Project Reference Manual." + table = self.gen_label_info_widget(content, tooltip) + sub_vbox.pack_start(table, expand=False, fill=False) + + searched_string = "file://" + + if self.sstatemirrors_changed == 0: + self.sstatemirrors_changed = 1 + sstatemirrors = self.configuration.sstatemirror + while sstatemirrors.find(searched_string) != -1: + if sstatemirrors.find(searched_string,1) != -1: + sstatemirror = sstatemirrors[:sstatemirrors.find(searched_string,1)] + sstatemirrors = sstatemirrors[sstatemirrors.find(searched_string,1):] + else: + sstatemirror = sstatemirrors + sstatemirrors = sstatemirrors[1:] + + sstatemirror_fields = [x for x in sstatemirror.split(' ') if x.strip()] + if sstatemirror_fields[0] == "file://(.*)": + sm_list = [ 0, sstatemirror_fields[1], "file://(.*)"] + else: + sm_list = [ 1, sstatemirror_fields[1], sstatemirror_fields[0]] + self.sstatemirrors_list.append(sm_list) + + index = 0 + for mirror in self.sstatemirrors_list: + if mirror[0] == 0: + sstatemirror_widget = self.gen_mirror_entry_widget(mirror[1], index) + else: + sstatemirror_widget = self.gen_mirror_entry_widget(mirror[1], index, mirror[2]) + sub_vbox.pack_start(sstatemirror_widget, expand=False, fill=False) + index += 1 + + sub_vbox = gtk.VBox(False, 6) + advanced_vbox.pack_start(sub_vbox, expand=False, fill=False) + add_mirror_button = HobAltButton("Add another mirror") + add_mirror_button.set_size_request(100, -1) + add_mirror_button.connect("clicked", self.add_mirror) + sub_vbox.pack_start(add_mirror_button, expand=False, fill=False) return advanced_vbox + def refresh_shared_state_page(self): + page_num = self.nb.get_current_page() + self.nb.remove_page(page_num); + self.nb.insert_page(self.create_shared_state_page(), gtk.Label("Shared state"),page_num) + self.show_all() + self.nb.set_current_page(page_num) + + def create_proxy_page(self): advanced_vbox = gtk.VBox(False, 6) advanced_vbox.set_border_width(6) @@ -461,9 +614,10 @@ class SimpleSettingsDialog (CrumbsDialog, SettingsUIHelper): def create_visual_elements(self): self.nb = gtk.Notebook() - self.nb.set_show_tabs(True) + self.nb.set_show_tabs(True) self.nb.append_page(self.create_build_environment_page(), gtk.Label("Build environment")) - self.nb.append_page(self.create_proxy_page(), gtk.Label("Proxies")) + self.nb.append_page(self.create_shared_state_page(), gtk.Label("Shared state")) + self.nb.append_page(self.create_proxy_page(), gtk.Label("Proxies")) self.nb.set_current_page(0) self.vbox.pack_start(self.nb, expand=True, fill=True) self.vbox.pack_end(gtk.HSeparator(), expand=True, fill=True) diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py index 49db2de..ed55acc 100644 --- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py +++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py @@ -297,8 +297,8 @@ class HobHandler(gobject.GObject): def set_sstate_dir(self, directory): self.runCommand(["setVariable", "SSTATE_DIR_HOB", directory]) - def set_sstate_mirror(self, url): - self.runCommand(["setVariable", "SSTATE_MIRROR_HOB", url]) + def set_sstate_mirrors(self, url): + self.runCommand(["setVariable", "SSTATE_MIRRORS_HOB", url]) def set_extra_size(self, image_extra_size): self.runCommand(["setVariable", "IMAGE_ROOTFS_EXTRA_SPACE", str(image_extra_size)]) @@ -421,7 +421,7 @@ class HobHandler(gobject.GObject): params["distro"] = self.runCommand(["getVariable", "DISTRO"]) or "defaultsetup" params["pclass"] = self.runCommand(["getVariable", "PACKAGE_CLASSES"]) or "" params["sstatedir"] = self.runCommand(["getVariable", "SSTATE_DIR"]) or "" - params["sstatemirror"] = self.runCommand(["getVariable", "SSTATE_MIRROR"]) or "" + params["sstatemirror"] = self.runCommand(["getVariable", "SSTATE_MIRRORS"]) or "" num_threads = self.runCommand(["getCpuCount"]) if not num_threads: diff --git a/bitbake/lib/bb/ui/crumbs/template.py b/bitbake/lib/bb/ui/crumbs/template.py index 7309bb6..e303c3a 100644 --- a/bitbake/lib/bb/ui/crumbs/template.py +++ b/bitbake/lib/bb/ui/crumbs/template.py @@ -137,7 +137,7 @@ class RecipeFile(ConfigFile): class TemplateMgr(gobject.GObject): - __gLocalVars__ = ["MACHINE", "PACKAGE_CLASSES", "DISTRO", "DL_DIR", "SSTATE_DIR", "SSTATE_MIRROR", "PARALLEL_MAKE", "BB_NUMBER_THREADS", "CONF_VERSION"] + __gLocalVars__ = ["MACHINE", "PACKAGE_CLASSES", "DISTRO", "DL_DIR", "SSTATE_DIR", "SSTATE_MIRRORS", "PARALLEL_MAKE", "BB_NUMBER_THREADS", "CONF_VERSION"] __gBBLayersVars__ = ["BBLAYERS", "LCONF_VERSION"] __gRecipeVars__ = ["DEPENDS", "IMAGE_INSTALL"]