| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
the same session
This extends the existing test which catches failures only
in build-only dependency chains, with a similar test for runtime-only
dependency chains.
|
|
|
|
|
|
|
| |
Tests that the target is still built even when a workspace is open
on a runtime dependency of a build-only dependency.
This adds the regression test provided by Matthew Yates for issue #919
|
| |
|
|
|
|
| |
This is to be consistent will all other queues that follow this setup.
|
|
|
|
|
| |
Since we know when an object's state can change, we don't need
to update the state of all objects for consistency.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Statuses of an element can be changed when:
1) It is pulled
2) It is fetched
3) It is workspaced and it finished building
4) One of its dependencies is tracked
5) One of its dependencies is workspaced and finished building
We can therefore update the statuses at those moments and we don't
need to check all the time.
This reduces considerably the calls to update_states that are done
|
|\
| |
| |
| |
| | |
Tweak cache-buildtrees option
See merge request BuildStream/buildstream!1208
|
| |
| |
| |
| |
| | |
Caching buildtrees may significantly increase CAS disk usage. Change the
default to cache buildtrees only when required for core functionality.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We anticipate other cases than build failures where buildtree caching
will be required. E.g., incremental workspace build with remote
execution. Or running tests in a buildtree in parallel with the build of
reverse dependencies.
This renames the option value 'failure' to the more generic 'auto' to
cover these other cases as well.
|
| | |
|
| |
| |
| |
| |
| | |
In the interactive failure handler we should never enter the interactive
shell if the buildtree is missing (due to cache-buildtrees=never).
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Creating an empty buildtree directory when buildtree caching is disabled
means cached_buildtree() can return True even if no buildtree is
available, which breaks logic in the frontend and in Stream.
This adds the buildtree_exists() method to indicate whether an artifact
was created with a buildtree, independent of whether the buildtree is
available in the local cache.
|
| |
| |
| |
| | |
Return False instead of raising an error.
|
| |
| |
| |
| | |
This removes extraneous spaces.
|
|/
|
|
| |
os.listdir() never returns None.
|
|\
| |
| |
| |
| | |
project: don't do _find_project_dir if we're a junction
See merge request BuildStream/buildstream!1231
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If we're creating a project for a junction, then don't go looking for
the project directory - the path has already been given to us.
This means that we can now detect when junctions are missing a
'project.conf', and importantly we don't accidentally start resolving
elements in the enclosing project.
Add tests to cover workspaced, local, and git repo cases. Note that
this is also the first test coverage for the INVALID_JUNCTION path.
In later work we might extract the _find_project_dir magic out of the
Project class, so that there are no surprises when instantiating it.
|
| |
| |
| |
| |
| |
| |
| |
| | |
It would be convenient if we could use datafiles directly, instead of
fussing about with os.path.join(). The standard library supports
path-like things, I see no reason why we shouldn't.
In later work we can refactor our tests to take advantage of this.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I found the original message confusing - it would talk about wanting a
project at '.', without a frame of reference. After re-reading the code
and junction docs it made more sense, I think this version would save
folks the trouble.
Removing all mention of it, if it's not specified. If it is specified
then explain it a bit more, i.e.
Before:
Could not find the project.conf file for junction element at
hello-junction.bst [line 1 column 0]. Expecting a project at path
'project'
After:
Could not find the project.conf file in project referred to by
junction element 'hello-junction.bst'. Was expecting it at path
'project' in the junction's source.
If no 'path' specified in the junction:
Could not find the project.conf file in project referred to by
junction element 'hello-junction.bst'.
|
|\
| |
| |
| |
| | |
cascache: atomically save size via tmpdir instead
See merge request BuildStream/buildstream!1226
|
|/
|
|
|
|
|
|
|
|
| |
Instead of doing the atomic 'mv into place' using a temporary file in
the 'cas' directory, use the sibling 'tmp' directory instead.
This will avoid the situation where CacheSizeJob encounters a temporary
file in the cas directory. This can happen because CacheSizeJob does not
always run with an exclusive lock on the cas directory, and BuildQueue
updates the cache size whenever a BuildJob completes.
|
|\
| |
| |
| |
| | |
README.rst: Add table with package status of bst-external
See merge request BuildStream/buildstream!1218
|
|/ |
|
|\
| |
| |
| |
| | |
'artifact log': document the 'artifacts' argument
See merge request BuildStream/buildstream!1223
|
|/
|
|
|
|
|
|
|
|
| |
I found it quite difficult to guess what format the 'bst artifact log'
command would like artifact references in. Put them in the help for that
command, to save folks time.
In future work, we probably want to document the behaviour of
'Stream._classify_artifacts' globally - most commands take them and the
results can be surprising if you don't know about artifact refs.
|
|\
| |
| |
| |
| | |
element.__init_default: treat `None` plugin_conf as if missing file + refactor
See merge request BuildStream/buildstream!1210
|
| |
| |
| |
| |
| |
| | |
Use the conventional `None` value to indicate that the class variable
`__defaults` is not yet initialized. This lets us remove
`__defaults_set`.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Still initialize `Element.__defaults` as usual, even if a `plugin_conf`
is not specified.
As part of the work on !1101 to introduce `ArtifactElement`s, a special
case for `__init_defaults` was made, such that none of the usual
defaults would be loaded. This seems to be because it has no config and
none of the defaults are required by ArtifactElement, although they
don't seem to adversely affect it.
Instead, treat a 'None' `plugin_conf` in the same way as the existing
case of a missing file. This avoids the appearance of having
plugin-specific behaviour in the base-class, and is perhaps less
puzzling to new contributors.
|
|/ |
|
|\
| |
| |
| |
| | |
Rip out ChainMap(), node_chain_copy(), node_list_copy()
See merge request BuildStream/buildstream!1209
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
This class and these two functions exist as they were intended to
bring efficiency. Benchmarking this patch against the debian-stack.bst
element in the debian-like project [0] showed that although this
took 15M more RAM (peak usage), there was a ~20s gain in the time taken
to 'show' the stack. Thus the class and functions have been removed.
This also has the advantage of removing a lot of duplicate and unnecessary
code.
[0] https://gitlab.com/jennis/debian-stretch-bst
|
|\
| |
| |
| |
| | |
_casbaseddirectory.py: Use variable-length argument list
See merge request BuildStream/buildstream!1230
|
| |
| |
| |
| | |
This matches Directory.descend() and _objpath().
|
|/
|
|
| |
This matches Directory.descend().
|
|\
| |
| |
| |
| | |
Consolidate templated source tests
See merge request BuildStream/buildstream!1215
|
| |
| |
| |
| |
| |
| |
| | |
Move the templated tests in tests/frontend/workspace.py into
sources/generic/workspace.py
This is part of the preparation work for #944
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Move the templated tests in tests/frontend/source-determinism.py into
sources/source_determinism.py
This is part of the preparation work for #944
|
| |
| |
| |
| |
| | |
Move the templated tests in tests/frontend/track.py into
sources/generic/track.py
|
| |
| |
| |
| |
| |
| |
| | |
Move the templated tests in tests/frontend/track_cross_junction.py into
sources/generic/track_cross_junction.py
This is part of the preparation work for #944
|
| |
| |
| |
| |
| |
| |
| | |
Move the templated tests in tests/frontend/buildcheckout.py into
sources/generic/buildcheckout.py
This is part of the preparation work for #944
|
| |
| |
| |
| |
| |
| |
| | |
Move the templated tests in tests/frontend/mirror.py into
sources/generic/mirror.py
This is part of the preparation work for #944
|
|/
|
|
|
|
|
|
| |
Create tests/sources/basic_functionality.py for templated source
tests and move the templated tests in tests/frontend/fetch.py into
sources/generic/fetch.py
This is part of the preparation work for #944
|
|\
| |
| |
| |
| | |
Source cache
See merge request BuildStream/buildstream!1124
|
| |
| |
| |
| |
| |
| |
| | |
Few different source cache tests have been to check that sources are
staged into the local CAS and fetched where appropriate
Part of #440
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This involve introducing new Consistency states `STAGED` and `BOTH` that
represent when the source is just in the local CAS and in both the local
CAS and unstaged in the source directory.
Sources are staged for each element into the local CAS during the fetch
stage. If the sources are in the local consistency state `STAGED` when
wanting to open a workspace, the original sources are fetched.
Relavant tests this affects have been changed.
Part of #440
|
| |
| |
| |
| |
| |
| |
| |
| | |
Introduces source cache which allows sources to be staged into the local
CAS for use in builds. Registers methods with CASQuota in order to allow
for the clean method to remove unrequired sources as well.
Part of #440
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds
o _key: property to access cache key
o generate_key: method to generate key given previous sources
o _get_source_name: method to create ref for given source
Part of #440
|
| |
| |
| |
| |
| |
| | |
Useful for when exporting file from cas.
Part of #870
|