summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* main_quickstart.rst: Add links/references to other sections of the docsjjardon/getting_startedJames Ennis2018-04-122-4/+4
|
* Add doc/source/examples.rstJavier Jardón2018-04-122-0/+9
|
* Add doc/source/first_project.rstJavier Jardón2018-04-122-0/+81
| | | | | This is a minimal example of a bst project done by Paul Sherwood
* source/index.rst: Replace current "Installing" with "Getting started" sectionJavier Jardón2018-04-121-1/+2
|
* Add doc/source/main_quickstart.rstJavier Jardón2018-04-121-0/+77
| | | | Directly copied from https://wiki.gnome.org/SamThursfield/BuildStreamQuickStart
* NEWS: Mention failed job summaryRichard Maw2018-04-121-0/+4
|
* tests: Check that output includes log files of failed buildsRichard Maw2018-04-121-0/+28
|
* 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.
* _scheduler/trackqueue.py: Mark skipped elements as tracked.Tristan Van Berkom2018-04-131-0/+3
| | | | | | | | This ensures their state will be updated, it is especially important for sourceless elements which are scheduled to be tracked, like stack elements. This fixes a regression from my previous refactor or Sources which added Element._tracking_done()
* Fix disaster while making cross junction tracking optional.Tristan Van Berkom2018-04-133-85/+83
| | | | | | | | | | | | | | | | | This disaster was introduced in fece8cc81e8d8412e32c6667682a33e7d2f9dafe When doing `bst build --track`, we were: o first scheduling every element to be tracked o later filtering out the cross junction elements o finally asserting consistency state, which would trigger an error because we previously scheduled for tracking. Fixed this by moving all code which resolves elements to track into Pipeline.initialize(), and removing special element list handling from the individual build/fetch/track commands.
* _pipeline.py: Fix inconsistent element error to print element fullnames.Tristan Van Berkom2018-04-131-1/+1
|
* mount: Wrap yields in context managers with try-finallyRichard Maw2018-04-122-17/+19
| | | | | | | | | | | | | | | The terminator context will only clean up on a signal, so if another exception causes context manager cleanup then unmount won't be called unless it's part of another context manager or is wrapped in a try block's except or finally. Everywhere else's unmounts are handled by delegating to another context manager but these were what needed to be fixed. The change in buildstream/_fuse/mount.py would cause lockups since the build worker process still having a subprocess blocked its termination from completing which in turn caused the pipeline manager process to block indefinitely on it.
* NEWS: Added news entry detailing that cross-junction tracking is disabled by ↵Tristan Van Berkom2018-04-121-0/+6
| | | | default
* _frontend/cli.py, _pipeline.py: Add options for cross junction tracking.Tristan Van Berkom2018-04-125-50/+112
| | | | | | | | | | | | | | | | | | | | | | | | This patch makes cross junction tracking disabled by default, which was the initial intention when landing project.refs but never got around to doing this (intended to get addressing of junctioned elements via command line sorted first, but didnt happen). This adds the following options to enable cross-junction tracking: o bst build -J / --track-cross-junctions o bst fetch -J / --track-cross-junctions o bst track -J / --cross-junctions This also fixes `bst fetch --track` which had a bug, it was avoiding to track and fetch elements which are in a `cached` consistency state, which is wrong when `--track` is specified. This also updates some test cases which were broken by this change. This fixes issue #354
* _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/status.py: Fixed status widgets to show full element names.Tristan Van Berkom2018-04-121-2/+2
|
* buildstream/_versions.py: Increment BST_CORE_ARTIFACT_VERSIONTristan Van Berkom2018-04-1126-26/+26
| | | | | Now that we've restructured the artifact metadata into separate files, we need to rev the artifact version.
* element.py, source.py: Cleanup how Source cache keys are calculated.Tristan Van Berkom2018-04-1127-46/+30
| | | | | | | | Recently after a refactor we kept the Source adding workspace keys to the source keys because, now clean this up to have the workspace key added directly in the Element cache key calculation. This breaks cache keys.
* element.py: Restructure artifact metadataTristan Van Berkom2018-04-111-87/+184
| | | | | | | | | | o Store the artifact.yaml into 4 separate files now o Only load on demand what is needed at a given time o Add local caching for what was loaded, ensuring we never redundantly load metadata This breaks artifact format and will require an artifact revision This should improve performance for issue #294
* source/install.rst: Update ArchLinux installation instructionsJavier Jardón2018-04-111-2/+2
|
* doc/source/install.rst: Update list of base requirementsJavier Jardón2018-04-111-2/+3
|
* tests/integration/shell.py: Test that workspaced files are visible in a bst ↵Tristan Van Berkom2018-04-112-0/+91
| | | | | | | | | | shell Test both in regular `bst shell --build`, and on a failed build sysroot with `bst shell --sysroot`, the latter being the semantic used when debugging a failed build. This guards against regressions of issue #346
* element.py: Preserve workspace state in failed build sandboxes.Tristan Van Berkom2018-04-111-0/+28
| | | | | | | | | | | | | | | | | | | As reported in regression #346, since we started mounting the workspaces we now fail to debug build failures for workspaces, the shell command no longer sees the workspaces files to debug. As the failed sysroot represents a very particular build failure, it is incorrect to attempt to remount a workspace again after a failed build, as the workspace files may have changed since the build. Instead, in the case of a build failure on a workspaced element, we copy the files from the workspace in place (while automatically preserving the mtimes and everything, as utils.safe_copy() does). When we implement failed build artifacts, this case will have to be handled in a very similar way, too. This fixes issue #346
* HACKING.rst: Add integration and pytest notesTristan Maat2018-04-111-0/+19
|
* _frontend/widget.py: Correct log line if logdir is emptyjmac/logfile-widget-correctionJim MacArthur2018-04-101-2/+3
|
* _workspaces.py: Assert that configuration is only saved in the main process.Tristan Van Berkom2018-04-101-0/+2
|
* Serialize workspace modifications in the main process.Tristan Van Berkom2018-04-103-19/+64
| | | | | | | | | | | | | This patch makes the child process send any workspace state back to the main process and saves it there directly before processing the result of a build job, such that workspace modifications in child tasks work transparently and no special care needs to be taken to save them except when doing so in the main process. Also this removes the line where we update workspace data at staging time. This fixes issue #352
* utils.py: Added _is_main_process()Tristan Van Berkom2018-04-101-0/+12
| | | | | A helper function to identify if we are running in the main process or not.
* _workspaces.py: Added Workspaces.update_workspace()Tristan Van Berkom2018-04-101-0/+42
| | | | | | | | This takes a serialized workspace dictionary as understood by Workspace.from_dict() and created by Workspace.to_dict() Further, this adds a Workspace.differs() method to compare the state of two workspace instances.
* _workspaces.py: Add generic serialization/deserializationTristan Van Berkom2018-04-101-21/+56
| | | | | Also streamline the instantiation code paths to layer the yaml parsing on top of simple dictionary deserialization.
* _workspaces.py: Remove knowledge of Elements completelyTristan Van Berkom2018-04-104-65/+50
| | | | | | | | | | | | | This makes workspaces more cleanly separated from everything else. o Removed some methods from Workspace() o Added Element._open_workspace() to initialize workspaces on sources o Cleanup some code in the pipeline o Have the App() call Element._open_workspace() instead of Workspace.open()
* element.py: Removed useless __workspace pointerTristan Van Berkom2018-04-101-1/+0
| | | | I added this in the last refactor and forgot to remove it.
* tests/frontend/workspace.py: Test that we detect modifications made to a ↵352-race-condition-incorrect-saving-of-running-files-in-workspaces-yml-local-state-file311-opening-a-workspace-with-a-cached-buildTristan Van Berkom2018-04-091-0/+77
| | | | | | | workspace This was previously only working for added or removed files and broken for modified files.
* _workspaces.py: Fix cache key calculation regressionTristan Van Berkom2018-04-091-1/+1
| | | | This was regressed in the refactor done in commit f761140f
* element.py, source.py: Element consumes the rest of workspace logic.Tristan Van Berkom2018-04-093-61/+45
| | | | And Source no longer has any __workspace handle.
* element.py, source.py: Removing knowledge of assemble scheduling state from ↵Tristan Van Berkom2018-04-092-41/+8
| | | | | | source And considering the workspace related edge cases in Element instead of Source.
* element.py: Manage scheduled tracking state in ElementTristan Van Berkom2018-04-093-21/+21
| | | | | | | | | | | | | | | This removes the scheduled state of tracking from Sources, as this is really an element wide thing. To be consistent with assembly, now this comes with: o Element._schedule_tracking() o Element._tracking_done() o Element.__tracking_scheduled o Element.__tracking_done Updated the TrackQueue() to call Element._tracking_done() similarly to how we have BuildQueue() call Element._assemble_done().
* element.py: Factored out pointless extra Element._workspaced() methodTristan Van Berkom2018-04-092-13/+6
|
* element.py: Cache source consistency logic and refactor workspace logic into ↵Tristan Van Berkom2018-04-096-47/+55
| | | | | | | Element Workspaces are now element wide, so consistency edge cases must be handled at the element level instead of the source level.
* tests/frontend/workspace.py: Fixed test_build to make the right assertionTristan Van Berkom2018-04-091-1/+1
| | | | | | This was removing a file from the workspace, building, checking out, and then asserting that the file is *still gone* in the workspace, ignoring the same file in the checkout.
* _ostree.py: Mention the remote URL when we fail to fetch remote refsJim MacArthur2018-04-091-1/+2
|
* _versions.py: Fixed copyright year on newly added file.Tristan Van Berkom2018-04-081-1/+1
| | | | Oops.
* NEWS: Adding news entry for new `bst init` commandTristan Van Berkom2018-04-081-0/+7
|
* _frontend/app.py: Automatically launch interactive `bst init` when ↵Tristan Van Berkom2018-04-081-1/+13
| | | | | | | | | | project.conf is absent When running a command where a project.conf does not exist, ask the user if they would like to interactively create a project in the said directory. This is a part of issue #342
* More specific exceptions when a project.conf is missing.Tristan Van Berkom2018-04-084-7/+18
| | | | | Since we want to react and start an interactive session when the project.conf is missing, we need a more specific error to catch.
* tests/frontend/init.py: New test to test edge cases for new `bst init` command.Tristan Van Berkom2018-04-081-0/+97
|