| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
defaulting to False.
Allow plugins to conveniently leverage the new `allow_none` parameter,
and have Plugin.node_get_member() raise a LoadError in the usual
case where None is not an acceptable value to be explicitly set in
the user provided YAML.
|
|
|
|
|
|
| |
This also ensures it is exposed via the main buildstream __init__.py
file, fixes the imports of CoreWarnings, and adjusts the documentation
links to point to the right place.
|
| |
|
|
|
|
|
|
|
|
|
| |
Previously, debug messages from `Plugin.__del__()` went to stdout
which was a problem for the test suite in extremely rare and hard to
predict circumstances. This corrects that by sending the message to
stderr where all the rest of the messages tend to go.
Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
|
|
|
|
|
|
|
|
|
| |
The `_sentinel` in `utils.py` was used only for yaml node tracking.
As such, simplify matters by removing it from `utils.py` and move it
to `_yaml.py` which means that we no longer need to try and avoid a
circular import issue by means of runtime importing.
Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
|
|
|
|
|
|
|
| |
Pylint recommends the use of dict.get() rather than a multi-line if
statement for handling optional keyword arguments.
Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
|
|
|
|
|
| |
Fix most instances of 'effect' being used as a verb instead of a noun.
Skipped generated instance in doc/source/conf.py.
|
| |
|
|
|
|
|
|
|
|
|
| |
Keeps track of whether the plugin is currently being configured.
Adjusted Element and Source classes to call _configure() in place
of calling configure() directly.
This is a part of #620
|
|
|
|
|
| |
Providing warn with detail=None (default) will no longer print None when
a fatal warning is triggered.
|
|
|
|
| |
This includes detailing the use of `fatal-warnings` within project.conf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows for users to configure fatal-warnings to be either a list of
warnings.
This commit deprecates the use of fail-on-overlap within project.conf,
this will now use the fatal-warnings configuration item.
element.py: Cache key calculation now takes into account all of the
fatal-warnings
tests: This modifys the tests/frontend/overlaps.py tests to support the
new fatal-warnings configuration. Backwards compatibility is also
tested for `fail-on-overlap`
_versions.py: BST_FORMAT_VERSION bumped to 15 for fatal-warnings
BST_CORE_ARTIFACT_VERSION bumpted to 5 for fatal-warnings
Fixes: #526
|
|
|
|
|
|
|
|
| |
A project path is a path relative to a project directory.
A project path can not also refer to the parent directory in the first
path component, or point to symbolic links, fifos, sockets and
block/character devices.
|
|
|
|
|
|
| |
Since we backported the temporary/permanent failures patch for #397
into the `bst-1.2` branch, we need to adjust the since versions in master
down to 1.2.
|
|
|
|
|
| |
The git plugin will now make use of the fail_temporarily parameter
to Plugin.call(), allowing failures to trigger a retry.
|
|
|
|
|
|
|
|
| |
Plugin.call() now takes fail_temporarily as an optional parameter,
when supplied it will cause subsequent failures to trigger temporary
errors as opposed to permanent errors.
This also extends Plugin.check_output() which makes use of Plugin.call()
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o element.py / plugin.py: Removed supporting logging code, and derive
the log handle from Context.
o _scheduler/scheduler.py, _scheduler/queues/queue.py: Adapt to new Job initializer API for the logfile
o _scheduler/jobs/job.py: Run job activities within the new context manager
which turns on logging for a job. Also removed a lot
of custom logging abstract methods which are unneeded.
o _scheduler/jobs: Job implementations need not implement so much custom logging.
|
|
|
|
| |
Fixes #424
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
plugin format revisioning
The policy for format revisioning of core plugins maintained in BuildStream
now changes such that we revision all plugins under the same core format version.
This means that format extensions in plugins should be revisioned in
the global _versions.BST_FORMAT_VERSION along with the core format, this
simplifies parameterization of project.conf for usage of core plugins.
This did not really require any code support as our plugins have never
been revisioned before.
|
|
|
|
|
|
|
|
| |
Adding "Abstract Methods" section indicating what implementors
have to implement.
Also fixed some inconsistencies, and moved the abstract methods
to the top of the class.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
And adjust all surrounding sources for changed symbols.
Additional details:
o Added Project.get_shell_config() to report the shell configuration,
instead of making those members all public
o Moved assertions about project specified format versions required
of plugins out of Plugin.__init__, and into Project.create_element()
and Project.create_source(), so we can keep more things private
This is a part of issue #285
|
|
|
|
|
|
| |
And adjust all surrounding sources for changed symbols.
This is a part of issue #285
|
| |
|
| |
|
|
|
|
|
|
| |
The flags BST_FORBID_RDEPENDS and BST_FORBID_SOURCES can be set in the
plugin's class declaration, and exceptions will be raised during
pre-flight checks
|
|
|
|
|
| |
This introduces junctions as a new kind of elements to allow
dependencies to cross project boundaries.
|
|
|
|
|
|
|
|
|
|
| |
using it.
Errors are fatal, as such plugins must raise either SourceError() or ElementError().
This method was never used in plugins so far, lets remove it even
though we are technically breaking (unused) API for the overall
betterment of the API.
|
| |
|
| |
|
| |
|
|
|
|
| |
This is a helper to log messages into the plugin's log file.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Consequently:
o Changed Plugin.get_context() to a private Plugin._get_context() accessor.
o Updated anything which imports Context to do so from private _context module
o Updated docs to exclude the now private Context
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This required adding two new APIs to make up for it on the Source
o get_project_directory()
Added here because elements should not be accessing external
resources, Sources needed for local files and GPG keys and such
o translate_url()
Used by sources to mish-mash the project aliases and create
real urls.
|
|
|
|
|
|
| |
Base class for exceptions is now a part of the already private _exceptions module
Also moved PipelineError from _pipeline -> _exceptions module
|
|
|
|
| |
Hide all of buildstream's internal exceptions from the API surface.
|
|
|
|
|
|
|
|
|
|
| |
All of the _yaml APIs which deal with a node (dictionary loaded
from YAML) are named _yaml.node_foo(), _yaml.node_bar(), _yaml.node_baz()
etc, except for this one glaring exception.
Also added a missing internal API documenting comment for _yaml.node_validate()
Also updated all callers to _yaml.validate_node() to now call _yaml.node_validate().
|
| |
|
|
|
|
| |
Note: original patch by Tristan Maat on MR !92, wording modified.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Turns out this doesnt work once you try to actually
run the full buildstream in a test case (in foreground
it screws with other parsing, in background it fails
in the test context with a strange error).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Plugins can now advertize their respective format version with
this class attribute.
At instantiation time, the plugin will take care of asserting
that the project's versioning requirements are met.
Part of a fix for issue #69
|