Add plugin script shellless
parent
fdb5b16fee
commit
64d43c5f18
|
@ -0,0 +1 @@
|
|||
__pycache__/
|
|
@ -0,0 +1,49 @@
|
|||
from buildstream import Element, ElementError, Scope
|
||||
|
||||
|
||||
class ScriptShelllessElement(Element):
|
||||
__root_read_only:bool
|
||||
__commands:list
|
||||
|
||||
BST_FORBID_RDEPENDS = True
|
||||
|
||||
def configure(self, node):
|
||||
# Get data
|
||||
self.__root_read_only = self.node_get_member(node, bool, 'root_read_only', None)
|
||||
self.__commands = self.node_get_member(node, list, 'commands', None)
|
||||
|
||||
def preflight(self):
|
||||
pass
|
||||
|
||||
def get_unique_key(self):
|
||||
return {'version': 6, "root_read_only": self.__root_read_only, "commands": self.__commands}
|
||||
|
||||
def configure_sandbox(self, sandbox):
|
||||
sandbox.set_environment(self.get_environment())
|
||||
|
||||
def stage(self, sandbox):
|
||||
for build_dep in self.dependencies(Scope.BUILD, recurse=False):
|
||||
with self.timed_activity("Staging {} at /".format(build_dep.name), silent_nested=True):
|
||||
build_dep.stage_dependency_artifacts(sandbox, Scope.RUN, path="/")
|
||||
for build_dep in self.dependencies(Scope.BUILD, recurse=False):
|
||||
with self.timed_activity("Integrating {}".format(build_dep.name), silent_nested=True):
|
||||
for dep in build_dep.dependencies(Scope.RUN):
|
||||
dep.integrate(sandbox)
|
||||
|
||||
def assemble(self, sandbox):
|
||||
for command in self.__commands:
|
||||
self.status("Running command", detail=" ".join(command))
|
||||
#self.status(sandbox.get_virtual_directory())
|
||||
exitcode = sandbox.run(command, SandboxFlags.ROOT_READ_ONLY if self.__root_read_only else 0, cwd="/")
|
||||
print("Command: %s Exit: %i" % (repr(" ".join(command)), exitcode))
|
||||
if exitcode != 0:
|
||||
raise ElementError("Command '{}' failed with exitcode {}".format(" ".join(command), exitcode))
|
||||
|
||||
# Return where the result can be collected from
|
||||
return "/"
|
||||
|
||||
|
||||
|
||||
# Plugin entry point
|
||||
def setup():
|
||||
return ScriptShelllessElement
|
|
@ -0,0 +1,7 @@
|
|||
variables:
|
||||
cwd: /
|
||||
|
||||
config:
|
||||
root-read-only: False
|
||||
# List of list of arguments
|
||||
commands: []
|
|
@ -6,3 +6,9 @@ format-version: 17
|
|||
|
||||
# Subdirectory where elements are stored
|
||||
element-path: elements
|
||||
|
||||
plugins:
|
||||
- origin: local
|
||||
path: plugins/elements
|
||||
elements:
|
||||
script_shellless: 0
|
||||
|
|
Loading…
Reference in New Issue