poky: sumo refresh 45ef387cc5..51872d3f99
Update poky to sumo HEAD.
Awais Belal (8):
bitbake: toaster: allow pokydirname to be evaluated when all layers are local
bitbake: toaster: use a more flexible way to find bitbake
bitbake: bitbake: toaster: allow TOASTER_DIR to be overridden from cmdline
bitbake: toaster/widgets.py: avoid divide by zero issues
bitbake: toastergui/newproject.html: fix release divs
bitbake: toaster/checksettings: allow CUSTOM_XML_ONLY setting through env
bitbake: toaster/models.py: allow local paths for custom recipe's base
bitbake: toaster/layerdetails.js: don't hide local layer info
Karsten Strand (1):
bitbake: bitbake: toaster: Fix comparison in recipe template
Change-Id: I8dbcad1d98ff8d3c660563781d887a2c91db5bf2
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/poky/bitbake/bin/toaster b/poky/bitbake/bin/toaster
index ed365ee..9fffbc6 100755
--- a/poky/bitbake/bin/toaster
+++ b/poky/bitbake/bin/toaster
@@ -18,11 +18,12 @@
# along with this program. If not, see http://www.gnu.org/licenses/.
HELP="
-Usage: source toaster start|stop [webport=<address:port>] [noweb] [nobuild]
+Usage: source toaster start|stop [webport=<address:port>] [noweb] [nobuild] [toasterdir]
Optional arguments:
[nobuild] Setup the environment for capturing builds with toaster but disable managed builds
[noweb] Setup the environment for capturing builds with toaster but don't start the web server
[webport] Set the development server (default: localhost:8000)
+ [toasterdir] Set absolute path to be used as TOASTER_DIR (default: BUILDDIR/../)
"
custom_extention()
@@ -186,6 +187,7 @@
WEBSERVER=1
export TOASTER_BUILDSERVER=1
ADDR_PORT="localhost:8000"
+TOASTERDIR=`dirname $BUILDDIR`
unset CMD
for param in $*; do
case $param in
@@ -211,6 +213,9 @@
ADDR_PORT="localhost:$PORT"
fi
;;
+ toasterdir=*)
+ TOASTERDIR="${param#*=}"
+ ;;
--help)
echo "$HELP"
return 0
@@ -241,7 +246,7 @@
# 2) the build dir (in build)
# 3) the sqlite db if that is being used.
# 4) pid's we need to clean up on exit/shutdown
-export TOASTER_DIR=`dirname $BUILDDIR`
+export TOASTER_DIR=$TOASTERDIR
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE TOASTER_DIR"
# Determine the action. If specified by arguments, fine, if not, toggle it
diff --git a/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
index 16c7c80..3850334 100644
--- a/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
+++ b/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
@@ -217,9 +217,21 @@
self.setCloneStatus(bitbake,'complete',clone_total,clone_count)
logger.debug("localhostbecontroller: current layer list %s " % pformat(layerlist))
- if self.pokydirname is None and os.path.exists(os.path.join(self.be.sourcedir, "oe-init-build-env")):
- logger.debug("localhostbecontroller: selected poky dir name %s" % self.be.sourcedir)
- self.pokydirname = self.be.sourcedir
+ # Resolve self.pokydirname if not resolved yet, consider the scenario
+ # where all layers are local, that's the else clause
+ if self.pokydirname is None:
+ if os.path.exists(os.path.join(self.be.sourcedir, "oe-init-build-env")):
+ logger.debug("localhostbecontroller: selected poky dir name %s" % self.be.sourcedir)
+ self.pokydirname = self.be.sourcedir
+ else:
+ # Alternatively, scan local layers for relative "oe-init-build-env" location
+ for layer in layers:
+ if os.path.exists(os.path.join(layer.layer_version.layer.local_source_dir,"..","oe-init-build-env")):
+ logger.debug("localhostbecontroller, setting pokydirname to %s" % (layer.layer_version.layer.local_source_dir))
+ self.pokydirname = os.path.join(layer.layer_version.layer.local_source_dir,"..")
+ break
+ else:
+ logger.error("pokydirname is not set, you will run into trouble!")
# 5. create custom layer and add custom recipes to it
for target in targets:
@@ -339,6 +351,19 @@
# clean the Toaster to build environment
env_clean = 'unset BBPATH;' # clean BBPATH for <= YP-2.4.0
+ # run bitbake server from the clone if available
+ # otherwise pick it from the PATH
+ bitbake = os.path.join(self.pokydirname, 'bitbake', 'bin', 'bitbake')
+ if not os.path.exists(bitbake):
+ logger.info("Bitbake not available under %s, will try to use it from PATH" %
+ self.pokydirname)
+ for path in os.environ["PATH"].split(os.pathsep):
+ if os.path.exists(os.path.join(path, 'bitbake')):
+ bitbake = os.path.join(path, 'bitbake')
+ break
+ else:
+ logger.error("Looks like Bitbake is not available, please fix your environment")
+
# run bitbake server from the clone
bitbake = os.path.join(self.pokydirname, 'bitbake', 'bin', 'bitbake')
toasterlayers = os.path.join(builddir,"conf/toaster-bblayers.conf")
diff --git a/poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py b/poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
index 823c6f1..14298d9 100644
--- a/poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
+++ b/poky/bitbake/lib/toaster/bldcontrol/management/commands/checksettings.py
@@ -74,8 +74,9 @@
print("Loading default settings")
call_command("loaddata", "settings")
template_conf = os.environ.get("TEMPLATECONF", "")
+ custom_xml_only = os.environ.get("CUSTOM_XML_ONLY")
- if ToasterSetting.objects.filter(name='CUSTOM_XML_ONLY').count() > 0:
+ if ToasterSetting.objects.filter(name='CUSTOM_XML_ONLY').count() > 0 or (not custom_xml_only == None):
# only use the custom settings
pass
elif "poky" in template_conf:
diff --git a/poky/bitbake/lib/toaster/orm/models.py b/poky/bitbake/lib/toaster/orm/models.py
index 3a7dff8..4b77e8f 100644
--- a/poky/bitbake/lib/toaster/orm/models.py
+++ b/poky/bitbake/lib/toaster/orm/models.py
@@ -1663,6 +1663,9 @@
path_schema_two = self.base_recipe.file_path
+ path_schema_three = "%s/%s" % (self.base_recipe.layer_version.layer.local_source_dir,
+ self.base_recipe.file_path)
+
if os.path.exists(path_schema_one):
return path_schema_one
@@ -1670,6 +1673,10 @@
if os.path.exists(path_schema_two):
return path_schema_two
+ # Or a local path if all layers are local
+ if os.path.exists(path_schema_three):
+ return path_schema_three
+
return None
def generate_recipe_file_contents(self):
diff --git a/poky/bitbake/lib/toaster/toastergui/static/js/layerdetails.js b/poky/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
index 9ead393..933b65b 100644
--- a/poky/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
+++ b/poky/bitbake/lib/toaster/toastergui/static/js/layerdetails.js
@@ -359,7 +359,8 @@
if ($(this).is("dt")) {
var dd = $(this).next("dd");
if (!dd.children("form:visible")|| !dd.find(".current-value").html()){
- if (ctx.layerVersion.layer_source == ctx.layerSourceTypes.TYPE_IMPORTED){
+ if (ctx.layerVersion.layer_source == ctx.layerSourceTypes.TYPE_IMPORTED ||
+ ctx.layerVersion.layer_source == ctx.layerSourceTypes.TYPE_LOCAL) {
/* There's no current value and the layer is editable
* so show the "Not set" and hide the delete icon
*/
diff --git a/poky/bitbake/lib/toaster/toastergui/templates/newproject.html b/poky/bitbake/lib/toaster/toastergui/templates/newproject.html
index acb614e..bd03bb5 100644
--- a/poky/bitbake/lib/toaster/toastergui/templates/newproject.html
+++ b/poky/bitbake/lib/toaster/toastergui/templates/newproject.html
@@ -54,12 +54,12 @@
<span class="help-block">{{release.helptext|safe}}</span>
</div>
{% endfor %}
+ </div>
+ </div>
{% else %}
<input type="hidden" name="projectversion" value="{{releases.0.id}}"/>
{% endif %}
</div>
- </div>
- </fieldset>
{% endif %}
<div class="top-air">
<input type="submit" id="create-project-button" class="btn btn-primary btn-lg" value="Create project"/>
diff --git a/poky/bitbake/lib/toaster/toastergui/templates/recipe.html b/poky/bitbake/lib/toaster/toastergui/templates/recipe.html
index bf2cd71..3f76e65 100644
--- a/poky/bitbake/lib/toaster/toastergui/templates/recipe.html
+++ b/poky/bitbake/lib/toaster/toastergui/templates/recipe.html
@@ -176,7 +176,7 @@
<td>{{task.get_executed_display}}</td>
<td>{{task.get_outcome_display}}
- {% if task.outcome = task.OUTCOME_FAILED %}
+ {% if task.outcome == task.OUTCOME_FAILED %}
<a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
<span class="glyphicon glyphicon-download-alt
get-help" title="Download task log
diff --git a/poky/bitbake/lib/toaster/toastergui/widgets.py b/poky/bitbake/lib/toaster/toastergui/widgets.py
index a1792d9..feef7c5 100644
--- a/poky/bitbake/lib/toaster/toastergui/widgets.py
+++ b/poky/bitbake/lib/toaster/toastergui/widgets.py
@@ -511,13 +511,18 @@
buildrequest_id = build_obj.buildrequest.pk
build['buildrequest_id'] = buildrequest_id
- build['recipes_parsed_percentage'] = \
- int((build_obj.recipes_parsed /
- build_obj.recipes_to_parse) * 100)
-
- build['repos_cloned_percentage'] = \
- int((build_obj.repos_cloned /
- build_obj.repos_to_clone) * 100)
+ if build_obj.recipes_to_parse > 0:
+ build['recipes_parsed_percentage'] = \
+ int((build_obj.recipes_parsed /
+ build_obj.recipes_to_parse) * 100)
+ else:
+ build['recipes_parsed_percentage'] = 0
+ if build_obj.repos_to_clone > 0:
+ build['repos_cloned_percentage'] = \
+ int((build_obj.repos_cloned /
+ build_obj.repos_to_clone) * 100)
+ else:
+ build['repos_cloned_percentage'] = 0
tasks_complete_percentage = 0
if build_obj.outcome in (Build.SUCCEEDED, Build.FAILED):