]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/log
thirdparty/openembedded/openembedded-core-contrib.git
9 years agotoaster: lsupdates Add progress information and clean up logging
Michael Wood [Thu, 21 Jul 2016 13:43:29 +0000 (14:43 +0100)] 
toaster: lsupdates Add progress information and clean up logging

Adds basic progress % information and provides better description of
what is happening.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: tests: Remove references to LayerSource model
Michael Wood [Thu, 21 Jul 2016 13:43:28 +0000 (14:43 +0100)] 
toaster: tests: Remove references to LayerSource model

Remove and replace layersource model references in the tests and test
data. Remove the orm/test as this only tested LayerSource interactions
which have now been removed.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: Replace references to LayerSource models
Michael Wood [Thu, 21 Jul 2016 13:43:27 +0000 (14:43 +0100)] 
toaster: Replace references to LayerSource models

Replace references to the now deprecated layersource models across
Toaster with the new enums for layer source types.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: lsupdates Add layerindex fetcher
Michael Wood [Thu, 21 Jul 2016 13:43:26 +0000 (14:43 +0100)] 
toaster: lsupdates Add layerindex fetcher

Move and refactor the layerindex layer source update mechanism so that
we don't have to track the layerindex objects in the toaster database.
Move this out of the orm and into the management command.

Paves the way for future improvement to allow you to specify a layer
index server as an argument to the command.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: models Remove LayerSource models and replace with enum
Michael Wood [Thu, 21 Jul 2016 13:43:25 +0000 (14:43 +0100)] 
toaster: models Remove LayerSource models and replace with enum

We had a lot of complexity around different layer sources to allow for
multiple sources and different priorities for these source. This was
implemented using rigged abstract classes which represented the
different layer sources when in fact just an enum/flag on the
layer_version object is sufficient for our needs.

Remove the LayerSourcePriority object as this is not needed. We no longer
have a problem of multiple layers coming from multiple sources so this
is not needed. Two migrations are added to first remove the child models
which represented layersources. Then a second migration is needed to
remove the LayerSource model it's self as Django can't understand the
non-standard base class dependency. Triggering this issue:
https://docs.djangoproject.com/en/1.8/topics/migrations/#dependencies

Clean up a number of flake8 warnings in classes which were modified.

