| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| | |
_loader: Use only one Dependency() class
See merge request BuildStream/buildstream!2019
|
| | |
|
| |
| |
| |
| |
| |
| | |
Since ProvenanceInformation are created on the demand, it's better
to just hold on to the originating Node and create the provenance
only when needed.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This moves the Dependency() implementation from the _loader.types
module into the _loader.loadelement module, replacing the duplicate
Dependency() definition there.
Instead of creating _loader.loadelement.Dependency objects on the
fly during the load process, we simply fill in the new LoadElement
member on the original Dependency objects.
This refactor should make the code easier to work with, since any
originally loaded state from the YAML is preserved in the intermediate
LoadElement data model and does not need to be manually handed over
to a separate object.
Summary of changes:
* _loader/types.pyx: Removed Dependency() implementation from here,
and renamed to _loader/types.py
* _loader/loadelement.py: Replaced the second Dependency object
implementation with the original one from _loader/types.py,
adding a new LoadElement member which is resolved during the
load process via the new Dependency.set_element() API
* _loader/loader.py: Instead of creating a second kind of Dependency
object on the fly during the load process, simply resolve the
existing dependencies with Dependency.set_element()
* setup.py: Fixed up cython build instructions, now that _loader/types.py
no longer contains any cython code.
|
|\
| |
| |
| |
| |
| |
| | |
Refactor session headings in the frontend
Closes #1369
See merge request BuildStream/buildstream!2009
|
| | |
|
| |
| |
| |
| |
| |
| | |
Clarify the few keys which must absolutely be declared in project.conf
if declared at all, these keys cannot be declared in a separate include
file.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This function now prints information about each loaded project in
the session:
* Information about each loaded project
- Junction path, if any
- Provenance of how the project was initially loaded, if any
- Shows which projects declare the loaded project as a duplicate, if any
- Shows which projects declare the loaded project as internal, if any
* Plugins loaded in each project, including how they were loaded
* Project option values resolved for each loaded project
|
| |
| |
| |
| |
| |
| |
| |
| | |
Now the PluginFactory.list_plugins() API also reports a human readable
explanation of where the plugin was loaded from for each plugin.
This is internally supported by an extension of the abstract
PluginOrigin.get_plugin_paths() APIs.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds a new _ProjectInformation type to types.py which
is returned by the new Project.loaded_projects() API, supported
by a new internal LoaderContext.loaded_projects() function.
This allows the frontend some helpful information to print about
the loaded projects in the session heading.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit makes it mandatory to specify the `plugins` configuration
directly in the `project.conf`, and at the same time removes any ambiguity
as to which plugins are loaded and how. It thus becomes impossible for
the first pass to load the same plugins differently than in the second
pass.
Additionally, some additional project.conf keys are asserted to be
specified in the toplevel project.conf and not included as a matter
of policy and consistency.
Summary of changes:
* _project.py
- Only one set of plugin factories, loaded only in the first pass.
- Assert the following keys are only specified in project.conf and
not included from other files:
name, element-path, min-version, plugins
- The create_element() and create_source() methods no longer need
to take a `first_pass` argument
* element.py: Updated to not specify `first_pass` to create_element()
or create_source()
* _frontend/widget.py: Print the only set of plugins which are loaded,
no more ambiguity about first or second pass.
* _pluginfactory/pluginoriginjunction.py: Chain load plugins from
the single element/source factory, instead of accessing the
Project.config member which no longer has the factories.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This ensures that important calls to this function do give some
thought to providing a reasonable shortname, which will be used
as a display name in errors.
This continues to support `None` as a shortname, which is used
in various tests which don't need to provide a reasonable user
facing error.
The buildstream.testing module now exports a `load_yaml` function
which only takes a filename and no shortname.
|
|/
|
|
|
|
|
| |
Avoid redundantly announcing the session heading in the frontend
and only selectively announce it once for the main session.
Fixes #1369
|
|\
| |
| |
| |
| |
| |
| | |
doc/using_the_testsuite: Link to instructions for runtime dependencies
Closes #1115
See merge request BuildStream/buildstream!2016
|
|/
|
|
|
|
|
|
|
| |
Running the test suite requires one to install BuildStream's runtime
dependencies as well, out of which BuildBox is the tricky one. We
already have instructions on how to do that, so we just need to point to
it from the hacking docs.
Closes #1115.
|
|\
| |
| |
| |
| | |
element/source: Remove pointless extra variable
See merge request BuildStream/buildstream!2020
|
|/
|
|
|
| |
These __meta_kind members are documented as relevant for pickling, which
was removed a short while ago.
|
|\
| |
| |
| |
| | |
Extract ElementSources class
See merge request BuildStream/buildstream!2007
|
| |
| |
| |
| | |
An ElementSources object represents the combined sources of an element.
|
| |
| |
| |
| | |
Do not exit the loop if a source is already in the remote source cache.
|
| |
| |
| |
| |
| | |
This is already cached in each `Source` object. As this method is not
called frequently, this extra caching layer is not needed.
|
| |
| |
| |
| |
| |
| | |
This was a workaround for inconsistent error handling in the frontend.
As the error handling is now fixed, drop these cache checks after
tracking.
|
| |
| |
| |
| |
| |
| |
| | |
`_is_cached()` is indirectly called by the frontend, which is not
optimal for handling per-plugin errors. Instead, call `validate_cache()`
right before the cache is used: in fetch jobs and when opening a
workspace.
|
| |
| |
| |
| |
| | |
Provide context with the element name if an error is raised when trying
to determine element state.
|
|/
|
|
|
|
|
|
| |
`_print_summary()` is called outside a `try` block in `initialized()` to
print a summary at the end of a session. Add a `try` block to properly
handle plugin errors from `show_pipeline()`. This provides error handling
consistency with `print_heading()`, which is called at the start of a
session.
|
|\
| |
| |
| |
| |
| |
| | |
requirements.txt: Update dependencies
Closes #1377
See merge request BuildStream/buildstream!2010
|
|/
|
|
|
|
| |
This now pulls in pytest > 6.0.1, which has a few breaking changes
Fix #1377
|
|\
| |
| |
| |
| | |
Publish our type annotations
See merge request BuildStream/buildstream!2012
|
|/
|
|
|
|
|
|
|
|
|
| |
As defined by PEP 561 (https://www.python.org/dev/peps/pep-0561), add a
`py.typed` file to the BuildStream package. This allows any downstream
packages (currently plugins, maybe other use cases in future) to run
type checkers against BuildStream as well.
Although we don't have type hints for the private API surface,
downstream packages should only be using public API anyway, so they
should mostly be fine.
|
|\
| |
| |
| |
| | |
doc/source/main_install.rst: BuildStream doesn't directly depend on fuse / bubblewrap
See merge request BuildStream/buildstream!2015
|
| | |
|
|/ |
|
|\
| |
| |
| |
| |
| |
| | |
data/userconfig.yaml: Document valid symbols for format strings
Closes #510
See merge request BuildStream/buildstream!2013
|
|/
|
|
|
|
|
|
| |
Document the valid symbols that can be used as part of the
`message-format`. And, in case of `element-format`, redirect to
`bst show --help` to avoid duplicating the help text in two places.
Fixes #510.
|
|\
| |
| |
| |
| | |
Reintroduce install instructions to docs
See merge request BuildStream/buildstream!1999
|
| |
| |
| |
| | |
They are not part of core anymore
|
|/
|
|
|
|
|
|
|
|
| |
This is mostly a copy of the install from source instructions from
https://buildstream.build/install.html.
Edits have been made to focus more on Buildstream 2.
Sections for tarball installation and package installation have
been removed, as they cannot currently be used for BuildStream 2.
Docker section has been moved to the docker-image repository.
Docs have been reduced down to a single page.
|
|\
| |
| |
| |
| | |
tests/format/variables.py: Increase timeout
See merge request BuildStream/buildstream!2008
|
|/
|
|
|
|
|
| |
With sometimes very slow runners, this test has been found to timeout
more often after the recent refactoring.
Double the timeout to avoid erronously failing CI.
|
|\
| |
| |
| |
| |
| |
| | |
Rework handling of cached failures
Closes #967
See merge request BuildStream/buildstream!1970
|
| |
| |
| |
| |
| |
| | |
builds
The old one tested that retrying the failed build doesn't actually retry
|
| | |
|
| | |
|
|/ |
|
|\
| |
| |
| |
| | |
Append lists when merging conditional statements
See merge request BuildStream/buildstream!2002
|
| |
| |
| |
| |
| |
| | |
Added tests to ensure that conditional statements don't get overwritten
when performing composition of one dictionary on top of another due to
include processing.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
During composition of project.conf, it can happen that we
are including and composing node hierarchies before options
are resolved and before we are ready to evaluate conditional
statements.
Without this patch, conditional statements are treated like
regular sequences, causing existing conditional statements to
be overwritten by subsequently composited conditional statements
without ever having been resolved.
This patch introduces a special case for composing sequences,
when composing a sequence that is a conditional statement, the
sequence is appended instead of overwriting the underlying
list.
Note that precedence of declarations in including vs included
yaml fragments did raise some concern, and a test in the following
commit is added to cover this case. Composition of conditional lists
on top of other conditional lists are unconditionally appended,
however the semantics of includes ensures that the including fragment's
conditionals is always composited *on top* over the included fragment,
ensuring that we have the correct pecedence even when compositing
yet to be resolved conditional directives.
|
|\
| |
| |
| |
| |
| |
| | |
Add a remote cache to overnight builds
Closes #897
See merge request BuildStream/buildstream!2004
|
|/
|
|
|
| |
This means the over nights will also push and pull when they did not in
the past.
|
|
|
|
|
|
|
|
|
| |
As per this announcement regarding formalizing committers:
https://mail.gnome.org/archives/buildstream-list/2020-May/msg00023.html
We are now using a CODEOWNERS file to ensure only maintainers can
greenlight patches for protected branches in gitlab.
|