]> code.ossystems Code Review - meta-freescale.git/commitdiff
fsl-kernel-localversion: Easy LOCALVERSION handling
authorOtavio Salvador <otavio@ossystems.com.br>
Mon, 1 Sep 2014 14:20:30 +0000 (11:20 -0300)
committerOtavio Salvador <otavio@ossystems.com.br>
Mon, 1 Sep 2014 15:18:36 +0000 (12:18 -0300)
This class allow for easy extending of kernel recipes to easy the
LOCALVERSION handling, allowing to reuse of code between different
kernel recipes

The following options are supported:

 SCMVERSION        Puts the Git hash in kernel local version
 LOCALVERSION      Value used in LOCALVERSION (default to '+fslc')

This about avoid code duplication among Layerscape and i.MX.

Change-Id: I3999dbdc2cb761063fe5f83dea65ddb14adec80c
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
meta-fsl-arm/classes/fsl-kernel-localversion.bbclass [new file with mode: 0644]

diff --git a/meta-fsl-arm/classes/fsl-kernel-localversion.bbclass b/meta-fsl-arm/classes/fsl-kernel-localversion.bbclass
new file mode 100644 (file)
index 0000000..bb4bdf5
--- /dev/null
@@ -0,0 +1,39 @@
+# Freescale Kernel LOCALVERSION extension
+#
+# This allow to easy reuse of code between different kernel recipes
+#
+# The following options are supported:
+#
+#  SCMVERSION        Puts the Git hash in kernel local version
+#  LOCALVERSION      Value used in LOCALVERSION (default to '+fslc')
+#
+# Copyright 2014 (C) O.S. Systems Software LTDA.
+
+SCMVERSION ??= "y"
+LOCALVERSION ??= "+fslc"
+
+kernel_conf_variable() {
+       CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;"
+       if test "$2" = "n"
+       then
+               echo "# CONFIG_$1 is not set" >> ${S}/.config
+       else
+               echo "CONFIG_$1=$2" >> ${S}/.config
+       fi
+}
+
+do_configure_prepend() {
+       echo "" > ${S}/.config
+       CONF_SED_SCRIPT=""
+
+       kernel_conf_variable LOCALVERSION "\"${LOCALVERSION}\""
+       kernel_conf_variable LOCALVERSION_AUTO y
+
+       sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${S}/.config'
+
+       if [ "${SCMVERSION}" = "y" ]; then
+               # Add GIT revision to the local version
+               head=`git rev-parse --verify --short HEAD 2> /dev/null`
+               printf "%s%s" +g $head > ${S}/.scmversion
+       fi
+}