| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
A helper function to identify if we are running in the main process
or not.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Also streamline the instantiation code paths to layer the yaml
parsing on top of simple dictionary deserialization.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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()
|
|
|
|
| |
I added this in the last refactor and forgot to remove it.
|
|
|
|
|
|
|
| |
workspace
This was previously only working for added or removed files and
broken for modified files.
|
|
|
|
| |
This was regressed in the refactor done in commit f761140f
|
|
|
|
| |
And Source no longer has any __workspace handle.
|
|
|
|
|
|
| |
source
And considering the workspace related edge cases in Element instead of Source.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
Workspaces are now element wide, so consistency edge cases must
be handled at the element level instead of the source level.
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Oops.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
Since we want to react and start an interactive session when the
project.conf is missing, we need a more specific error to catch.
|
| |
|
|
|
|
|
|
|
| |
This comes with an interactive mode unless the project name is specified
on the command line.
This fixes issue #342
|
|
|
|
| |
Since we now also use this to validate user input on the command line.
|
|
|
|
|
|
|
|
|
|
| |
This is where we're going to store BST_CORE_ARTIFACT_VERSION
and BST_FORMAT_VERSION from now on.
This was a little bit weirdly defined before, and now we need to
at least have BST_FORMAT_VERSION available from the frontend/cli
without onerous imports (we need to import it there, but dont want
to slow down load time for bash completion runs).
|
|
|
|
| |
This is now defined in _workspaces.py
|
|
|
|
|
|
|
| |
This completes the work which was started in commit
3ba544b80f9f268be8ffe62fc8589b30212ec4a2 which only went half
way towards updating all the source code to be consistent and use
the new semantic which allows None values.
|
| |
|
|
|
|
| |
This option in `bst workspace reset` is just pointless.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At present, it is only possible to close workspaces for elements one at
a time. This can become slightly tedious process when you have multiple
workspaces open and you want to close all of them, maybe because you
just finished working on a set of related elements.
Instead of accepting a single element, accept a list of elements as
argument for `bst workspace close`. Additionally, add `-a`/`--all`
option to close all workspaces.
Fixes #337 - Add option to close all workspaces.
|
|
|
|
|
|
|
|
|
|
| |
bst show
This may be obnoxious for `bst show` purposes, which will now also print
the full artifact cache keys instead of nicely abbreviated ones, but it is a
more appropriate default for the heading of a build session.
This fixes issue #343
|
|
|
|
| |
variable names.
|
|
|
|
| |
This is a part of issue #339
|
| |
|
| |
|
| |
|
|
|
|
| |
This is sufficiently covered by other tests in tests/format/project.py
|
|
|
|
|
|
| |
Moved the old style project format tests into the new CLI based
directory in tests/format/ and converted to use the CLI fixture
for these tests.
|
| |
|
|
|
|
| |
These must be alphanumeric and may not contain dashes.
|
|
|
|
| |
Fixes issue #339
|
|
|
|
|
|
| |
This function asserts that a loaded symbol name is a valid one,
and raises an appropriate and consistent LoadError if an invalid
symbol name is encountered.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
o Test that we get the expected error if the junction element
the pipeline refers to is inconsistent
o Test that the junction element is automatically fetched as
a part of the build phase
Both tests using both ref-storage modes
|
|
|
|
|
|
|
|
|
|
|
| |
o Test that we bail out with the expected errors when the
junction element in question is Consistency.INCONSISTENT
o Test that tracking the junction itself, causes a subsequent
show of the pipeline to not bail out anymore (tests that
tracking works and persists for a junction element).
Again these use both ref-storage modes.
|
|
|
|
|
|
|
|
|
|
| |
o This tests that a Consistency.RESOLVED junction will automatically be fetched
when `bst fetch` is run on a pipeline which refers to a junction.
o Further, it tests that a Consistency.INCONSISTENT junction will bail
out with the expected error message
Again testing with both ref-storage modes
|
|
|
|
|
|
|
|
|
|
| |
o Test error conditions for showing an unfetched junctioned project
o Test error conditions for showing an untracked junctioned project
Both tests check both modes of ref-storage.
This adds a new shared helper function `generate_junction`
|
|
|
|
| |
Make buildtrack.py and track.py share the same configure_project() helper.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o Ensure that we call Source._load_ref(), and consider project.refs this way
o Ensure that we report a warning in the case that project.refs is in use
and the loaded junction source has a redundant ref which is going to
be ignored
o Report more distinct machine readable errors for failures to load
junction element sources
o Handle Consistency.INCONSISTENT and Consistency.RESOLVED separately:
- The user should be told something different depending on whether
they need to fetch or whether they need to track.
- It is never possible to automatically fetch the source in the
case that the source has no ref to begin with.
This also adjusts the test/loader/junctions.py test to expect the new error
|