]> code.ossystems Code Review - meta-freescale.git/commitdiff
linux-mfgtool.inc: Build a Manufactoring Tool variant
authorOtavio Salvador <otavio@ossystems.com.br>
Tue, 21 Jan 2014 11:10:52 +0000 (09:10 -0200)
committerOtavio Salvador <otavio@ossystems.com.br>
Mon, 3 Mar 2014 21:19:42 +0000 (18:19 -0300)
This makes a separated binary set for Manufacturing Tool use without
clobbering the Linux Kernel used for normal use.

Change-Id: I8db032610b9453b6c86f26c373871e7d4bdd3b1e
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
meta-fsl-arm/recipes-kernel/linux/linux-mfgtool.inc [new file with mode: 0644]

diff --git a/meta-fsl-arm/recipes-kernel/linux/linux-mfgtool.inc b/meta-fsl-arm/recipes-kernel/linux/linux-mfgtool.inc
new file mode 100644 (file)
index 0000000..2b1ebf0
--- /dev/null
@@ -0,0 +1,80 @@
+# Produces a Manufacturing Tool compatible Linux Kernel
+#
+# This makes a separated binary set for Manufacturing Tool use
+# without clobbering the Linux Kernel used for normal use.
+#
+# This file must to be included after the original linux-imx.inc file
+# as it overrides the needed values.
+#
+# Copyright (C) 2014 O.S. Systems Software LTDA.
+
+# Adjust provides
+PROVIDES = "linux-mfgtool"
+
+# Avoid coliding files
+LOCALVERSION_append = "-mfgtool"
+KERNEL_SRC_PATH = "/usr/src/kernel-mfgtool"
+KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-mfgtool-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-mfgtool-${MACHINE}"
+MODULE_IMAGE_BASE_NAME = "modules-mfgtool-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+MODULE_TARBALL_SYMLINK_NAME = "modules-mfgtool-${MACHINE}.tgz"
+
+# Ensures we prefer our mfgtool specific files
+FILESEXTRAPATHS_prepend = "${THISDIR}/${ORIG_PN}-${PV}:${THISDIR}/${ORIG_PN}:"
+
+python mfgtool_recipe_handler () {
+    pn = e.data.getVar("PN", True)
+    if not (pn.endswith("-mfgtool") or pn.startswith("mfgtool-")):
+        return
+
+    e.data.setVar("MLPREFIX", "mfgtool-")
+    e.data.setVar("ORIG_PN", e.data.getVar("PN", True))
+    e.data.setVar("PN", "mfgtool-" + e.data.getVar("PN", True).replace("-mfgtool", "").replace("mfgtool-", ""))
+}
+
+python () {
+    pn = d.getVar("PN", True)
+    if not pn.startswith("mfgtool-"):
+        return
+
+    from oe.classextend import ClassExtender
+
+    class LinuxMfgToolExtender(ClassExtender):
+        def extend_name(self, name):
+            if name.startswith("rtld"):
+                return name
+            if name.endswith("-" + self.extname):
+                name = name.replace("-" + self.extname, "")
+            if name.startswith("virtual/"):
+                subs = name.split("/", 1)[1]
+                if not subs.startswith(self.extname):
+                    return "virtual/" + self.extname + "-" + subs
+                return name
+            if not name.startswith(self.extname):
+                return self.extname + "-" + name
+            return name
+
+    clsextend = LinuxMfgToolExtender("mfgtool", d)
+    clsextend.rename_packages()
+    clsextend.rename_package_variables((d.getVar("PACKAGEVARS", True) or "").split())
+
+    clsextend.map_packagevars()
+}
+
+addhandler mfgtool_recipe_handler
+mfgtool_recipe_handler[eventmask] = "bb.event.RecipePreFinalise"
+
+# FIXME: We need to remove the KERNEL_SRC_PATH contents as
+#        kernel.bbclass has no way to skip its installation.
+# FIXME: It is not possible to have external modules against
+#        this kernel variant.
+do_install_append() {
+       rm -r ${D}${KERNEL_SRC_PATH}
+       rmdir ${D}/usr/src ${D}/usr
+}
+
+# FIXME: We must to avoid the staging of KERNEL_SRC_PATH as
+#        it is being removed (see above FIXME items).
+sysroot_stage_all() {
+    :
+}