~percona-dev/percona-server/release-5.1.49-12-rnt-pre

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env bash
rm -rf a b Percona-Server;
tar zxf mysql-5.1.49.tar.gz;
mv mysql-5.1.49 Percona-Server;
for patch_name in `cat series`; do
    echo "========================================================="
    echo "===== Check patch $patch_name";
    cp -R Percona-Server a;
    cp -R Percona-Server b;
    echo "===== Apply patch $patch_name...";
    patch -p1 -d b < $patch_name >result;
    fail=`cat result | grep FAIL | wc -l`;
    hunk=`cat result | grep Hunk | wc -l`;
    echo "===== Patch $patch_name FAILED: $fail";
    echo "===== Patch $patch_name HUNK:   $hunk";
    if [ $fail -ne 0 ]; then
	echo "==== Patch $patch_name are failed";
	exit 1;
    fi;
    if [ $hunk -ne 0 ]; then
	echo "==== Patch $patch_name need adaptation...";
	find b -name "*.orig" | xargs rm;
	patch_name_new=$patch_name.new;
	patch_name_split=$patch_name.split;
	rm $patch_name_new;
	rm -rf $patch_name_split;
	mkdir $patch_name_split;
	cd $patch_name_split;
	for filename in `splitdiff -a -d ../$patch_name | awk '{ print $2 }' | sed -e "s/>//g"`; do
	    echo $filename;
	    a_head=`cat $filename | head -n2 | head -n1`;
	    b_head=`cat $filename | head -n2 | tail -n1`;
	    echo "PATCH='$patch_name' FILE='$filename' A_HEAD='$a_head' B_HEAD='$b_head'";
	    a_path=`echo $a_head | awk '{ print $2 }'`;
	    b_path=`echo $b_head | awk '{ print $2 }'`;
	    echo "A_PATH='$a_path' B_PATH='$b_path'";
	    (cd ..; echo "diff -Nur $a_path $b_path" >> $patch_name_new);
	    (cat $filename | head -n2 | head -n1 >> ../$patch_name_new);
	    (cat $filename | head -n2 | tail -n1 >> ../$patch_name_new);
	    (cd ..; diff -Nur $a_path $b_path | tail -n+3 >> $patch_name_new);
	done;
	cd ..;
	cat $patch_name_new > $patch_name;
	rm $patch_name_new;
	#rm -rf $patch_name_split;
    fi;
    patch -p1 -d Percona-Server < $patch_name > /dev/null;
    rm -rf a b;
done;