continuous: Apply fixup commit for broken revisions
[can-benchmark.git] / continuous / steps / 11-patch
index e3d20be..a4b5e1d 100755 (executable)
@@ -1,9 +1,65 @@
-#!/bin/sh
+#!/bin/bash
 
 set -e
 
 cd linux
 
+git reset --hard
+
 echo "! Repo $(git config remote.origin.url) $(git describe) $(git rev-parse HEAD) ok"
 
-git am < ../shark-ryu-board-patch.patch
+function vercmp()
+{
+    v1=${1#v}
+    op=$2
+    v2=${3#v}
+
+    # Make release candidates sort before the final release
+    v1=${v1/rc/\~}
+    v2=${v2/rc/\~}
+
+    dpkg --compare-versions $v1 $op $v2
+}
+
+if git rev-list --ancestry-path 0b05e2d671c40cfb57e66e4e402320d6e056b2f8..1cd03890ea64795e53f17a94928cca22495acb2a^|grep -q $(git rev-parse HEAD); then
+    # Revert commit that causes unbootable system (v4.2-rc2-34-g0b05e2d)
+    git revert --no-edit 0b05e2d671c40cfb57e66e4e402320d6e056b2f8 # powerpc/32: cacheable_memcpy becomes memcpy
+    git reset HEAD^ # Do not commit revert - this helps with bisecting
+fi
+
+if git rev-list --ancestry-path 990486c8af044f89bddfbde1d1cf9fde449bedbf^..7a5692e6e533fd379081ab06fb58f3f5ee4d80bc^|grep -q $(git rev-parse HEAD); then
+    # Revert commit that causes compile error (v4.3-rc4-3-g990486c)
+    git revert --no-edit 990486c8af044f89bddfbde1d1cf9fde449bedbf # strscpy: zero any trailing garbage bytes in the destination
+    git reset HEAD^ # Do not commit revert - this helps with bisecting
+fi
+
+if git rev-list --ancestry-path 7322dd755e7dd34bc5359aa27abeed1687e0f628^..v4.6^|grep -q $(git rev-parse HEAD); then
+    # Revert commit that causes compile error. This error seems to be
+    # caused by a compiler bug (see the message of the reverted
+    # commit) and is magically fixed by an unrelated commit merged
+    # before v4.6 (commit 20decb7e486d7eefff3931f58d092d2d7c024a1c
+    # "drivers: net: xgene: Fix error handling")
+    git revert --no-edit 7322dd755e7dd34bc5359aa27abeed1687e0f628 # byteswap: try to avoid __builtin_constant_p gcc bug
+    git reset HEAD^ # Do not commit revert - this helps with bisecting
+fi
+
+if git rev-list --ancestry-path 9402c684613163888714df0955fa1f17142b08bf^..2c0f99516f53911c3f2f81ab3815841e3408f11e^|grep -q $(git rev-parse HEAD); then
+    # Apply fix for commit that breaks boot
+    git apply --index <<EOF
+--- a/arch/powerpc/lib/feature-fixups.c
++++ b/arch/powerpc/lib/feature-fixups.c
+@@ -154,3 +154,3 @@ static void do_final_fixups(void)
+ {
+-      struct cpu_spec *spec = *PTRRELOC(&cur_cpu_spec);
++      struct cpu_spec *spec = PTRRELOC(*PTRRELOC(&cur_cpu_spec));
+EOF
+fi
+
+if git rev-list --ancestry-path 309b315b6ec686ce050758cc4e29f6ad1125a83f^..97f6e0cc35026a2a09147a6da636d901525e1969^; then
+    git show 97f6e0cc35026a2a09147a6da636d901525e1969 | git apply --index
+fi
+
+# It the dts file exists, next command fails
+rm -f arch/powerpc/boot/dts/shark-ryu.dts
+git apply --index < ../shark-ryu-board-patch.patch