[YOCTO #9853]

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: bldcollector admin Remove LayerSourceAdmin
Michael Wood [Thu, 21 Jul 2016 13:43:24 +0000 (14:43 +0100)] 
toaster: bldcollector admin Remove LayerSourceAdmin

Remove the LayerSource admin from django admin interface. LayerSources
are not going to be manageable from the admin interface.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: loadconf remove Loading LayerSources
Michael Wood [Thu, 21 Jul 2016 13:43:23 +0000 (14:43 +0100)] 
toaster: loadconf remove Loading LayerSources

We don't need to configure layer sources in the initial configuration as
this information is provided by the models.

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agolib/bb/progress: avoid possibility of start event being reported twice
Paul Eggleton [Fri, 22 Jul 2016 12:18:39 +0000 (00:18 +1200)] 
lib/bb/progress: avoid possibility of start event being reported twice

In MultiStageProgressReporter, set a guard when we start the progress
so that it can't happen more than once. This fixes "Initialising
tasks.." being shown twice in succession when running bitbake in
non-interactive terminal mode.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: don't display ETA for tasks with progress
Paul Eggleton [Fri, 22 Jul 2016 12:18:38 +0000 (00:18 +1200)] 
knotty: don't display ETA for tasks with progress

It turns out that progress information we can extract from a task is
rarely apportioned closely enough to the time taken for the ETA to be
accurate, so showing it is going to be misleading most of the time for
anything but the most basic of examples. Let's just remove it and avoid
misleading (or worse, annoying) the user.

Fixes [YOCTO #9986].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: fix some minor bugs in BBProgress
Paul Eggleton [Fri, 22 Jul 2016 12:18:37 +0000 (00:18 +1200)] 
knotty: fix some minor bugs in BBProgress

If you specify custom widgets then we don't want to assume where the
"extra" position is - you should have to specify it, and if it isn't
specified it shouldn't just wipe out the last widget or you can start to
see odd behaviour if you're modifying the code.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agofetch: copy files with -H
Enrico Scholz [Thu, 26 May 2016 00:08:06 +0000 (02:08 +0200)] 
fetch: copy files with -H

When using a PREMIRROR with plain (non-unpack) files, a SRC_URI like

SRC_URI = "file://devmem2.c"

will cause devmem2.c to be a symlink in the WORKDIR pointing to the
local PREMIRROR.

Trying to apply a patch on this file will either modify the file on
the PREMIRROR or will fail due to sanity checks:

ERROR: devmem2-1.0-r7 do_patch: Command Error: 'quilt --quiltrc /cache/build-ubuntu/sysroots/x86_64-oe-linux/etc/quiltrc push' exited with 1  Output:
Applying patch devmem2-fixups-2.patch
File devmem2.c is not a regular file -- refusing to patch

Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocache: Don't interleave pickle cache file writing
Richard Purdie [Fri, 22 Jul 2016 10:28:57 +0000 (11:28 +0100)] 
cache: Don't interleave pickle cache file writing

For some reason the data written in this way is coming back out the
files out of order. I've not been able to simplify the test case to a
point where this was standalone reproducible. Simplify the code and
write out the cache files sequentially since this seems to avoid the
errors and makes the code more readable.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocache: Add better cache loading sanity checks
Richard Purdie [Fri, 22 Jul 2016 10:28:23 +0000 (11:28 +0100)] 
cache: Add better cache loading sanity checks

We've seen cache corruption where the pairs come out in a different
order to the way we saved them for unknown reasons. Add better sanity
checking to give a more user friendly error rather than a crash/traceback.

Also allows the system to reparse and recover.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocache: Drop/simplify pointless type checking
Richard Purdie [Fri, 22 Jul 2016 10:27:51 +0000 (11:27 +0100)] 
cache: Drop/simplify pointless type checking

Since we no longer have random data like version fields in these structures
and we can assume any extra cache data subclasses our class, simplify the
code.

This is mostly reindenting after removal of the pointless type checks.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocache: Improve versions fields handling
Richard Purdie [Fri, 22 Jul 2016 10:27:21 +0000 (11:27 +0100)] 
cache: Improve versions fields handling

Firstly, don't store the versions fields in memory in the cache objects
data store. This just complicates the code for no good reason.

Secondly, write the version fields to all cache files, not just the
core one. This makes everything consistent and easier.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocache: Correctly handle missing extra caches
Richard Purdie [Thu, 21 Jul 2016 16:27:35 +0000 (17:27 +0100)] 
cache: Correctly handle missing extra caches

If an "extras" cache file is corrupted, the system would not notice
and later fail with errors about missing entries. Add a test for this
which means we can fall back to re-parsing in those cases.

[YOCTO #9902]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocache: Move the parsing message to a more logical place
Richard Purdie [Thu, 21 Jul 2016 16:25:19 +0000 (17:25 +0100)] 
cache: Move the parsing message to a more logical place

Otherwise you can look at the log and wonder why parsing isn't happening
when it really is due to other code paths.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake: implement idle timeout for xmlrpc server
Ed Bartosh [Tue, 19 Jul 2016 20:20:34 +0000 (23:20 +0300)] 
bitbake: implement idle timeout for xmlrpc server

Idle timeout can be specified either by -T/--idle-timeout option or
by sessing BBTIMEOUT environment variable. Bitbake xmlrpc server
will unload itself when timeout exprired, i.e. when server is idle
for more than <idle timeout> seconds.

[YOCTO #5534]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake: implement --foreground command line option
Ed Bartosh [Tue, 19 Jul 2016 19:54:38 +0000 (22:54 +0300)] 
bitbake: implement --foreground command line option

This option makes bitbake xmlrpc server to run in foreground.
It should be useful for debugging purposes.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake-user-manual: Added new section on command-line execution
Scott Rifenbark [Wed, 8 Jun 2016 01:24:27 +0000 (18:24 -0700)] 
bitbake-user-manual: Added new section on command-line execution

Needed a section on executing a list of task and recipe combinations.

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake-user-manual: Applied review edits to "Recursive Dependencies"
Scott Rifenbark [Tue, 19 Jul 2016 18:35:26 +0000 (11:35 -0700)] 
bitbake-user-manual: Applied review edits to "Recursive Dependencies"

Added a minor tweak to the third paragraph to be more inclusive
of the topic.

Fixes [YOCTO #9970]

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Fixed typo in the BBDEBUG variable description.
Scott Rifenbark [Sat, 16 Jul 2016 19:04:57 +0000 (12:04 -0700)] 
bitbake-user-manual: Fixed typo in the BBDEBUG variable description.

In the BBDEBUG variable description, the "-d" parameter needed to
be "-D".  Fixed it.

Fixes [YOCTO #9950]

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Added review changes to BBCLASSEXTEND description
Scott Rifenbark [Thu, 14 Jul 2016 19:52:30 +0000 (12:52 -0700)] 
bitbake-user-manual: Added review changes to BBCLASSEXTEND description

Fixes [YOCTO #9909]

Added some technical clarifications to the existing note to be clear
about what is causing the limitations in this case.  Applied some
formatting fixed to for the use of the include word.

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Added review changes to recursive section.
Scott Rifenbark [Thu, 14 Jul 2016 19:00:09 +0000 (12:00 -0700)] 
bitbake-user-manual: Added review changes to recursive section.

Applied formatting to a "after" word that should be
<filename>after</filename>.  Also added a new clarifying paragraph in
the "Recursive Dependencies" section.

Fixes [YOCTO #9861]

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Addeds support for the Perforce Fetcher
Andrew Bradford [Thu, 14 Jul 2016 18:42:56 +0000 (11:42 -0700)] 
bitbake-user-manual: Addeds support for the Perforce Fetcher

Added a new Perforce Fetcher section in the same spirit as the existing
sections for other supported fetchers.  Changes included the new section,
removal of the bulleted item that mentioned this fetcher as an
"additional" fetcher, and the creation of a new variable in the glossary
named P4DIR.

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Added clarifying note to BBCLASSEXTEND variable.
Scott Rifenbark [Tue, 12 Jul 2016 21:08:32 +0000 (14:08 -0700)] 
bitbake-user-manual: Added clarifying note to BBCLASSEXTEND variable.

Fixes [YOCTO #9909]

Added a note that talks about how the BBCLASSEXTEND mechanism
adds recipe variants.

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Added a note providing examples of task dependencies
Scott Rifenbark [Tue, 12 Jul 2016 20:41:12 +0000 (13:41 -0700)] 
bitbake-user-manual: Added a note providing examples of task dependencies

Fixes [YOCTO #9861]

In the "Dependencies internal to the .bb File" section, I placed a
note providing more detail on how recipes are built regarding task
dependency.

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Updated dependency section for tasks
Scott Rifenbark [Mon, 11 Jul 2016 21:24:22 +0000 (14:24 -0700)] 
bitbake-user-manual: Updated dependency section for tasks

Fixes [YOCTO #9861]

I updated the section on dependencies to give a couple of examples
for task dependencies within a single recipe and dependencies for
tasks between two individual recipes.

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Updated the defaults for getVar and getVarFlag
Scott Rifenbark [Thu, 9 Jun 2016 17:32:39 +0000 (10:32 -0700)] 
bitbake-user-manual: Updated the defaults for getVar and getVarFlag

There is no default.

Fixes [YOCTO #9683]

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agobitbake-user-manual: Added new section on command-line execution
Scott Rifenbark [Wed, 8 Jun 2016 01:24:27 +0000 (18:24 -0700)] 
bitbake-user-manual: Added new section on command-line execution

Needed a section on executing a list of task and recipe combinations.

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
9 years agocooker: Fix incorrect dot file generation
Richard Purdie [Wed, 20 Jul 2016 15:08:17 +0000 (16:08 +0100)] 
cooker: Fix incorrect dot file generation

In the runqueue cleanup/conversion, "dep" was mistakenly used where "tid" should
be leading to incorrect task-depends.dot files and causing general confusion.
Fix this, its clearly incorrect looking at the code.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster-tests: add class SeleniumTestCaseBase for browser tests
Aníbal Limón [Tue, 19 Jul 2016 15:49:10 +0000 (16:49 +0100)] 
toaster-tests: add class SeleniumTestCaseBase for browser tests

In order to reuse the Selenium helper outside a Django
environment (for functional testing), add a new module
containing the base class SeleniumTestCaseBase, which only
inherits unittest.TestCase

Add a class SeleniumTestCase with multiple inheritance of
StaticLiveServerTestCase and SeleniumTestCaseBase to prevent
existing tests from breaking.

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake: main: implement server autostart feature
Ed Bartosh [Mon, 18 Jul 2016 16:07:18 +0000 (19:07 +0300)] 
bitbake: main: implement server autostart feature

If environment variable BBSERVER == 'autostart' bitbake will
automatically load server if it's not running yet.

If host and port are in bitbake.lock then bitbake tries to check
if server is running and responses to commands and starts new
server only if this check fails.

[YOCTO #5534]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake: utils: add BBSERVER to the list of preserved variables
Ed Bartosh [Mon, 18 Jul 2016 16:07:17 +0000 (19:07 +0300)] 
bitbake: utils: add BBSERVER to the list of preserved variables

All environment variables that are not in the list returned by
preserved_envvars_exported are cleaned by bb.utils.clean_environment.

Added BBSERVER to the list as we need to access it in bb/main.py
after the call of bb.utils.clean_environment.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake: xmlrpc: implement check of connection to server
Ed Bartosh [Mon, 18 Jul 2016 16:07:16 +0000 (19:07 +0300)] 
bitbake: xmlrpc: implement check of connection to server

Implemented check_connection function. The purpose of this function
is to check if bitbake server is accessible and functional.
To check this this function tries to connect to bitbake server and
run getVariable command.

This API is going to be used to implement autoloading of bitbake
server.

[YOCTO #5534]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agolib/bb/utils: no need to unsetenv when manipulating os.environ
Ross Burton [Mon, 18 Jul 2016 22:10:41 +0000 (23:10 +0100)] 
lib/bb/utils: no need to unsetenv when manipulating os.environ

Doing both os.unsetenv(foo) and then del os.environ[foo] is pointless as del
will call unsetenv automatically.

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agofetch2: implement progress support
Paul Eggleton [Wed, 6 Jul 2016 04:26:10 +0000 (16:26 +1200)] 
fetch2: implement progress support

Implement progress reporting support specifically for the fetchers. For
fetch tasks we don't necessarily know which fetcher will be used (we
might initially be fetching a git:// URI, but if we instead download a
mirror tarball we may fetch that over http using wget). These programs
also have different abilities as far as reporting progress goes (e.g.
wget gives us percentage complete and rate, git gives this some of the
time depending on what stage it's at). Additionally we filter out the
progress output before it makes it to the logs, in order to prevent the
logs filling up with junk.

At the moment this is only implemented for the wget and git fetchers
since they are the most commonly used (and svn doesn't seem to support
any kind of progress output, at least not without doing a relatively
expensive remote file listing first).

Line changes such as the ones you get in git's output as it progresses
don't make it to the log files, you only get the final state of the line
so the logs aren't filled with progress information that's useless after
the fact.

Part of the implementation for [YOCTO #5383].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster-tests: package count/size shouldn't show for non-image builds
Elliot Smith [Tue, 12 Jul 2016 22:54:58 +0000 (15:54 -0700)] 
toaster-tests: package count/size shouldn't show for non-image builds

If a build doesn't produce any image files, the package count
and size shouldn't be shown.

Also add some metadata to build dashboard elements so it is clear
what they're for, and so they can be queried by the tests.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster-tests: new custom image button shouldn't show for non-image builds
Elliot Smith [Tue, 12 Jul 2016 22:54:57 +0000 (15:54 -0700)] 
toaster-tests: new custom image button shouldn't show for non-image builds

[YOCTO #9514]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster-tests: add tests for build artifact display on build dashboard
Elliot Smith [Tue, 12 Jul 2016 22:54:56 +0000 (15:54 -0700)] 
toaster-tests: add tests for build artifact display on build dashboard

Add tests for display of image, kernel and SDK artifacts on the
build dashboard, checking that the "Images" option in the left-hand
menu and the "Build artifacts" section display correctly for
different types of build.

Also add metadata to elements on the build dashboard so it's clearer
what they represent, and to assist in finding them in the tests.

Add a method to the test helper to make it more convenient to check
whether a single element matching a selector exists.

[YOCTO #8556]
[YOCTO #8563]
[YOCTO #9500]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: the customise image button shouldn't rely on targets
Elliot Smith [Tue, 12 Jul 2016 22:54:55 +0000 (15:54 -0700)] 
toaster: the customise image button shouldn't rely on targets

The build dashboard customise image button (for creating a new
custom image based on an image recipe used by a build) shouldn't
rely on targets: whether a new custom image can be created or not
depends on whether any of the recipes used by the build are image
recipes.

Modify the method used to determine whether a build has customisable
images to look at the image recipes used during the build, rather
than whether the targets run by the build refer to image recipes.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: add package manifest path to Target objects
Elliot Smith [Tue, 12 Jul 2016 22:54:54 +0000 (15:54 -0700)] 
toaster: add package manifest path to Target objects

Store the path to the *.rootfs.manifest file for targets which
generate images.

A link to the package manifest is displayed in the build dashboard
for targets which produce image files.

Like the license manifest path, if a target would have produced
the package manifest (but didn't, because it already existed), that
path is copied from the target which did produce the package
manifest.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: better display of targets which produced no images
Elliot Smith [Tue, 12 Jul 2016 22:54:53 +0000 (15:54 -0700)] 
toaster: better display of targets which produced no images

SDK targets (populate_sdk) produce SDK artifacts but no image files.
Currently, these targets appear under the "Images" heading in the
build dashboard, even though they aren't strictly image targets.

Change the heading to "Build artifacts". Also remove the section
which states that a build produced no image files: this is not
correct for populate_sdk targets (those targets don't produce
image files under any circumstances); and other changes mean
that all targets which do produce images will now show those
files.

The check for whether to display the "Build artifacts" section also
needs to change, as we show targets here which didn't produce any
images but did produce SDK artifacts.

[YOCTO #8556]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: show manifests in their own section of the build dashboard
Elliot Smith [Tue, 12 Jul 2016 22:54:52 +0000 (15:54 -0700)] 
toaster: show manifests in their own section of the build dashboard

In the build dashboard, add a section for manifests to each target,
which will contain the license and package manifests for a target.

As we don't record the package manifest (yet), just move the
license manifest link to that section for now.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: only show "New custom image" button for builds with image targets
Elliot Smith [Tue, 12 Jul 2016 22:54:51 +0000 (15:54 -0700)] 
toaster: only show "New custom image" button for builds with image targets

Add a has_image_targets() method to Build, and use that to hide
the "New custom image" button on the build dashboard if a build
has no targets which build images.

[YOCTO #9514]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: use has_images() methods to display images correctly
Elliot Smith [Tue, 12 Jul 2016 22:54:50 +0000 (15:54 -0700)] 
toaster: use has_images() methods to display images correctly

In the build dashboard, we had issues with showing images correctly,
as we were using the is_image property of targets to determine
whether a target would have image files. This property can
be set to True if a target refers to an image recipe
(e.g. "core-image-minimal"), even if the task used in the build
didn't produce any image files.

By adding has_images() methods to the Target and Build objects,
which count associated Target_Image_File objects,
we can correctly determine whether a target has image files
associated with it, and if any of the targets for a build has
image files. This means that we can screen out the left-hand
"Images" menu options for builds which contained image-related
targets (e.g. "core-image-minimal") but which didn't produce
any images (e.g. "rootfs" task).

[YOCTO #9500]
[YOCTO #9784]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobuildinfohelper: only record image files for tasks which make images
Elliot Smith [Tue, 12 Jul 2016 22:54:49 +0000 (15:54 -0700)] 
buildinfohelper: only record image files for tasks which make images

If a target is built which is classified as an "image" target
(e.g. "core-image-minimal"), Toaster reads the list of files in
the image (from the files-in-image.txt file).

However, Toaster continues to do this for builds which don't
produce images, if the recipe providing the target is an
image recipe. This can result in a list of files in the image
being attached to a target which didn't produce an image (e.g.
rootfs).

When associating files with an image, ensure that only targets
with a task which produces an image have "files in the image"
associated with them.

[YOCTO #9784]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: improve scan for SDK artifacts
Elliot Smith [Tue, 12 Jul 2016 22:54:48 +0000 (15:54 -0700)] 
toaster: improve scan for SDK artifacts

SDK artifacts were previously picked up by toaster.bbclass and
notified to buildinfohelper (via toasterui). The artifacts
were then added to the Build object, so that it wasn't clear
which artifact went with which target; we were also unable
to attach SDK artifacts to a Build if they had already been
attached to a previous build.

Now, toaster.bbclass just notifies the TOOLCHAIN_OUTPUTNAME when
a populate_sdk* target completes. The scan is moved to buildinfohelper,
where we search the SDK deploy directory for files matching
TOOLCHAIN_OUTPUTNAME and attach them to targets (not builds).

If an SDK file is not produced by a target, we now look for a
similar, previously-run target which did produce artifacts.
If there is one, we clone the SDK artifacts from that target
onto the current one.

This all means that we can show SDK artifacts by target, and should
always get artifacts associated with a target, regardless of whether
it really build them.

This requires an additional model, TargetSDKFile, which tracks
the size and path of SDK artifact files with respect to Target
objects.

[YOCTO #8556]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobuildinfohelper: fix retrieval of targets
Elliot Smith [Tue, 12 Jul 2016 22:54:47 +0000 (15:54 -0700)] 
buildinfohelper: fix retrieval of targets

When buildinfohelper records the targets for a build, it looks
up any existing targets for a build and creates them if they
are not present. This is because in the case of Toaster-triggered
builds, the Target objects have already been created (inside
triggerBuild()) and don't need to be recreated; but in the case
of cli builds, the Target objects have to be created by
buildinfohelper.

The issue is that the code for retrieving an existing target for
a build only looks for Targets with a matching target and build,
e.g. Targets for build X with target "core-image-minimal". But it
is perfectly legitimate to call bitbake with a command like
"bitbake core-image-minimal:do_populate_sdk
core-image-minimal:do_populate_sdk_ext". In such a case, the
code which looks for matching targets finds two objects, as it
doesn't filter by task.

Add the task into the filter for the Target so that only one
Target object is be returned. Note that a command
line like "bitbake recipe:task recipe:task" will still cause an
error as bitbake doesn't de-duplicate the command line arguments
and will run the recipe:task combination twice.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: attach kernel artifacts to targets
Elliot Smith [Tue, 12 Jul 2016 22:54:46 +0000 (15:54 -0700)] 
toaster: attach kernel artifacts to targets

The bzImage and modules files were previously attached to a build,
rather than to the target which produced them. This meant it was
not possible to determine which kernel artifact produced by a
build came from which target; which in turn made it difficult to
associate existing kernel artifact with targets when those
targets didn't produce artifacts (e.g. if the same machine + target
combination was built again and didn't produce a bzImage or modules
file because those files already existed).

By associating kernel artifacts with the target (via a new
TargetArtifactFile model), we make it possible to find all
the artifacts for a given machine + target combination. Then, in
cases where a build is completed but its targets don't produce
any artifacts, we can find a previous Target object with the same
machine + target and copy its artifacts to the targets for a
just-completed build.

Note that this doesn't cover SDK artifacts yet, which are still
retrieved in toaster.bbclass and show up as "Other artifacts",
lumped together for the whole build rather than by target.

[YOCTO #8556]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: improve image file suffix retrieval
Elliot Smith [Tue, 12 Jul 2016 22:54:45 +0000 (15:54 -0700)] 
toaster: improve image file suffix retrieval

Refactor retrieval of suffix from image file path, making it a
a method on Target_Image_File. This makes it easier to use this
in the build dashboard for individual images, plus reduces the
complexity of the code required to get all of the image file
suffixes for a build.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: do image and artifact scan on BuildCompleted
Elliot Smith [Tue, 12 Jul 2016 22:54:44 +0000 (15:54 -0700)] 
toaster: do image and artifact scan on BuildCompleted

Move the image and artifact scan code from toaster.bbclass and
consolidate its logic with the existing logic in buildinfohelper.

Remove handler setup for events which used to be fired from
toaster.bbclass but which are now handled directly by buildinfohelper.

[YOCTO #8556]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: display Target targets in build dashboard
Elliot Smith [Tue, 12 Jul 2016 22:54:43 +0000 (15:54 -0700)] 
toaster: display Target targets in build dashboard

The build dashboard was showing the targets for the build in the page
heading and title as "Target object".

Add a filter which extracts the "target" from each Target object
as a string so that the heading and title display correctly.

Also sort the image file suffixes alphabetically.

[YOCTO #8556]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agorunqueue: improve exception logging
Ed Bartosh [Fri, 15 Jul 2016 16:44:01 +0000 (09:44 -0700)] 
runqueue: improve exception logging

Runqueue errors direct the user to view the "failure below",
but no additional error message is available.

Log the stacktrace so that the user can see what went wrong.

Also fix a typo in the log message.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agolib/bb/utils.py: return sorted OrderedDict in explode_dep_versions2
Robert Yang [Mon, 18 Jul 2016 03:42:51 +0000 (20:42 -0700)] 
lib/bb/utils.py: return sorted OrderedDict in explode_dep_versions2

The OrderedDict's item is sorted by insertion order, there might be a
problem when build the same recipe again, for example:
- First build of acl:
  Depends: libattr1 (>= 2.4.47), libc6 (>= 2.24)
- Second build of acl:
  Depends: libc6 (>= 2.24), libattr1 (>= 2.4.47)

They are exactly the same depends, but tools like "diff" doesn't think
so. Return sorted OrderedDict will fix the problem.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: avoid errors when fetching outside of a task
Paul Eggleton [Fri, 15 Jul 2016 08:54:30 +0000 (20:54 +1200)] 
knotty: avoid errors when fetching outside of a task

In a few places we use the fetcher code to fetch files outside of a
task, for example uninative in OE. In that case the pid of the event is
0 and that was causing an error in BBUIHelper.eventHandler(). Check the
pid and do nothing if it's 0.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobuild: don't use $B as the default cwd for functions
Ross Burton [Thu, 14 Jul 2016 18:56:22 +0000 (19:56 +0100)] 
build: don't use $B as the default cwd for functions

When bitbake executes a shell or Python function it can cd/chdir() into a
directory before executing the task. If no directory is specified then the
default of $B is used.  However $B is an OpenEmbedded variable and BitBake
shouldn't be aware of it.

To solve this change the semantics slightly so that if no directory is
specified, the current working directory isn't changed.  There's also a sanity
check that emits a warning if a Python task does os.chdir() without restoring
the old path, and the previous working directory is restored.

This does change semantics: whereas before a function in OE would have $B as the
working directory unless specified, now the working directory is the top of the
build tree.  Any breakage this causes can be solved by either adding
do_some_task[dirs] = "${B}" or by using absolute paths in the task.

[ YOCTO #4634 ]

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agolib/bb/build.py: decode the command as UTF-8
Ross Burton [Fri, 15 Jul 2016 10:25:42 +0000 (11:25 +0100)] 
lib/bb/build.py: decode the command as UTF-8

The messaging FIFO is UTF-8, so decode the command as UTF-8 as well as the value
as otherwise "bberror" != b("bberror") and none of the messages from shell
functions are ever displayed.

Also add an else to the command parser so unhandled commands are noticed.

[ YOCTO #9947 ]

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agolib/bb/utils: fix set_process_name
Ross Burton [Tue, 12 Jul 2016 15:14:25 +0000 (16:14 +0100)] 
lib/bb/utils: fix set_process_name

With Python 3 create_string_buffer needs a bytes() not a str() but as we were
catching all exceptions nobody noticed.

[ YOCTO #9910 ]

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: tests Add selenium test for layerdetails page
Michael Wood [Wed, 6 Jul 2016 17:22:39 +0000 (18:22 +0100)] 
toaster: tests Add selenium test for layerdetails page

This tests:
 - Adding remove layer from project
 - Deleting layer
 - Editing layer fields

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: add Layer delete front end feature to layerdetails
Michael Wood [Wed, 6 Jul 2016 17:22:38 +0000 (18:22 +0100)] 
toaster: add Layer delete front end feature to layerdetails

Add the front end feature to delete a layer from the layer details page.

[YOCO #9184]

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: api Add util function for returning the error response
Michael Wood [Wed, 6 Jul 2016 17:22:37 +0000 (18:22 +0100)] 
toaster: api Add util function for returning the error response

Also clean up flake8 warnings in XhrBuildRequest

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: layerdetails api Fix saving of git revision of a layer
Michael Wood [Wed, 6 Jul 2016 17:22:36 +0000 (18:22 +0100)] 
toaster: layerdetails api Fix saving of git revision of a layer

Update, clean up and move the api for updating a layerversion from the
views to api. Also update the layerdetails page to include the
layerversion id in the url getter.

[YOCTO #8952]

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobuildinfohelper: ensure task datetimes are timezone-aware
Elliot Smith [Wed, 6 Jul 2016 11:00:35 +0000 (12:00 +0100)] 
buildinfohelper: ensure task datetimes are timezone-aware

When using toaster-eventreplay to run a bitbake event file
through toasterui/buildinfohelper, errors occur when the
tasks are updated with buildstats info:

  RuntimeWarning: DateTimeField Task.started received a naive
  datetime (2016-07-06 09:15:22.070000) while time zone support
  is active.

This is because a method in buildinfohelper returns a naive
datetime, but Django is expecting timezone-aware datetimes.

Ensure that datetimes used to set the started/ended times on
tasks are converted to timezone-aware datetimes.

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoeventreplay: rewrite the script
Ed Bartosh [Wed, 6 Jul 2016 11:00:34 +0000 (12:00 +0100)] 
eventreplay: rewrite the script

Rewritten toaster-eventreplay to make code working as expected,
more compact and readable.

[YOCTO #9585]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoeventreplay: reorganize imports
Ed Bartosh [Wed, 6 Jul 2016 11:00:33 +0000 (12:00 +0100)] 
eventreplay: reorganize imports

Cleaned up module imports:
- Removed unused imports
- Removed import of print_function
- Removed duplicated imports
- Splitted importing bb.lib to 2 lines

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoeventreplay: replace MockConfigParameters with namedtuple
Ed Bartosh [Wed, 6 Jul 2016 11:00:32 +0000 (12:00 +0100)] 
eventreplay: replace MockConfigParameters with namedtuple

class MockConfigParameters has only one attribute and only __init__
method. Replacing it with namedtuple makes code less nested and more
readable.

[YOCTO #9585]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoeventreplay: fix event loading code
Ed Bartosh [Wed, 6 Jul 2016 11:00:31 +0000 (12:00 +0100)] 
eventreplay: fix event loading code

Event objects are represented by base64-encoded strings in
the event file and can't be loaded by existing eventreplay code.

Fixed the code of loading events from file by decoding base64 strings
into the binary form and loading them with pickle.load.

[YOCTO #9585]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoeventprelay: implement setEventMask command
Ed Bartosh [Wed, 6 Jul 2016 11:00:30 +0000 (12:00 +0100)] 
eventprelay: implement setEventMask command

Stored event mask list as self.eventmask for future use.
Fixed Exception: Command setEventMask not implemented.

[YOCTO #9585]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoeventreplay: add MockConnection.getEventHandle method
Ed Bartosh [Wed, 6 Jul 2016 11:00:29 +0000 (12:00 +0100)] 
eventreplay: add MockConnection.getEventHandle method

Fixed AttributeError: 'MockConnection' object has no attribute
'getEventHandle'

[YOCTO #9585]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: fix layout for command-line builds in recent builds area
Elliot Smith [Mon, 4 Jul 2016 11:52:53 +0000 (12:52 +0100)] 
toaster: fix layout for command-line builds in recent builds area

Command-line builds were displayed incorrectly, so that the
HTML elements for other builds were being "consumed" by the
command-line build elements due to incorrect positioning of
element end tags.

Fix by ensuring end tags close elements in the right places.

As the indentation was all over the place in the most recent
builds section template, it was almost impossible to see what the
problem was. So that was fixed, too.

[YOCTO #9842]

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake-worker: don't reassign sys.stdout
Ed Bartosh [Mon, 4 Jul 2016 21:53:59 +0000 (00:53 +0300)] 
bitbake-worker: don't reassign sys.stdout

Worker needs input stream in binary mode as it reads binary content
from it. Current code does it by detaching a buffer from sys.stdin
and assigning it back to sys.stdin.

Detached buffer is io.BufferedReader in binary mode. This operation
is implicit as its purpose is not easily understandable from the code.
Replacing it with fdopen(sys.stdin.fileno(), 'rb') should make the
code more understandable.

Assigning the buffer to sys.stdin is not needed as worker doesn't
use sys.stdin. Moreover, it leads to difficult to debug issues down
the stack. For example, devpyshell doesn't work without reopening
sys.stdin in text mode. This is not needed anymore after this fix as
sys.stdin is not changed in worker code and remains in text mode.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: views Fix most frequently built target in project reporting
Michael Wood [Mon, 4 Jul 2016 15:34:46 +0000 (16:34 +0100)] 
toaster: views Fix most frequently built target in project reporting

Clean up and fix the most frequently built targets for the "Most built
recipes" section for the project configuration page.

[YOCTO #9846]

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: layerBtn avoid connecting handler to other build buttons
Michael Wood [Mon, 4 Jul 2016 15:34:45 +0000 (16:34 +0100)] 
toaster: layerBtn avoid connecting handler to other build buttons

Some pages contain other build buttons which may have the same class
attached. Make sure that we only select the buttons in the tables where
layerBtn is used.

[YOCTO #9841]

Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agobitbake: toaster-tests: tests for project config
Sujith H [Wed, 22 Jun 2016 09:10:42 +0000 (10:10 +0100)] 
bitbake: toaster-tests: tests for project config

Add basic tests to validate the value, user types
in the text box for DL_DIR and SSTATE_DIR. Added
test case to validate the first char and inclusion
of space between the characters.

[YOCTO #9646]

Signed-off-by: Sujith H <sujith.h@gmail.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: fix validation checks for DL_DIR and SSTATE_DIR
Sujith H [Wed, 22 Jun 2016 09:10:41 +0000 (10:10 +0100)] 
toaster: fix validation checks for DL_DIR and SSTATE_DIR

Validation logic on the project configuration page
prevented a user from adding ${variable} to these paths.

Update validation so a user can see a better message
when they type characters into the text inputs.
Two types of validation are implemented.

Either:

* The value should start with a "/", to allow absolute paths.

or

* The value should start with a "$", to allow bitbake
   variables like ${TOPDIR}.

[YOCTO #9646]

Signed-off-by: Sujith H <sujith.h@gmail.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: remove SSTATE_MIRRORS from projectconf
Sujith H [Fri, 24 Jun 2016 15:25:54 +0000 (16:25 +0100)] 
toaster: remove SSTATE_MIRRORS from projectconf

Remove SSTATE_MIRRORS from getting blacklisted. Hence the SSTATE_MIRRORS
should be removed from projectconf.html file so that users can know that
this variable is no more blacklisted.

[YOCTO #9598]

Signed-off-by: Sujith H <sujith.h@gmail.com>
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: remove SSTATE_MIRRORS from blacklists in views
Sujith H [Fri, 24 Jun 2016 15:25:53 +0000 (16:25 +0100)] 
toaster: remove SSTATE_MIRRORS from blacklists in views

Remove SSTATE_MIRRORS variable from blacklists in views.py
This helps user to point mirrors using SSTATE_MIRRORS with
toaster.

[#YOCTO 9598]

Signed-off-by: Sujith H <sujith.h@gmail.com>
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoprogress: Ensure missing start event is fired
Richard Purdie [Thu, 7 Jul 2016 13:27:43 +0000 (14:27 +0100)] 
progress: Ensure missing start event is fired

The init function of the parent class fires a progress event for 0
progress rather than a start event. UI code was assuming that progress
events should always have a start event first. This change ensures that
the start event is correctly generated.

This fixes crashes that were seen in knotty in some configurations.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: Handle process indicators more gracefully
Richard Purdie [Thu, 7 Jul 2016 13:26:34 +0000 (14:26 +0100)] 
knotty: Handle process indicators more gracefully

Mistakes can happen with the generation of the progress events, change
knotty to be more tolerant of this rather than crashing, reporting to the
user when something unexpected happens. I haven't debugged why multiple
finish events appear to be triggered.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agorunqueue: report progress for "Preparing RunQueue" step
Paul Eggleton [Thu, 23 Jun 2016 10:59:12 +0000 (22:59 +1200)] 
runqueue: report progress for "Preparing RunQueue" step

When "Preparing RunQueue" shows up you can expect to wait up to 30
seconds while it works - which is a bit long to leave the user waiting
without any kind of output. Since the work being carried out during this
time is divided into stages such that it's practical to determine
internally how it's progressing, replace the message with a progress
bar.

Actually what happens during this time is two major steps rather than
just one - the runqueue preparation itself, followed by the
initialisation prior to running setscene tasks. I elected to have the
progress bar cover both as one (there doesn't appear to be much point in
doing otherwise from a user perspective). I did however describe it as
"initialising tasks".

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agorunqueue: add ability to enforce that tasks are setscened
Paul Eggleton [Thu, 23 Jun 2016 10:59:11 +0000 (22:59 +1200)] 
runqueue: add ability to enforce that tasks are setscened

Add the ability to enter a mode where only a specified whitelist of
tasks can be executed outright; everything else must be successfully
provided in the form of a setscene task (or covered by a setscene task).
Any setscene failure outside of the whitelist will cause the build to
fail immediately instead of running the real task, and any real tasks
that would execute outside of the whitelist cause an immediate build
failure when it comes to executing the runqueue as well.

The mode is enabled by setting BB_SETSCENE_ENFORCE="1", and the
whitelist is specified through BB_SETSCENE_ENFORCE_WHITELIST, consisting
of pn:taskname pairs. A single % character can be substituted for the pn
value to match any target explicitly specified on the bitbake command
line. Wildcards * and ? can also be used as per standard unix file name
matching for both pn and taskname.

Part of the implementation of [YOCTO #9367].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: add quiet output mode
Paul Eggleton [Thu, 23 Jun 2016 10:59:10 +0000 (22:59 +1200)] 
knotty: add quiet output mode

Quiet output mode disables printing most messages (below warnings) to
the console; however these messages still go to the console log file.
This is primarily for cases where bitbake is being launched
interactively from some other process, but where full console output is
not needed.

Because of the need to keep logging all normal events to the console
log, this functionality was implemented within the knotty UI rather
than in bb.msg (where verbose mode is implemented). We don't currently
have a means of registering command line options from the UI end, thus
the option actually has to be registered in main.py regardless of the
UI, however I didn't feel like it was worth setting up such a mechanism
just for this option.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: show task progress bar
Paul Eggleton [Thu, 23 Jun 2016 10:59:09 +0000 (22:59 +1200)] 
knotty: show task progress bar

In addition to the "currently running n tasks (x of y)" message, show a
progress bar for another view on how much of the build is left. We have
to take care to reset it when moving from the scenequeue to the
runqueue, and explicitly don't include an ETA since not all tasks take
equal time and thus it isn't possible to estimate the time remaining
with the information available.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: add code to support showing progress for sstate object querying
Paul Eggleton [Thu, 23 Jun 2016 10:59:08 +0000 (22:59 +1200)] 
knotty: add code to support showing progress for sstate object querying

Add support code on the BitBake side to allow sstate.bbclass in
OpenEmbedded to report progress when it is checking for availability of
artifacts from shared state mirrors.

Part of the implementation for [YOCTO #5853].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agolib/bb/progress: add MultiStageProgressReporter
Paul Eggleton [Thu, 23 Jun 2016 10:59:06 +0000 (22:59 +1200)] 
lib/bb/progress: add MultiStageProgressReporter

Add a class to help report progress in a task that consists of multiple
stages, some of which may have internal progress (do_rootfs within
OpenEmbedded is one example). Each stage is weighted to try to give
a reasonable representation of progress over time.

Part of the implementation for [YOCTO #5383].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agolib: implement basic task progress support
Paul Eggleton [Thu, 23 Jun 2016 10:59:05 +0000 (22:59 +1200)] 
lib: implement basic task progress support

For long-running tasks where we have some output from the task that
gives us some idea of the progress of the task (such as a percentage
complete), provide the means to scrape the output for that progress
information and show it to the user in the default knotty terminal
output in the form of a progress bar. This is implemented using a new
TaskProgress event as well as some code we can insert to do output
scanning/filtering.

Any task can fire TaskProgress events; however, if you have a shell task
whose output you wish to scan for progress information, you just need to
set the "progress" varflag on the task. This can be set to:
 * "percent" to just look for a number followed by a % sign
 * "percent:<regex>" to specify your own regex matching a percentage
   value (must have a single group which matches the percentage number)
 * "outof:<regex>" to look for the specified regex matching x out of y
   items completed (must have two groups - first group needs to be x,
   second y).
We can potentially extend this in future but this should be a good
start.

Part of the implementation for [YOCTO #5383].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: import latest python-progressbar
Paul Eggleton [Thu, 23 Jun 2016 10:59:04 +0000 (22:59 +1200)] 
knotty: import latest python-progressbar

Since we're going to make some minor extensions to it, it makes sense to
bring in the latest version of python-progressbar. Its structure has
changed a little but the API hasn't; however we do need to ensure our
overridden _needs_update() function's signature in BBProgress() matches
properly.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agoknotty: provide a symlink to the latest console log
Paul Eggleton [Thu, 23 Jun 2016 10:59:03 +0000 (22:59 +1200)] 
knotty: provide a symlink to the latest console log

If you're looking to find the latest console log repeatedly it can be a bit
tedious - let's just create a symlink just as we do with other logs to
make it easy to find.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agofetch2/wget: attempt checkstatus again if it fails
Ross Burton [Thu, 30 Jun 2016 21:32:24 +0000 (22:32 +0100)] 
fetch2/wget: attempt checkstatus again if it fails

Some services such as SourceForge seem to struggle to keep up under load, with
the result that over half of the autobuilder checkuri runs fail with
sourceforge.net "connection timed out".

Attempt to mitigate this by re-attempting once the network operation on failure.

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agolib/bb/build.py: remove task flag in deltask()
Robert Yang [Wed, 15 Jun 2016 02:42:10 +0000 (19:42 -0700)] 
lib/bb/build.py: remove task flag in deltask()

Otherwise the function like d.getVarFlag(e, 'task', True) which is used by
do_listtasks will still get it, and list the deleted tasks.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocooker: clean up EvertWriter
Ed Bartosh [Mon, 20 Jun 2016 11:00:52 +0000 (14:00 +0300)] 
cooker: clean up EvertWriter

Restructured EventWriter code to make it more readable:
 - got rid of init_file method as it's called only once
 - renamed exception variable e -> err
 - renamed event variable e -> evt
 - simplified main 'if' structure of send method

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocooker: replace EventLogWriteHandler with namedtuple
Ed Bartosh [Mon, 20 Jun 2016 11:00:51 +0000 (14:00 +0300)] 
cooker: replace EventLogWriteHandler with namedtuple

class EventLogWriteHandler is a simple wrapper class with only one
class member. Replacing it with namedtuple makes code less nested and more
readable.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocooker: don't remove event file
Ed Bartosh [Mon, 20 Jun 2016 11:00:50 +0000 (14:00 +0300)] 
cooker: don't remove event file

There is no need to remove output file as it gets rewritten by
open(self.eventfile, 'w') anyway.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocooker: encode event objects to base64
Ed Bartosh [Mon, 20 Jun 2016 11:00:49 +0000 (14:00 +0300)] 
cooker: encode event objects to base64

pickle converts python objects into the binary form that can't be
decoded to text and therefore can't be converted to JSON format.

Attempt to convert event objects raises this error:
TypeError:
    b'\x80\x03cbb.runqueue\nrunQueueTaskSkipped\nq\x00)...
    is not JSON serializable

Encoded pickled event objects to base64 to be able to convert data
structure to JSON.

[YOCTO #9803]

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agocooker: move EventLogWriteHandler to the top module level
Ed Bartosh [Mon, 20 Jun 2016 11:00:48 +0000 (14:00 +0300)] 
cooker: move EventLogWriteHandler to the top module level

EventLogWriteHandler object was created and used in
BBCooker.initConfigurationData.
This causes creation of multiple EventLogWriteHandler objects
and results in duplicated entries in the output event file
as BBCooker.initConfigurationData is called multiple times.

Added eventlogfile parameter to EventLogWriteHandler to avoid using
global variable DEFAULT_EVENTFILE.
Moved EventLogWriteHandler to the module level.
Created EventLogWriteHandler object in BBCooker.__init__ to ensure that only
one handler object is created.

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agodepexp.py: port to gtk+3
Jussi Kukkonen [Mon, 20 Jun 2016 12:20:03 +0000 (15:20 +0300)] 
depexp.py: port to gtk+3

The code is still a bit icky (and should be refactored to not use
Gdk.threads_enter/leave) but it should work about as reliably as
it did with Gtk+2.

Based on earlier patches by Maxin and Joshua.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agotoaster: remove last css file with bootstrap v2 license
bavery [Thu, 16 Jun 2016 21:14:48 +0000 (14:14 -0700)] 
toaster: remove last css file with bootstrap v2 license

Remove unused css file that still had the bootstrap v2 license in it.

Signed-off-by: bavery <brian.avery@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agorunqueue: Use tid instead of taskid in find_chains()
George McCollister [Thu, 16 Jun 2016 20:22:03 +0000 (15:22 -0500)] 
runqueue: Use tid instead of taskid in find_chains()

In 2c88afb6 find_chains()'s taskid argument was renamed to tid but
taskid is still used as key to explored_deps dictionary. Use tid instead
of taskid.

Signed-off-by: George McCollister <george.mccollister@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9 years agofetch2/perforce: Rework to support SRCREV and P4CONFIG
Andrew Bradford [Thu, 9 Jun 2016 13:44:08 +0000 (09:44 -0400)] 
fetch2/perforce: Rework to support SRCREV and P4CONFIG

In recipes which use the perforce fetcher, enable use of SRCREV to
specify any of: ${AUTOREV}, changelist number, p4date, or label.  This
is more in-line with how the other fetchers work for source control
systems.

Allow p4 to use the P4CONFIG env variable to define the server URL,
username, and password if not provided in a recipe.

This does change existing perforce fetcher usage by recipes and will
likely need those recipes which use the perforce fetcher to be updated.
No recipes in oe-core use the perforce fetcher.

References [YOCTO #6303]

Signed-off-by: Andrew Bradford <andrew.bradford@kodakalaris.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>