| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
This allows us to dump the data in an ordered way without depending
on 'node_sanitize'.
|
|\
| |
| |
| |
| | |
_yaml: Remove 'node_del' and support `del mapping[key]`
See merge request BuildStream/buildstream!1424
|
|/
|
|
|
| |
- Also add a convenience method 'safe_del' catching the exception
when we don't care if the value was there or not.
|
|\
| |
| |
| |
| | |
_yaml: Remove 'node_copy' and add 'Node.copy()'
See merge request BuildStream/buildstream!1432
|
|/
|
|
| |
Also adaprt every part of the code calling it
|
|\
| |
| |
| |
| | |
introduce a Node api, and remove node_get
See merge request BuildStream/buildstream!1401
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Sometimes, we might want to have a list or a string, in which case, we
can now use 'get_node', which can return multiple types.
This method doesn't contain a 'default' value, as building a 'Node' from
it would be hard. We therefore just have a 'allow_none' flag that allows
returning 'None' when the value is not found.
- includes: use the new 'get_node' instead of trying multiple versions
|
| |
| |
| |
| | |
We shouldn't have to create normal nodes ever. Let's ensure we don't
|
| | |
|
| | |
|
| |
| |
| |
| | |
This can now be done more easily with the Node api
|
| |
| |
| |
| |
| |
| |
| | |
The new yaml API is able of getting these access with the same error
messages handling.
Having this helper is therefore not useful anymore.
|
| |
| |
| |
| |
| | |
This method is unused and can be easily reimplemented with the new
Node API by looping over nodes.
|
| |
| |
| |
| |
| |
| | |
This function is hard to make generic and, with the new API, the access
is simplified. Therefore, removing this function and migrating all its
usages
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Adding 'get_sequence' on MappingNode to access sequences in a mapping
- Adding 'sequence_at' on SequenceNode to access sequences in a sequence
- Adding 'mapping_at' on SequenceNode to access mappings in a sequence
Using "*_at" in sequences allows us to quickly understand if we are
dealing with a sequence or a mapping.
|
| |
| |
| |
| |
| |
| |
| | |
In a strongly typed API with Node, having a 'None' as expected type
is hard to make nice. Moreover, this is rarely used in the codebase.
Thus, adapting the call sites to not use 'None' as an expected type.
|
| |
| |
| |
| |
| |
| | |
- Add the 'as_int()' method on 'ScalarNode' to replace
'node_get(mapping, key, int)'
- Adapt all call sites to use the new API
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- 'as_bool()' casts a ScalarNode into a boolean, understanding both
'True' and 'False' as truthy-falsy values, as per node_get(type=bool)
behavior
- 'is_none()' allwos checking whether the scalar node contains a 'None'
value. Since 'None' cannot be used when working with booleans, we need
to have a way of checking for 'None' when we actually need the
information of whether the value is unset.
- Adapt all call places to use the new API
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- 'get_scalar()' allows retrieving a scalar node from a mapping.
- 'as_str()' casts a ScalarNode into a string (thus removing the node
information).
Both together, those replace 'node_get(mapping, key, type=str)' but
also allow retrieving the 'Node' itself, which will allow in the future
lazier provenance computation.
|
| |
| |
| |
| |
| |
| |
| |
| | |
This allows to get a mapping node from another 'MappingNode',
replacing 'node_get(my_mapping, key, type=dict)'
Also changes all places where 'node_get' was called like that by
the new API.
|
| |
| |
| |
| |
| |
| |
| | |
This allows us to represent sequences (lists) more efficiently.
This is the third type that is needed in order to know what kind of
datastructure we are handling in our graph.
|
| |
| |
| |
| |
| | |
This allows us to specialize the base 'Node' class to store mappings
(dicts) more efficiently.
|
|/
|
|
|
|
|
|
| |
This node specializes the 'Node' class to represent a scalar value.
This allows us to let users access leaf Nodes in the graph without
having to find them with `node_find_target`, and also will allow
us lazier computation of node provenance in some cases.
|
|\
| |
| |
| |
| | |
_yaml: Remove useless calls to '_yaml.node_sanitize'
See merge request BuildStream/buildstream!1412
|
|/
|
|
|
|
| |
Calling '_yaml.dump' will itself call '_yaml.node_sanitize', therefore
we can remove all calls to it in places where we directly after call
dump.
|
|\
| |
| |
| |
| | |
Improve subproject fetching
See merge request BuildStream/buildstream!1414
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
This is in preparation for moving subproject fetching to the Stream
class. Project loading may require subproject fetching as part of
processing include directives.
|
|/
|
|
|
|
| |
Treat junction element sources the same as sources of any other element
and always fetch subprojects as needed. Do not ask the user to manually
fetch subprojects.
|
|\
| |
| |
| |
| | |
Notify direct reverse dependencies when an Element becomes ready for runtime and cached
See merge request BuildStream/buildstream!1406
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
An Element becomes ready for runtime and cached when:
1. It has a strong cache key
2. It is cached
3. Its runtime dependencies are ready for runtime and cached
(this ensures the runtimes of runtimes are also cached).
This patch introduces the method attempt_to_notify_reverse_dependencies
which will notify all direct reverse dependencies of an Element once
said Element becomes ready for runtime and cached.
|
| | |
|
|/
|
|
|
| |
Each other callback callsite immediately sets the callback to None
once invoked. We should be consistent.
|
|\
| |
| |
| |
| |
| |
| | |
CLI options for on demand blob fetching
Closes #1044
See merge request BuildStream/buildstream!1400
|
| |
| |
| |
| | |
Part of #1044
|
| |
| |
| |
| | |
Part of #1044
|
| |
| |
| |
| |
| |
| | |
This will fetch artifacts if they're not local or are incomplete.
Part of #1044
|
| |
| |
| |
| |
| |
| |
| |
| | |
One test to check that artifacts are pulled and a checkout is successful
when the --pull option is specified. Another to check that it attempts
to pull but fails gracefully if the artifact isn't present.
Part of #1044
|
| |
| |
| |
| |
| |
| |
| | |
This will set up a pull queue and pull relevant artifacts if not present
or incomplete.
Part of #1044
|
| |
| |
| |
| | |
Add test that ensures method is actually covered now and it works.
|
|/
|
|
|
|
|
| |
This never will have worked because digests aren't hashable, and this
method wasn't being covered in any tests. Also changed
`remote_missing_blobs` to ensure the blobs list is an iterator and
updated its docs.
|
|
|
|
| |
Fixes #1046
|
|\
| |
| |
| |
| | |
_frontend/cli.py: Tweak 'try' & 'always' bst shell buildtree handling
See merge request BuildStream/buildstream!1392
|
|/
|
|
|
|
|
|
|
|
|
| |
If the cached Artifact wasn't originally generated with a buildtree,
then there's no need to attempt to find it in remotes by entering
Stream(). In interactive mode we only present the user the option to
attempt the pull with the above assumption on buildtree_exists, so
apply the same to applicable non interactive choices.
This also includes some tweaks in integration/shellbuildtrees.py
to reflect changes and cover cases that were missing.
|
|\
| |
| |
| |
| | |
Guard against gRPC channels in the main process
See merge request BuildStream/buildstream!1405
|
| | |
|
|/ |
|
|\
| |
| |
| |
| | |
jobs/job: send ChildJob the context, not scheduler
See merge request BuildStream/buildstream!1407
|