| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Test that we can override an element in a subproject with a local element,
the local element has a dependency on another element in the subproject
through the same junction.
* Test that we can override the dependency in the subproject, proving
that reverse dependencies in that subproject are built against the
overridden element.
* Test that we can override a subproject element using a local link
to another element in the same subproject.
* Test that we can declare an override of a subproject element using
a link in that subproject, and it will be effective even if that
link is not traversed by the actual dependency chain.
* Check that the same element being overridden multiple times in
a subproject is overridden by the highest level project which should
have the highest priority in the overrides.
|
|
|
|
|
|
|
|
|
|
|
| |
Using the same semantic used to override junctions in subprojects, allow
overriding of elements.
As discussed in this proposal: https://lists.apache.org/thread.html/r34c8e94f024aae3d5afd260554dac594e82751ca60dea28880f520d5%40%3Cdev.buildstream.apache.org%3E
Notably, this also adds the "fully loaded" flag to LoadElement, and
separates the logic around loading a single file with redirections
for overrides and links in consideration into a single function.
|
|\
| |
| |
| |
| | |
testutils/platform: Refactor to be compatible with Python 3.9
See merge request BuildStream/buildstream!2092
|
|/
|
|
|
|
|
|
|
|
|
| |
Starting from Python 3.9, it seems like the `_replace()` method no
longer works on `platform.uname_result` objects, that are returned by
`platform.uname()`. This causes some of our tests to fail on Python 3.9.
See https://bugs.python.org/issue42163 for upstream issue.
Fix it by slightly changing the way we override the values of the
`platform.uname()` function, such that it works on both Python 3.9 and
3.8 (and below).
|
|\
| |
| |
| |
| |
| |
| | |
into 'master'
Get release and snapshot badge images from docs website
See merge request BuildStream/buildstream!2086
|
|/
|
|
|
|
| |
get release badge image and snapshot badge image from:
docs.buildstream.build/master/_static/release.svg, and
docs.buildstream.build/master/_static/snapshot.svg
|
|\
| |
| |
| |
| | |
Corner case fixes for the loader code
See merge request BuildStream/buildstream!2093
|
| |
| |
| |
| |
| | |
These appear to be popping up randomly, as we squash them in our
game of whackamole...
|
| |
| |
| |
| |
| |
| |
| | |
When loading a link in _load_file(), we should redirect the entire call
to the appropriate loader, the code in place instead was treating the
loaded element as if it were loaded locally, and attempting to load it's
dependencies redundantly.
|
|/
|
|
| |
Use try / except KeyError instead.
|
|\
| |
| |
| |
| |
| |
| | |
Restore task element name / element name distinction in UI
Closes #1393
See merge request BuildStream/buildstream!2070
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When printing log lines to the master log, we ensure that log lines are
printed with the element name and cache key which are related to the task
from which the messages are being issued.
When printing log lines to task specific log lines, we prefer to print
the element names and cache keys which pertain to the element from which
the log line was actually issued.
This new tests asserts this behavior.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This behavior has regressed a while back when introducing the messenger
object in 0026e379 from merge request !1500.
Main behavior change:
- Messages in the master log always appear with the task element's
element name and cache key, even if the element or plugin issuing
the log line is not the primary task element.
- Messages logged in the task specific log, retain the context of the
element names and cache keys which are issuing the log lines.
Changes include:
* _message.py: Added the task element name & key members
* _messenger.py: Log the element key as well if it is provided
* _widget.py: Prefer the task name & key when logging, we fallback
to the element name & key in case messages are being logged outside
of any ongoing task (main process/context)
* job.py: Unconditionally stamp messages with the task name & key
Also removed some unused parameters here, clearing up an XXX comment
* plugin.py: Add new `_message_kwargs` instance property, it is the responsibility
of the core base class to maintain the base keyword arguments which
are to be used as kwargs for Message() instances created on behalf
of the issuing plugin.
Use this method to construct messages in Plugin.__message() and to
pass kwargs along to Messenger.timed_activity().
* element.py: Update the `_message_kwargs` when the cache key is updated
* tests/frontend/logging.py: Fix test to expect the cache key in the logline
* tests/frontend/artifact_log.py: Fix test to expect the cache key in the logline
Fixes #1393
|
| |
| |
| |
| |
| | |
This allows more flexible usage of the APIs, to allow passing all of the
Message() constructor arguments through kwargs.
|
| |
| |
| |
| |
| | |
Now that we have _DisplayKey(), no need for this extra accessor, it's
not helping anything to have it anymore.
|
| |
| |
| |
| |
| | |
Instead of using Element._get_brief_display_key(), no need for that
second accessor.
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of passing around untyped tuples for cache keys, lets have
a clearly typed object for this.
This makes for more readable code, and additionally corrects the
data model statement of intent that some cache keys should be displayed
as "dim", instead informing the frontend about whether the cache key
is "strict" or not, allowing the frontend to decide how to display
a strict or non-strict key.
This patch does the following:
* types.py: Add _DisplayKey
* element.py: Return a _DisplayKey from Element._get_display_key()
* Other sources: Updated to use the display key object
|
|\
| |
| |
| |
| | |
Simplify `bst shell` implementation
See merge request BuildStream/buildstream!2084
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
`--use-buildtree` is now a boolean option for `bst shell`. If no
buildtree is available, an error is raised.
|
| |
| |
| |
| |
| |
| | |
Use single scheduler run for pulling dependencies and buildtree.
Deduplicate cache checks and corresponding warning/error messages
with and without pulling enabled.
|
| | |
|
| | |
|
| | |
|
| | |
|
|/ |
|
|\
| |
| |
| |
| | |
Simplify source workspace tests
See merge request BuildStream/buildstream!2085
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
This is to remove some hoops that are currently used, that do not fit
well with most of the style in the code. It also removes indirections
and make the test easier to understand
|
| | |
|
|/
|
|
|
| |
This test seems to be copy pasted from our tests around workspaces and
doesn't need to be so complicated
|
|\
| |
| |
| |
| | |
scheduler.py: Invoke the ticker callback at the end of run()
See merge request BuildStream/buildstream!2088
|
|/
|
|
| |
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
|