aboutsummaryrefslogtreecommitdiffstats
path: root/classes/fsl-kernel-localversion.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/fsl-kernel-localversion.bbclass')
-rw-r--r--classes/fsl-kernel-localversion.bbclass39
1 files changed, 39 insertions, 0 deletions
diff --git a/classes/fsl-kernel-localversion.bbclass b/classes/fsl-kernel-localversion.bbclass
new file mode 100644
index 00000000..1004e355
--- /dev/null
+++ b/classes/fsl-kernel-localversion.bbclass
@@ -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, 2015 (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" >> ${B}/.config
+ else
+ echo "CONFIG_$1=$2" >> ${B}/.config
+ fi
+}
+
+do_configure_prepend() {
+ echo "" > ${B}/.config
+ CONF_SED_SCRIPT=""
+
+ kernel_conf_variable LOCALVERSION "\"${LOCALVERSION}\""
+ kernel_conf_variable LOCALVERSION_AUTO y
+
+ sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${B}/.config'
+
+ if [ "${SCMVERSION}" = "y" ]; then
+ # Add GIT revision to the local version
+ head=`git --git-dir=${S}/.git rev-parse --verify --short HEAD 2> /dev/null`
+ printf "%s%s" +g $head > ${S}/.scmversion
+ fi
+}