| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| | |
Now that __update_ready_for_runtime() and
__update_strict_cache_key_of_rdeps() have been introduced,
we no longer need to recursively update the state of elements
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
An element becomes ready for runtime once it has a
cache key and all of its transitive runtime dependencies
have cache keys.
This patch introduces the method __update_ready_for_runtime()
which is called once the cache key of an Element is calculated.
When called, we immediately notify reverse dependencies and,
if appropriate, try to calculate their cache keys.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Once an Element's strict cache key is determined, we should
attempt to update the strict cache key of it's reverse
dependencies. The state of a reverse dependency will be
updated once all of its dependencies have strict cache keys
This patch introduces the potential for a RecursionError because
_update_state() can now trigger further _update_state calls (on
reverse dependencies). Therefore, the maximum recursion limit
for our "test_max_recursion_depth" test has been lowered.
If this becomes a problem, we can always consider setting a
larger recursion limit, for now, this change has been tested
with the Debian stack and works as expected.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This patch inlines the
__on_{build,runtime}_dependency_ready_for_runtime_and_cached()
functions. Their logic now exists within
_update_ready_for_runtime_and_cached, thus the overhead of the
extra functions have been removed.
|
| |
| |
| |
| |
| |
| |
| | |
The __remaining_runtime_deps_uncached and
__remaining_build_deps_uncached variables are rather verbose and
do not really need to specify that they are "remaining", this is
implicit. This patch renames these variables
|
| |
| |
| |
| | |
These comments should have been removed/fixed in 176a3057
|
| |
| |
| |
| |
| |
| |
| |
| | |
This patch marks the cache keys of workspaced elements as
initially unstable. If the cache keys are considered unstable,
we don't recursively update reverse dependencies. Only when a
workspaced element is confirmed to be cached do we mark the
cache keys as stable.
|
|/
|
|
|
|
|
| |
It's essential to call preflight() when loading/resolving the Elements.
This patch moves the preflight call to new_from_meta, so that it is
called as soon as the Element is created. This avoids the need for
having multiple callsites.
|
|\
| |
| |
| |
| |
| |
| | |
Add max-jobs configuration and command line option
Closes #1033
See merge request BuildStream/buildstream!1473
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
This tests that the resolution of the `max-jobs` automatic variable
is properly controlled by the new user configuration and command
line option, including the default automatic '0' value.
Regression test for #1033
|
| |
| |
| |
| |
| |
| |
| | |
Only use automatic max-jobs by default if the user has not
requested a specific value for max-jobs.
This is a part of #1033
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
While this is currently only relevant for `bst build`, it is
a current implementation detail that user configuration which
gets overridden by command line options must use toplevel
options.
This patch allows invocations such as the following to override
the max-jobs:
bst --max-jobs 16 build target.bst
This also updates the completions test to expect the new toplevel option.
This is a part of #1033
|
|/
|
|
|
|
|
|
| |
This loads the configuration of the max-jobs variable
from the user configuration, where the default is 0
(meaning use the maximum number of cores with a limit of 8).
This is a part of #1033
|
|\
| |
| |
| |
| | |
Rewrite of the Node API
See merge request BuildStream/buildstream!1472
|
| | |
|
| |
| |
| |
| |
| | |
We need to update every place where we were passing a yaml 'dict' to
now pass a 'MappingNode'
|
| |
| |
| |
| |
| | |
_create_new_file did not use the 'toplevel' parameter, we can therefore
remove it.
|
| | |
|
| |
| |
| |
| |
| | |
Users should not have to know anything about nodes, and should be
greeted by commonly defined yaml types.
|
| |
| |
| |
| |
| |
| |
| |
| | |
A 'clone' operation has an implicit understanding that it is expensive,
which is not the case of a 'copy' operation, which is more usually
a shallow copy.
Therefore renaming to 'clone'
|
| |
| |
| |
| |
| | |
This reduces slightly the amount of C code needed and makes the run
marginally faster
|
| |
| |
| |
| |
| | |
This way, it is easier to know what is BuildStream-private from
what is module-private
|
| | |
|
| |
| |
| |
| | |
This is not needed for plugins and should therefore not be public
|
| |
| |
| |
| |
| | |
This makes the 'Node' API public, and available for use directly for
plugins.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
- _composite -> __composite (internal)
- composite -> _composite (BuildStream private)
- composite_under -> _composite_under (BuildStream private)
- get -> _get (internal)
|
| |
| |
| |
| |
| | |
This method is only ever used in this context and should not be on the
base Node anyways
|
| |
| |
| |
| |
| | |
Users should not need to get access to any of those, and should only
need access to the ProvenanceInformation to print it.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
This replaces the helper method by adding a 'get_provenance' on the node
directly
- Adapt all call sites
- Delay getting provenance wherever possible without major refactor
|
| |
| |
| |
| |
| | |
Now that we get scalar Nodes, it is easier to just give the node and
extract the provenance as needed.
|
| |
| |
| |
| |
| |
| |
| | |
Now that we have scalar nodes, we can directly give the scalar to the
method.
- Adapt the plugin method to also not access via the key
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
With nodes being propagated better, we now don't need to extract
provenance beforehand. Therefore removing the ability to provide
indiced when getting provenance.
- Also add 'scalar_at' on 'SequenceNode', in order to fetch a scalar
node at a specific indice
|
| |
| |
| |
| |
| | |
The provenance can be constructed afterwards, so we don't need to
pre-calculate it.
|
| |
| |
| |
| |
| |
| |
| | |
Cython can bypass the normal python mechanism to create new objects,
which makes their instantation faster. See
https://cython.readthedocs.io/en/latest/src/userguide/extension_types.html#fast-instantiation
for more details.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This allows us to type its value more strictly, allowing for more
efficient access.
- Also implement 'node_at' on 'SequenceNode', to allow some tests to
test some internals generically.
|
| |
| |
| |
| |
| | |
This ensures that we are not breaking our encapsulation and that the
modules accessing 'Node' from C are correctly typed.
|
| |
| |
| |
| |
| | |
A direct replacement would be isinstance(obj, MappingNode) if someone
really needs it.
|
| |
| |
| |
| | |
- adapt all call sites to use the new API
|
| |
| |
| |
| |
| |
| |
| | |
Using 'Node.from_dict({})' can replace new_empty_node, and the rest
is not needed anymore.
- Adapt all call sites
|
| |
| |
| |
| |
| |
| |
| | |
There was a single place using 'node_extend_list', which we can replace
more easily with 'SequenceNode.append'.
Also rewrite _projectrefs.py:_lookup to use the new API more effectively
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This changes how we were handling synthetic nodes. Previously, we would
have them as coming from a 'SYNTHETIC_FILE'. This is not correct when
we need the position in the real file when adding new information to a
file we will end up writing to disk (like project_ref).
This is a prerequisite for further work on cleaning how it is done.
|
| |
| |
| |
| |
| |
| |
| | |
This new methods is here to replace the previous 'new_node_from_dict'
that will be moved to a private method.
Adapt all call sites to use the new 'from_dict' method.
|
| |
| |
| |
| |
| | |
- Also take care of node_composite_move in the same way.
- Adapt all calling places
|
| | |
|