| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
Element and Source plugins can set this as class data to indicate the
minimal BuildStream API they depend on.
|
|
|
|
|
|
|
|
| |
Allows for more information in timed activities, consequently
avoiding the need for additional status messages in some cases.
The message detail component is only shown at activity START time
but omitted at FAILURE/SUCCESS time.
|
| |
|
| |
|
|
|
|
| |
Instead of doing this manually, we're gonna share that code.
|
|
|
|
|
|
|
|
|
|
| |
When a plugin shells out to another program and then it's job
is terminated, just kill the whole process tree which we introspect
using psutil.
This is brutal but reliably cleans up active processes and never
leaves any orphaned tasks, all approaches so far to allow abstract
child tasks exit gracefully on SIGTERM have not been reliable.
|
|
|
|
|
|
|
|
|
| |
o Refactored the Plugin.call() and Plugin.check_output() APIs
to share a common implementation
o Implement more gentle process killing by first sending SIGTERM
and then SIGKILL only if the child process group does not exit
after 5 seconds of waiting.
|
| |
|
|
|
|
|
| |
Timed activities now do not count the passing of time while
the build is suspended.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o The metaelements and metasources now carry the name, the loader
resolves source names now.
o Element/Source factories dont require a name anymore as they
are already in the meta objects
o Pipeline no longer composes names
o Element.name is now the original project relative filename,
this allows plugins to identify that name in their dependencies,
allowing one to express configuration which identifies elements
by the same name that the user used in the dependencies.
o Removed plugin._get_display_name() in favor of the plugin.name
o Added Element.normal_name, for the cases where we need to have
a normalized name for creating directories and log files
o Updated frontend and test cases and all callers to use the
new naming
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
When the calling process is terminating, force kill the child
subprocess.
Also small change to not `raise e` when reraising, that loses the
traceback and starts a new one, instead just `raise` is correct.
|
|
|
|
| |
This ensures any child messages are silenced.
|
|
|
|
|
|
| |
This is used to carry additional internal context (like the sandbox
directory at assembly time) on errors reported by plugins so they
can be easily reported back to the main process.
|
| |
|
|
|
|
|
| |
Put the command in the detail parameter so it shows up on a separate
line, status messages are optional anyway.
|
|
|
|
|
|
| |
These will pass on a plugin unique id which when used to
index the plugin will raise KeyError, instead just accept
the plugin is dead and print to stdout if in debug mode.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Push and pop the timed activity depth for the
process in the timed_activity() context manager.
Other changes:
o plugin.py: Improved check_output()
o Added info() api to send INFO messages
o Discard DEBUG messages at the stem if not in debug mode
o Added _get_provenance()
|
|
|
|
|
| |
These create the appropriate exceptions automatically,
reducing the work for plugins.
|
|
|
|
|
|
|
|
|
|
| |
Plugin now has debug(), status(), warn(), error() and
the new context manager timed_activity() inspired from
the similar context manager in ybd.
This patch also adds unique ID handling for all plugin
instances, this is used to refer to specific plugins
in messages and return values from child processes.
|
| |
|
|
|
|
|
|
|
| |
This just shares some common aspects of being a plugin in buildstream,
allowing some code sharing between Element and Source interfaces.
This class also swallows up the utils node handling utilities.
|
|
|
|
| |
This is entirely private.
|
|
This provides the internal _PluginContext class used as
a base class for Source and Element factories.
This supports loading Element and Source plugins from multiple
sources, and allows the pipeline to keep separate contexts of
loaded plugins, so that recursive pipeline builds can work with
separate plugin contexts.
|