diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py index b5cf5591fd..854a6bbfe2 100644 --- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py +++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py @@ -48,7 +48,6 @@ class LocalhostBEController(BuildEnvironmentController): def __init__(self, be): super(LocalhostBEController, self).__init__(be) - self.dburl = settings.getDATABASE_URL() self.pokydirname = None self.islayerset = False @@ -126,9 +125,17 @@ class LocalhostBEController(BuildEnvironmentController): port = i.split(" ")[-1] logger.debug("localhostbecontroller: Found bitbake server port %s" % port) - cmd = "bash -c \"source %s/oe-init-build-env-memres -1 %s && DATABASE_URL=%s %s --observe-only -u toasterui --remote-server=0.0.0.0:-1 -t xmlrpc\"" % (self.pokydirname, self.be.builddir, self.dburl, own_bitbake) + cmd = "bash -c \"source %s/oe-init-build-env-memres -1 %s && %s --observe-only -u toasterui --remote-server=0.0.0.0:-1 -t xmlrpc\"" % \ + (self.pokydirname, self.be.builddir, own_bitbake) + + # Use a copy of the current environment and add the DATABASE_URL + # for the bitbake observer process. + env = os.environ.copy() + env['DATABASE_URL'] = settings.getDATABASE_URL() + with open(toaster_ui_log_filepath, "a+") as f: - p = subprocess.Popen(cmd, cwd = self.be.builddir, shell=True, stdout=f, stderr=f) + p = subprocess.Popen(cmd, cwd = self.be.builddir, shell=True, + stdout=f, stderr=f, env=env) def _toaster_ui_started(filepath, filepos = 0): if not os.path.exists(filepath): diff --git a/bitbake/lib/toaster/toastergui/static/js/base.js b/bitbake/lib/toaster/toastergui/static/js/base.js deleted file mode 100644 index ed22a4ebc1..0000000000 --- a/bitbake/lib/toaster/toastergui/static/js/base.js +++ /dev/null @@ -1,229 +0,0 @@ -'use strict'; - -function basePageInit(ctx) { - - var newBuildButton = $("#new-build-button"); - var newBuildTargetInput; - var newBuildTargetBuildBtn; - var projectNameForm = $("#project-name-change-form"); - var projectNameContainer = $("#project-name-container"); - var projectName = $("#project-name"); - var projectNameFormToggle = $("#project-change-form-toggle"); - var projectNameChangeCancel = $("#project-name-change-cancel"); - - /* initially the current project is used unless overridden by the new build - * button in top right nav - */ - var selectedProject = libtoaster.ctx; - - var selectedTarget; - - var newBuildProjectInput = $("#new-build-button #project-name-input"); - var newBuildProjectSaveBtn = $("#new-build-button #save-project-button"); - - /* Project name change functionality */ - projectNameFormToggle.click(function(e){ - e.preventDefault(); - projectNameContainer.hide(); - projectNameForm.fadeIn(); - }); - - projectNameChangeCancel.click(function(e){ - e.preventDefault(); - projectNameForm.hide(); - projectNameContainer.fadeIn(); - }); - - $("#project-name-change-btn").click(function(e){ - var newProjectName = $("#project-name-change-input").val(); - - libtoaster.editCurrentProject({ projectName: newProjectName }, function (){ - projectName.html(newProjectName); - libtoaster.ctx.projectName = newProjectName; - projectNameChangeCancel.click(); - }); - }); - - _checkProjectBuildable(); - - $("#project-topbar .nav li a").each(function(){ - if (window.location.pathname === $(this).attr('href')) - $(this).parent().addClass('active'); - else - $(this).parent().removeClass('active'); - }); - - if ($(".total-builds").length !== 0){ - libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){ - if (prjInfo.completedbuilds) - $(".total-builds").text(prjInfo.completedbuilds.length); - }); - } - - /* Hide the button if we're on the project,newproject or importlyaer page - * or if there are no projects yet defined - * only show if there isn't already a build-target-input already - */ - if (ctx.numProjects > 0 && - ctx.currentUrl.search('newproject') < 0 && - $(".build-target-input").length === 1) { - - newBuildTargetInput = $("#new-build-button .build-target-input"); - newBuildTargetBuildBtn = $("#new-build-button").find(".build-button"); - - _setupNewBuildButton(); - newBuildButton.show(); - } else if ($(".build-target-input").length > 0) { - newBuildTargetInput = $("#project-topbar .build-target-input"); - newBuildTargetBuildBtn = $("#project-topbar .build-button"); - } else { - return; - } - - /* Hide the change project icon when there is only one project */ - if (ctx.numProjects === 1) { - $('#project .icon-pencil').hide(); - } - - /* If we have a project setup the typeahead */ - if (selectedProject.recipesTypeAheadUrl){ - libtoaster.makeTypeahead(newBuildTargetInput, selectedProject.recipesTypeAheadUrl, { format: "json" }, function (item) { - selectedTarget = item; - newBuildTargetBuildBtn.removeAttr("disabled"); - }); - } - - newBuildTargetInput.on('input', function () { - if ($(this).val().length === 0) { - newBuildTargetBuildBtn.attr("disabled", "disabled"); - } else { - newBuildTargetBuildBtn.removeAttr("disabled"); - } - }); - - newBuildTargetBuildBtn.click(function (e) { - e.preventDefault(); - - if (!newBuildTargetInput.val()) { - return; - } - - /* We use the value of the input field so as to maintain any command also - * added e.g. core-image-minimal:clean - */ - selectedTarget = { name: newBuildTargetInput.val() }; - - /* Fire off the build */ - libtoaster.startABuild(selectedProject.projectBuildsUrl, - selectedProject.projectId, selectedTarget.name, function(){ - window.location.replace(selectedProject.projectBuildsUrl); - }, null); - }); - - function _checkProjectBuildable() { - if (selectedProject.projectId === undefined || selectedProject.projectIsDefault) { - return; - } - - libtoaster.getProjectInfo(selectedProject.projectPageUrl, - function (data) { - if (data.machine === null || data.machine.name === undefined || data.layers.length === 0) { - /* we can't build anything without a machine and some layers */ - $("#new-build-button #targets-form").hide(); - $("#new-build-button .alert").show(); - } else { - $("#new-build-button #targets-form").show(); - $("#new-build-button .alert").hide(); - - /* we can build this project; enable input fields */ - newBuildTargetInput.removeAttr("disabled"); - } - }, null); - } - - /* Setup New build button in the top nav bar */ - function _setupNewBuildButton() { - - /* If we don't have a current project then present the set project - * form. - */ - if (selectedProject.projectId === undefined || selectedProject.projectIsDefault) { - $('#change-project-form').show(); - $('#project .icon-pencil').hide(); - } - - libtoaster.makeTypeahead(newBuildProjectInput, selectedProject.projectsTypeAheadUrl, { format : "json" }, function (item) { - /* successfully selected a project */ - newBuildProjectSaveBtn.removeAttr("disabled"); - selectedProject = item; - }); - - /* Any typing in the input apart from enter key is going to invalidate - * the value that has been set by selecting a suggestion from the typeahead - */ - newBuildProjectInput.on('input', function (event) { - if (event.keyCode === 13) { - return; - } - newBuildProjectSaveBtn.attr("disabled", "disabled"); - }); - - - newBuildProjectSaveBtn.click(function () { - selectedProject.projectId = selectedProject.id; - /* Update the typeahead project_id paramater */ - _checkProjectBuildable(); - - newBuildTargetInput.removeAttr("disabled"); - - /* We've got a new project so now we need to update the - * target urls. We can get this from the new project's info - */ - $.getJSON(selectedProject.projectPageUrl, { format: "json" }, - function(projectInfo){ - /* Update the typeahead to use the new selectedProject */ - selectedProject = projectInfo; - - libtoaster.makeTypeahead(newBuildTargetInput, selectedProject.recipesTypeAheadUrl, { format: "json" }, function (item) { - /* successfully selected a target */ - selectedTarget = item; - newBuildTargetBuildBtn.removeAttr("disabled"); - }); - - }); - newBuildTargetInput.val(""); - - /* set up new form aspect */ - $("#new-build-button #project a").text(selectedProject.name).attr('href', selectedProject.projectPageUrl); - $("#new-build-button .alert a").attr('href', selectedProject.projectPageUrl); - $("#project .icon-pencil").show(); - - $("#change-project-form").slideUp({ 'complete' : function () { - $("#new-build-button #project").show(); - }}); - }); - - $('#new-build-button #project .icon-pencil').click(function () { - newBuildProjectSaveBtn.attr("disabled", "disabled"); - newBuildProjectInput.val($("#new-build-button #project a").text()); - $("#cancel-change-project").show(); - $(this).parent().hide(); - $("#change-project-form").slideDown(); - }); - - $("#new-build-button #cancel-change-project").click(function () { - $("#change-project-form").hide(function () { - $('#new-build-button #project').show(); - }); - - newBuildProjectInput.val(""); - newBuildProjectSaveBtn.attr("disabled", "disabled"); - }); - - /* Keep the dropdown open even unless we click outside the dropdown area */ - $(".new-build").click (function (event) { - event.stopPropagation(); - }); - }; - -} diff --git a/bitbake/lib/toaster/toastergui/templates/base.html b/bitbake/lib/toaster/toastergui/templates/base.html index 11ac2a0355..e0b15cef12 100644 --- a/bitbake/lib/toaster/toastergui/templates/base.html +++ b/bitbake/lib/toaster/toastergui/templates/base.html @@ -3,15 +3,15 @@ {% load projecttags %} {% load project_url_tag %} - - - {% block title %} Toaster {% endblock %} - - - - - - + + + {% block title %} Toaster {% endblock %} + + + + + + @@ -40,7 +40,6 @@ projectId : {{project.id}}, projectPageUrl : {% url 'project' project.id as purl %}{{purl|json}}, projectName : {{project.name|json}}, - projectIsDefault: {% if project.is_default %}true{% else %}false{% endif %}, recipesTypeAheadUrl: {% url 'xhr_recipestypeahead' project.id as paturl%}{{paturl|json}}, layersTypeAheadUrl: {% url 'xhr_layerstypeahead' project.id as paturl%}{{paturl|json}}, machinesTypeAheadUrl: {% url 'xhr_machinestypeahead' project.id as paturl%}{{paturl|json}}, @@ -51,37 +50,24 @@ projectId : undefined, projectPageUrl : undefined, projectName : undefined, - projectIsDefault: false, {% endif %} }; - - + -{% block extraheadcontent %} -{% endblock %} - + {% csrf_token %} + - - - {% csrf_token %} - - - + - - -
-
-{% block pagecontent %} -{% endblock %} -
-
- +
+
+ {% block pagecontent %} + {% endblock %} +
+
+ - diff --git a/bitbake/lib/toaster/toastergui/templates/projecttopbar.html b/bitbake/lib/toaster/toastergui/templates/projecttopbar.html index d8f7cbdbe8..8b44acccfd 100644 --- a/bitbake/lib/toaster/toastergui/templates/projecttopbar.html +++ b/bitbake/lib/toaster/toastergui/templates/projecttopbar.html @@ -1,3 +1,21 @@ +{% load static %} + + +