| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
i.e. a CacheKey class, with implementations such as:
* StrictCacheKey - a normal element when buildstream runs in Strict mode
* NonStrictCacheKey - a normal element when buildstream runs in
non-strict mode
* StrictWorkspacedCacheKey - a workspaced element when Strict mode
* NonStrictWorkspacedCacheKey - a workspaced element in non-strict mode
(note: only CacheKey and StrictCacheKey are implemented for now)
This involves:
* Creating the CacheKey and StrictCacheKey classes
* In Element instantiation, create a __cache_key_obj to delegate various
logic to.
* For the moment, extending various functions to call a
__cache_key_obj's methods if they're implemented.
* This includesExtending the _KeyStrength enum to include a
STRICT version, so strict cache keys can be accessed through a
common interface.
|
| |
|
|
|
| |
This is done because an external caller will be calling this in certain
circumstances.
|
| |
|
|
| |
Nothing can happen at this point
|
| | |
|
| |
|
|
|
| |
There are now times when we want to call _update_source_state outside of
Element.
|
| |\
| |
| |
| |
| |
| |
| | |
Follow-up from "Artifact 'abstraction' class"
Closes #955
See merge request BuildStream/buildstream!1271
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When we determine that current cache keys are to be discarded, we
should also discard the associated members for correctness. This
should act as a safeguard against accessing Artifact instances that
have discarded cache keys.
A side effect of this is the querying of element buildtree state
from cli methods on elements that don't have a cached artifact
would lead to the artifact member methods not being reachable.
Ensuring the element is cached before trying to call said accessor
methods resolves this.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As the artifact object now stores keys, it allows for the simplification
of metadata methods. Transitioning the metadata members to Artifact
also means the private accessor methods can be removed from Element
which reduces the overhead of syncing private variables across the
two classes via parameters.
With the key and metadata handling now being internalised within
Artifact, a temporary Artifact for the last_successful incremental
build is created for correctness. This should help guarantee that an
Artifact object is never used to access different artifacts.
|
| | |
| |
| |
| |
| |
| | |
This was being accessed via a local private method that wasn't
augmenting the output as such it can be moved to match
_cached_failure.
|
| | |
| |
| |
| |
| | |
This was being accessed via a local private method that wasn't
augmenting the output as such it can be moved.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The Artifact instance within Element is now initialised when the
relevant keys are available, with the weak & strong keys being
in the constructor. It also introduces the notion of a strict_artifact,
which is used to make a distinction of the Artifact keys and cached
state dependant on the context defined strictness. The keys are updated
when a relevant key change occurs. As the keys are now internalised
within Artifact, the majority of key determinsim and parameterisation
in public Artifact method calls are now redundant.
|
| | |
| |
| |
| |
| |
| | |
This moves the cached assertion to happen before calling the
Artifact method, which removes the need to loopback for the
same purpose.
|
| |/
|
|
|
|
| |
Switch to using the private _get_subdirectory() in places
where we are interacting directly with a subdirectory of the
artifact.
|
| |\
| |
| |
| |
| | |
Rename 'plugintestutils' package to 'testing'
See merge request BuildStream/buildstream!1291
|
| |/
|
|
|
|
|
|
|
| |
- Rename plugintestutils to testing.
- Don't run the tests from bst-plugins-template. This imports
buildstream.plugintestutils so will have to be disabled to get
through CI. This can be re nabled once bst-plugins-template has been
patched.
|
| |\
| |
| |
| |
| | |
Fix empty external tests
See merge request BuildStream/buildstream!1295
|
| |/
|
|
|
|
|
| |
If the list of external plugin tests is empty, tox -e pyXX-external
will fail attempting to move a coverage file which doesn't exist.
Allow the offending mv command to fail.
|
| |\
| |
| |
| |
| |
| |
| | |
Fix non strict push
Closes #990
See merge request BuildStream/buildstream!1290
|
| | |
| |
| |
| | |
This is a regression test for issue #990
|
| |/
|
|
|
|
|
|
|
| |
Marking all elements as pulled in Stream.push() ensures that cache
keys are resolved before pushing elements, otherwise state is left
unresolved in non-strict mode while elements are awaiting to download
an artifact by it's strict cache key.
Fixes #990
|
| |\
| |
| |
| |
| | |
Expose templated source tests
See merge request BuildStream/buildstream!1261
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
A subset of the functionality provided by this module is not
available from buildstream._site but is necessary for the templated
source plugin tests.
|
| | |
| |
| |
| |
| | |
Copy tests.testutils.junction into plugintestutils._utils. This is
needed for use by the templated source tests.
|
| |/
|
|
|
|
|
|
| |
This needs to be exposed as part of the plugin author facing API so
that plugin authors can define custom repo types which will can be
passed to the set of tests which iterate over multiple source types.
Part of the work towards #944
|
| |\
| |
| |
| |
| | |
.gitlab-ci.yml: master (bst2) should use the new bst-plugins-experimental repo instead bst-external
See merge request BuildStream/buildstream!1275
|
| |/
|
|
| |
instead bst-external
|
| |\
| |
| |
| |
| | |
Do not fetch file blobs for build-only dependencies with remote execution
See merge request BuildStream/buildstream!1278
|
| | |
| |
| |
| |
| | |
Avoid unnecessary copies and use CopyFrom() instead of copying fields
one by one where copies are necessary.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
Let the sandbox know whether the buildtree will be required. This allows
the remote execution sandbox to skip buildtree download when it's not
needed.
|
| | |
| |
| |
| | |
This enables conditional output file fetching with remote execution.
|
| | |
| |
| |
| |
| | |
This will enable SandboxRemote to download the file blobs of the build
directory only when needed.
|
| | |
| |
| |
| |
| | |
Output files need to be downloaded only if they are required in the
local cache or if artifact push remotes need them.
|
| | | |
|
| | |
| |
| |
| | |
Extracted from remote_missing_blobs_for_directory().
|
| | |
| |
| |
| | |
Download them separately as they are not always required.
|
| | |
| |
| |
| |
| | |
This allows skipping file download in pull_tree()/_fetch_tree() and is
preparation for conditional output file fetching.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
Ensure required artifact files are available for elements that need them
even if the context does not require artifact files for all elements.
|
| | |
| |
| |
| |
| | |
This will be used to allow build sessions with a partial local CAS when
using remote execution.
|
| |/
|
|
|
|
| |
Element plugins will be required to support virtual directories before
the next major version. Drop support for fallback from remote to local
execution as this blocks partial CAS.
|
| |\
| |
| |
| |
| | |
use uname in a win32-compatible way
See merge request BuildStream/buildstream!1262
|
| | |
| |
| |
| |
| |
| | |
platform.uname() returns a namedtuple of "system, node, release,
version, machine, and processor". Use these slightly clearer names
instead of the magic numbers.
|