| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
This allows the frontend to render pending messages.
|
|\
| |
| |
| |
| | |
Conditionally skip tests which require subsecond precision mtimes
See merge request BuildStream/buildstream!2091
|
| |
| |
| |
| |
| |
| | |
Skip a test which relies on mtimes differing within a short timespan,
this will fail if it happens fast enough (which it should) on systems
which do not support subsecond precision mtimes.
|
| |
| |
| |
| |
| | |
Skip the mtime related test if the underlying filesystem does not
support subsecond precision mtime.
|
| |
| |
| |
| |
| | |
Skip some of the artifact expiry tests in the case we don't have
subsecond mtime precision.
|
| |
| |
| |
| | |
Conditionally skip tests which require subsecond mtime precision.
|
|/
|
|
|
|
|
| |
A utility for tests to check if subsecond precision mtime is supported
at a given filesystem path (it will depend on underlying filesystem, so
we cannot have a simple HAVE_SUBSECOND_MTIME variable to check, because
we don't know where tests will operate at this stage).
|
|\
| |
| |
| |
| | |
element.py: Remove unused import of OrderedDict()
See merge request BuildStream/buildstream!2081
|
|/ |
|
|\
| |
| |
| |
| |
| |
| | |
Fix junction overrides to resolve links
Closes #1398
See merge request BuildStream/buildstream!2078
|
| | |
|
| |
| |
| |
| | |
projects
|
| |
| |
| |
| | |
subproject to override
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When an override is specified, it might be specified using a link
element and that link element might not be otherwise used thus far
to load anything.
This patch makes the following changes to the loader:
* Add Loader._resolve_link()
A new function which updates a projects internal cache of link
elements and targets.
The link cache is updated any time a link element is resolved,
also parent project link caches are updated to have knowledge of
the subproject links.
* Add Loader._expand_link()
A function to expand links in user provided paths, so that
we can transform these to "real paths", i.e. project relative
paths wich any link elements substituted.
* Use Loader._expand_link() when matching a user specified override
from a junction to a real path.
* Add Loader._shallow_load_overrides()
This function simply ensures we perform a shallow load on any
elements specified as keys in the junction override dictionary,
in case they are links.
Shallow loading these elements does not cause them to inadvertently
load unrequired subprojects, nor can it cause any new elements to
be included in the build graph returned to the caller of the Loader
code (as the Loader code only returns dependencies of the specified
toplevels, even if other orthogonal elements happen to get loaded
as a side effect).
This is necessary to ensure we populate the link caches when a link
is used to specify an override, but is otherwise unused.
This fixes #1398
|
|\
| |
| |
| |
| | |
Ensure we are not calling methods with side effects on the element graph in jobs
See merge request BuildStream/buildstream!2079
|
| |
| |
| |
| |
| |
| |
| | |
called in jobs
This adds some assertions in the code to ensure we are not calling
methods with side effects on the graph of elements in jobs.
|
|/
|
|
|
|
|
|
|
|
| |
This removes a call to `__update_cache_key_non_strict()` in the job for
non strict builds. This call has an impact on other elements and should
never be done beforehand.
This however means we need to compute cache keys before, and we
therefore need to re-compute the cache keys as an element become
buildable
|
|\
| |
| |
| |
| | |
Refactor: Lazily instantiate ProvenanceInformation objects
See merge request BuildStream/buildstream!2026
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
As a rule, throughout the codebase we should not be using internal
ProvenanceInformation objects in our APIs, but rather Node objects.
This is because ProvenanceInformation is generated on the fly from
a Node object, and it is needlessly expensive to instantiate one before
it is absolutely needed.
This patch unilaterally fixes the codebase to pass `provenance_node`
Node objects around as arguments rather than `provenance` ProvenanceInformation
objects.
|
|\
| |
| |
| |
| | |
Pull missing artifacts in `bst artifact push`
See merge request BuildStream/buildstream!2077
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As per #819, BuildStream should pull missing artifacts by default. The
previous behavior was to only pull missing buildtrees. A top-level
`--no-pull` option can easily be supported in the future.
This change makes it possible to use a single scheduler session (with
concurrent pull and push jobs). This commit also simplifies the code as
it removes the `sched_error_action` emulation, using the regular
frontend code path instead.
|
| |
| |
| |
| |
| |
| | |
This allows proper error handling when pushing an uncached element
should result in a failure (bst artifact push), not a skipped job
(bst build).
|
|/
|
|
|
|
| |
This allows proper error handling when pushing an uncached element
should result in a failure (bst artifact push), not a skipped job
(bst build).
|
|\
| |
| |
| |
| | |
Artifact pull code improvements
See merge request BuildStream/buildstream!2074
|
| |
| |
| |
| |
| |
| |
| | |
This replaces `__pull_strong()` and `__pull_weak()` with calls to
`Artifact.pull()`. Besides simplifying code in `element.py`, this
removes the call to `_pull_done()` from the job process, which would
cause issues with the upcoming thread-based scheduler.
|
| | |
|
| | |
|
|/
|
|
|
| |
We want the weak reference to point to the most recent artifact with the
same weak cache key, not the oldest.
|
|\
| |
| |
| |
| | |
Allow specifying multiple filenames in a dependency
See merge request BuildStream/buildstream!2075
|
| | |
|
| |
| |
| |
| | |
Test a dictionary instead of a string when given to the filename list.
|
| | |
|
| |
| |
| |
| | |
Adding some clarifications about an existing test
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows declaring multiple dependencies with common properties
in a mode convenient way, e.g.:
depends:
- type: build
junction: subproject.bst
filename:
- foo.bst
- bar.bst
- baz.bst
This was requested during this email thread: https://lists.apache.org/thread.html/r9d716f2734cae5a81731f9a46d73f944a7287ff168f6987e25597c6a%40%3Cdev.buildstream.apache.org%3E
|
|\
| |
| |
| |
| | |
Fix logging regression
See merge request BuildStream/buildstream!2076
|
| |
| |
| |
| |
| | |
Staging activities are usually silent nested, this regressed when
porting to recently changed APIs.
|
|/
|
|
|
| |
Staging activities are usually silent nested, this regressed when
porting to recently changed APIs.
|
|\
| |
| |
| |
| | |
filter.py: Combine integration commands in assemble()
See merge request BuildStream/buildstream!2073
|
| |
| |
| |
| |
| | |
This tests that built filter artifacts don't depend on build
dependencies for integration.
|
|/
|
|
|
|
|
|
|
| |
Plugins must not access public data of build dependencies in
`integrate()` as the build dependencies are not guaranteed to be cached
at that stage.
This combines integration commands of the sole build dependency and the
filter element itself at time of assembly instead of integration.
|
|\
| |
| |
| |
| | |
source.py: Remove BST_KEY_REQUIRES_STAGE
See merge request BuildStream/buildstream!2072
|
| |
| |
| |
| |
| |
| |
| |
| | |
This test checks that:
* We get SKIP messages for tracking local sources
* We get SKIP messages for tracking workspaced elements
* We go no messages at all for elemenents which have no sources
|
| |
| |
| |
| |
| |
| |
| |
| | |
sources
This ensures we get a SKIP message instead of a SUCCESS message when
tracking an element where all of it's sources did not implement track(),
which is the case for sources like `local`, `workspace` or `patch`.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Refactored this to remove unneeded complexity in the code base,
as described here:
https://lists.apache.org/thread.html/r4b9517742433f07c79379ba5b67932cfe997c1e64965a9f1a2b613fc%40%3Cdev.buildstream.apache.org%3E
Changes:
* source.py: Added private Source._cache_directory() context manager
We also move the assertion about nodes which are safe to write to
a bit lower in Source._set_ref(), as this was unnecessarily early.
When tracking a workspace, the ref will be none and will turn out
to be none afterwards, it is not a problem that a workspace's node
is a synthetic one, as tracking will never affect it.
* local plugin: Implement get_unique_key() and stage() using
the new context manager in order to optimize staging and
cache key calculations here.
* workspace plugin: Implement get_unique_key() and stage() using
the new context manager in order to optimize staging and
cache key calculations here.
* trackqueue.py: No special casing with Source._is_trackable()
|
|/
|
|
|
| |
We don't allow importing symbols from sub-packages of BuildStream, so
any public API must find it's way to the toplevel __init__.py.
|
|\
| |
| |
| |
| | |
.gitlab-ci.yml: Use ported plugins and fdsdk for overnight tests
See merge request BuildStream/buildstream!2068
|
| | |
|
| |
| |
| |
| |
| | |
This was a dead codepath, not used by any sandbox implementation
for any reason, and used to be called inconsistently by some elements.
|
| |
| |
| |
| | |
That API is useless fluff and does not have any affect on anything.
|
| | |
|