[elbe-devel] [PATCH 1/9] finetuning: basic implementation of project-finetuning
Torben Hohn
torben.hohn at linutronix.de
Wed Nov 28 17:28:56 CET 2018
<project-finetuning> is a set of commands, that run after
image generation.
Possible Usecases are:
- sign images
- crypt setup
- extract partition from image and mark as build artifact.
- modify images (iE remove some modules from /boot/grub)
- UEFI / secureboot: make_lxtrainer_secureboot.sh
- mark files as build artifacts
Signed-off-by: Torben Hohn <torben.hohn at linutronix.de>
---
elbepack/elbeproject.py | 7 +++++++
elbepack/finetuning.py | 19 +++++++++++++++++++
schema/dbsfed.xsd | 37 +++++++++++++++++++++++++++++++++++++
3 files changed, 63 insertions(+)
diff --git a/elbepack/elbeproject.py b/elbepack/elbeproject.py
index 98c0c63a..cc8922e4 100644
--- a/elbepack/elbeproject.py
+++ b/elbepack/elbeproject.py
@@ -37,6 +37,7 @@ from elbepack.repomanager import ProjectRepo
from elbepack.config import cfg
from elbepack.pkgutils import extract_pkg
from elbepack.templates import write_pack_template
+from elbepack.finetuning import do_prj_finetuning
class IncompatibleArchitectureException(Exception):
@@ -580,6 +581,12 @@ class ElbeProject (object):
self.xml.text("project/name")),
allow_fail=True)
+ do_prj_finetuning(self.xml,
+ self.log,
+ self.buildenv,
+ self.targetfs,
+ self.builddir)
+
os.system('cat "%s"' % self.validationpath)
def pdebuild_init(self):
diff --git a/elbepack/finetuning.py b/elbepack/finetuning.py
index ddce159e..e4f889a2 100644
--- a/elbepack/finetuning.py
+++ b/elbepack/finetuning.py
@@ -40,6 +40,10 @@ class FinetuningAction(object):
def execute(self, _log, _buildenv, _target):
raise NotImplementedError('execute() not implemented')
+ def execute_prj(self, log, buildenv, target, _builddir):
+ self.execute(log, buildenv, target)
+
+
class RmAction(FinetuningAction):
tag = 'rm'
@@ -481,3 +485,18 @@ def do_finetuning(xml, log, buildenv, target):
print("Unimplemented finetuning action '%s'" % (i.et.tag))
except CommandError:
log.printo("Finetuning Error, trying to continue anyways")
+
+
+def do_prj_finetuning(xml, log, buildenv, target, builddir):
+
+ if not xml.has('target/project-finetuning'):
+ return
+
+ for i in xml.node('target/project-finetuning'):
+ try:
+ action = FinetuningAction(i)
+ action.execute_prj(log, buildenv, target, builddir)
+ except KeyError:
+ print("Unimplemented finetuning action '%s'" % (i.et.tag))
+ except CommandError:
+ log.printo("Finetuning Error, trying to continue anyways")
diff --git a/schema/dbsfed.xsd b/schema/dbsfed.xsd
index 17aa6283..85cbaff0 100644
--- a/schema/dbsfed.xsd
+++ b/schema/dbsfed.xsd
@@ -830,6 +830,13 @@
</documentation>
</annotation>
</element>
+ <element name="project-finetuning" type="rfs:project-finetuning" minOccurs="0">
+ <annotation>
+ <documentation>
+ apply the given commands to the target rootfilesystem
+ </documentation>
+ </annotation>
+ </element>
<element name="pbuilder" type="rfs:pbuilder" minOccurs="0" maxOccurs="1">
<annotation>
<documentation>
@@ -1824,6 +1831,36 @@
</choice>
</group>
+ <complexType name="project-finetuning">
+ <annotation>
+ <documentation>
+ container for project-finetuning commands; these commands are executed in the
+ project directory, after the images have been generated.
+ </documentation>
+ </annotation>
+ <sequence>
+ <group ref="rfs:project-action" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute ref="xml:base"/>
+ </complexType>
+
+ <group name="project-action">
+ <annotation>
+ <documentation>
+ definition of finetuning commands
+ </documentation>
+ </annotation>
+ <choice>
+ <element name="t2p_mv" type="rfs:cpmv" minOccurs="0">
+ <annotation>
+ <documentation>
+ move a file from the target to the project directory
+ </documentation>
+ </annotation>
+ </element>
+ </choice>
+ </group>
+
<complexType name="addgroup">
<annotation>
<documentation>
--
2.11.0
More information about the elbe-devel
mailing list