[oe-commits] =?UTF-8?Q?Petter=20Mab=C3=A4cker=20?=: kernel-yocto: fix machine_srcrev check in do_patch

git at git.openembedded.org git at git.openembedded.org
Mon Jul 20 09:42:03 UTC 2015


Module: openembedded-core.git
Branch: master-next
Commit: 5f7403151fc8bfd5b1d77f6626717c8b84d33d93
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=5f7403151fc8bfd5b1d77f6626717c8b84d33d93

Author: Petter Mabäcker <petter at technux.se>
Date:   Wed Jul  8 21:02:03 2015 +0200

kernel-yocto: fix machine_srcrev check in do_patch

do_patch is currently doing checks with machine_srcrev without initiate
it which leads to below (additional debug added):

 DEBUG: Executing shell function do_patch
 .
 .
 .
 + [ 0 -ne 0 ]
 + [  != AUTOINC ]
 + git rev-parse --verify ~0
 fatal: Needed a single revision
 + git merge-base HEAD
 usage: git merge-base [-a|--all] <commit> <commit>...
    or: git merge-base [-a|--all] --octopus <commit>...
    or: git merge-base --independent <commit>...
    or: git merge-base --is-ancestor <commit> <commit>
    or: git merge-base --fork-point <ref> [<commit>]

     -a, --all             output all common ancestors
     --octopus             find ancestors for a single n-way merge
     --independent         list revs not reachable from others
     --is-ancestor         is the first one ancestor of the other?
     --fork-point          find where <commit> forked from reflog of <ref>

 + [  =  ]
 + set +x
 DEBUG: Shell function do_patch finished

Only reason it works today is because 'rev-parse/merge-base' with empty machine_srcrev
will result in "false positive". Solve this by adding a similar non-empty check and
use SRCREV as fallback as in 'do_kernel_metadata'

Signed-off-by: Petter Mabäcker <petter at technux.se>
Signed-off-by: Ross Burton <ross.burton at intel.com>

---

 meta/classes/kernel-yocto.bbclass | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 6fd025e..fb14926 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -168,6 +168,16 @@ do_patch() {
 
 	# check to see if the specified SRCREV is reachable from the final branch.
 	# if it wasn't something wrong has happened, and we should error.
+	machine_srcrev="${SRCREV_machine}"
+	if [ -z "${machine_srcrev}" ]; then
+		# fallback to SRCREV if a non machine_meta tree is being built
+		machine_srcrev="${SRCREV}"
+		# if SRCREV cannot be reached something is wrong.
+		if [ -z "${machine_srcrev}" ]; then
+			bbfatal "Neither SRCREV_machine or SRCREV was specified!"
+		fi
+	fi
+
 	if [ "${machine_srcrev}" != "AUTOINC" ]; then
 		if ! [ "$(git rev-parse --verify ${machine_srcrev}~0)" = "$(git merge-base ${machine_srcrev} HEAD)" ]; then
 			bberror "SRCREV ${machine_srcrev} was specified, but is not reachable"



More information about the Openembedded-commits mailing list