summaryrefslogtreecommitdiff
path: root/buildstream/_frontend/widget.py
Commit message (Collapse)AuthorAgeFilesLines
* Add more log formatting optionsWilliam Salmon2019-02-071-2/+15
| | | | The 'wallclock-us' is a option that we thought we already had.
* _frontend/widget.py: Added cache usage entry in the startup headingTristan Van Berkom2019-01-241-0/+1
|
* _frontend/widget.py: Render core messages more like other messagesTristan Van Berkom2019-01-241-17/+13
| | | | | | | | | | | | | | In order to test when core activities occur by parsing the stderr in tests, we should make the messages conform more. At the same time, this restores alignment of columns in core messages with the element processing related messages. Also, _scheduler/scheduler.py is updated to make it's activity names conform to the (current) 5 character limit for the sake of alignment. The tests/frontend/logging.py test gets it's regexes updated for the log lines it checks for in stderr.
* widget.py: Avoid "showing 0 lines" messages when there are no linesTristan Maat2019-01-181-2/+3
| | | | | | | | This happened when bst is invoked with --message-lines 0 or --error-lines 0, and was arguably a little too verbose (the user explicitly asked us not to show them any lines, after all). Fixes #779
* _frontend/widget.py: Fixing new (wrong-import-order) linter errorTristan Van Berkom2018-12-261-1/+1
|
* Element: Use cached buildtree in build shells and failure shellsJonathan Maw2018-10-301-11/+0
| | | | | | | | | | | | | | | | | | | | | | | | This includes changes in app.py: * Interactive failure shell no longer uses the failed build sysroot, defaulting to the cached build tree. Changes in element.py are: * Errors caused by building don't store the failed build sysroot, instead storing that a sandbox can be created to debug the error. * When staging sources, will stage the element's cached build tree if it exists. Changes in _exceptions.py: * BstError.sandbox is now a flag of whether a sandbox can be opened up to debug the error. Changes in widget.py: * Don't try to print any information about the sandbox. Changes in _message.py: * Fix documentation so Message.sandbox is not a directory any more. This is part of #539
* Implementing relative workspacesrelative_workspacesPhillip Smyth2018-08-101-1/+3
| | | | | | | This fixes #191 A note has been added to NEWS explaining backwards compatibility issues
* Add support for include '(@)' in project.conf and .bst filesValentin David2018-08-021-2/+5
| | | | Fixes #331.
* message.py: MessagesType.SKIPPED addedJosh Smith2018-08-011-0/+1
|
* _frontend/widget.py: Render cached failures differently to successesRichard Maw2018-07-311-1/+3
|
* Convert call-sites of Element._cached() that assume successRichard Maw2018-07-311-1/+1
| | | | When we later add cached failures it needs to not treat them as successes.
* widget.py: Limit failure summary to currently failing elementstpollard/386Tom Pollard2018-07-301-3/+6
| | | | | | Change widget.py print_summary() to only print the failure messages of elements in the Failure Summary that failed on the current try.
* Remove shebangs from python filesGökçen Nurlu2018-06-191-1/+0
| | | | Fixes #424
* element.py: Do not query remote artifact caches ahead of pull/pushJürg Billeter2018-05-111-2/+0
|
* _stream.py, _pipeline.py: Refactoring of the pipeline itselfTristan Van Berkom2018-05-081-23/+14
| | | | | | | | | | | | | | | | | | | Here the pipeline becomes essentially stateless, some dangling state remains to be factored out because of frontend accesses which will be changed in a later commit. Essentially, the Pipeline.load() method no longer has any knowledge of the specific purposes of the loaded targets, and now takes a list of target groups and returns a corresponding list of element groups. The Stream() business logic methods now use other pipeline helper methods to create and filter lists from the loaded target elements. The Stream() also finally absorbs the Scheduler frontend facing APIs. However Queues are still exposed on the Stream object for logging purposes and through callbacks such that the frontend can retry elements.
* _frontend: Early logging initializationTristan Van Berkom2018-05-081-86/+59
| | | | | | | | o This makes logging independent from the Pipeline() o Removed size_request Widget() method, add context to Widget() initializer o Make the Status() widget derive anything it needs through the Context()
* _stream.py: New Stream object, main calling interface for BuildStream coreTristan Van Berkom2018-05-081-4/+4
| | | | | | This is the first part of the pipeline refactor, at this stage all calling interfaces remain the same, except that invocation of the scheduler has been moved from Pipline to Stream.
* frontend: Log which elements resolved new keysRichard Maw2018-04-181-0/+15
| | | | | | | | | | | It can be difficult to pick out important information in all the messages, so it's convenient to have classes of them collected into one place. One such class of important information is when the cache key of an element changes, such as when element's source is tracked or cached from a workspace, since it can be important to know what the cache key is for that artifact. Fixes issue #252
* _frontend/widget.py: Adhere to policy on private symbolsTristan Van Berkom2018-04-151-269/+307
| | | | This is a part of issue #285
* element.py: Rename _get_full_display_key() -> _get_display_key()Tristan Van Berkom2018-04-141-2/+2
| | | | | | The extra "full" was a bit redundant here, the Element does not export any "less than full" display key accessor, so lets use a more simple name for this.
* frontend: Redisplay failure messages in result summaryRichard Maw2018-04-121-1/+12
| | | | | It's more convenient than having to search back through all the output to find out what the cause of failure was.
* frontend: Control indentations of multi-line valuesRichard Maw2018-04-121-0/+5
|
* frontend: Summarise build log output in --no-verbose modeRichard Maw2018-04-121-10/+18
|
* frontend: Use textwrap.indent to indentRichard Maw2018-04-121-1/+2
| | | | The intent is more obvious by using an existing module.
* frontend: capture errors for later useRichard Maw2018-04-121-1/+12
| | | | This will be used to provide an error summary before the pipeline summary.
* _frontend/widget.py: Fixed regression in logfile abbreviations.Tristan Van Berkom2018-04-121-0/+4
| | | | | | Added required size_request() method to new MessageOrLogFile() widget. This came up in merge request !377
* _frontend/widget.py: Correct log line if logdir is emptyjmac/logfile-widget-correctionJim MacArthur2018-04-101-2/+3
|
* element.py: Factored out pointless extra Element._workspaced() methodTristan Van Berkom2018-04-091-1/+1
|
* element.py: Cache source consistency logic and refactor workspace logic into ↵Tristan Van Berkom2018-04-091-1/+1
| | | | | | | Element Workspaces are now element wide, so consistency edge cases must be handled at the element level instead of the source level.
* _frontend/widget.py: Print the workspace directory for %{workspace-dirs}Tristan Van Berkom2018-04-051-5/+4
| | | | | | | | Instead of printing the list of workspace directory for each source. This fixes some fallout from the changes to make workspaces element-wide instead of being on a per-source basis, which was merged as merge request !257 as a part of issue #209.
* _frontend/widget.py: Defend against empty string message detailTristan Van Berkom2018-04-051-1/+1
| | | | | | It appears we have some cases of empty detail strings that are not None, this was resulting in an IndexError when trying to strip the trailing newline from the message.detail.splitlines() result.
* _options package: Adhere to policy on private symbolsTristan Van Berkom2018-04-051-4/+3
| | | | | | | | This also adds a couple of methods to OptionPool to avoid exposing some internals to other parts of the codebase, and calls those new methods from _project.py and _frontend/widget.py This is a part of issue #285
* Fix strict setting to be consistent throughout the pipeline.Tristan Van Berkom2018-04-041-1/+1
| | | | | | | | | | | | I originally changed the configuration of strict mode to be on a per project basis in the user configuration, because the user should be able to set their preference on a per project basis. I however made the mistake to make the strict mode be considered on a per project basis within a single pipeline, this commit corrects the behavior such that when you are building a project with junctions, only the toplevel project is considered when deciding strict mode for the whole pipeline.
* _project.py: Adhere to policy on private symbolsTristan Van Berkom2018-04-031-3/+3
| | | | | | | | | | | | | | | And adjust all surrounding sources for changed symbols. Additional details: o Added Project.get_shell_config() to report the shell configuration, instead of making those members all public o Moved assertions about project specified format versions required of plugins out of Plugin.__init__, and into Project.create_element() and Project.create_source(), so we can keep more things private This is a part of issue #285
* _context.py: Adhere to policy on private symbolsTristan Van Berkom2018-04-031-1/+1
| | | | | | And adjust all surrounding sources for changed symbols. This is a part of issue #285
* _frontend/widget.py: Change heading separator to use '=' instead of '~'Tristan Van Berkom2018-04-021-1/+1
| | | | | Seems that using `~` conflicts with some markdown when trying to paste build logs in, e.g. gitlab issues.
* _frontend/widget.py: Add "Strict Build Plan" setting to session headingTristan Van Berkom2018-04-021-0/+1
| | | | Looks like this quite interesting attribute was not getting logged.
* _message.py, _frontend/widget.py: Reviving MessageType.ERRORTristan Van Berkom2018-03-211-4/+9
| | | | | | | | | | We need to distinguish between: o Errors which occurred in a task, and are related to a log file and an elapsed time. o Errors which occurred in the main process and are not related to any timed activity
* pylint - dealt with whitespace issues and disabled pep8 warningsJames Ennis2018-03-141-1/+1
|
* pylint - dealt with redefined-outer-name and redefined-built in warningsJames Ennis2018-03-141-8/+8
|
* pylint - dealt with len-as-condition warningJames Ennis2018-03-141-3/+3
|
* pylint - dealt with anomalous-backslash-in-string warningJames Ennis2018-03-141-1/+1
|
* Revert "Add sequence ID and widget for it."jmac/remove-sequence-idJim MacArthur2018-03-131-12/+0
| | | | This reverts commit 14234ccce3e7eec1153e810fab75afb2e90a2b22.
* Remove other references to SequenceID from the code and testsJim MacArthur2018-03-131-2/+1
| | | | | widget.py: Remove SequenceID from the list of widgets. tests/frontend/logging.py: Remove %{sequence} check.
* _frontend/widget.py: Never abbreviate frontend messagesTristan Van Berkom2018-03-131-1/+4
| | | | | | | Messages which come from the frontend do not have any backing log file where the remainder of the message can be reviewed. In the case of lengthly detailed messages originating from the frontend, we dont allow any abbreviation of the message.
* Remove brackets added inside widgetsJim MacArthur2018-03-011-19/+6
| | | | | | | | Brackets can now be added as plain text in a custom logging format string, so there's no need to add them in widgets. widget.py: Remove brackets. _status.py: Remove the 'brackets' optional argument to TimeCode.
* Add logfile format tokeniserJim MacArthur2018-03-011-11/+43
| | | | | | widget.py: Main body of tokenizer. _context.py: Read message-format from user config YAML. main.py: Pass in context message-format to LogLine constructor.
* Add the FixedText and WallclockTime widgetsJim MacArthur2018-03-011-0/+21
| | | | | | | | | | WallclockTime is set at the time a message is created. Since messages can be placed in queues before being rendered, this is not always the same time as the wallclock time when rendering the message, so it needs to be stored in the message. widget.py: Add the two new widgets _message.py: record system time when a message is created.
* Add sequence ID and widget for it.Jim MacArthur2018-03-011-0/+12
| | | | | | | | | | The idea of a sequence number/ID is to tie together all messages associated with a given timed activity, to make performance analysis easier. _context.py: Add sequence number with atomic increment _widget.py: SequenceID widget, which displays this value _message.py: sequence_id variable storing the sequence for a message.
* widget.py: Modify TimeCode to take a microseconds argumentJim MacArthur2018-03-011-1/+9
|