Whamcloud - gitweb
Merge b_md into HEAD
[fs/lustre-release.git] / lustre / kernel_patches / scripts / apatch
1 #!/bin/sh
2
3 . patchfns >/dev/null || . /usr/lib/patch-scripts/patchfns >/dev/null || { \
4         echo "Impossible to find my library 'patchfns'."
5         echo "Check your install, or go to the right directory"
6         exit 1
7 }
8
9
10 do_apply()
11 {
12         FILES=$(cat $P/pc/$PATCH_NAME.pc)
13         for file in $FILES
14         do
15                 copy_file_to_bup $file $PATCH_NAME
16         done
17
18         silent=-s
19         if [ $opt_force != 0 ]
20         then
21                 silent=
22         fi
23
24         if patch -p1 $silent -i "$1" || [ $opt_force != 0 ]
25         then
26                 true
27         else
28                 echo SOMETHING WENT WRONG
29                 exit 1
30         fi
31 }
32
33 add_to_db()
34 {
35         basename "$1" >> "$DB"
36 }
37
38 usage()
39 {
40         echo "Usage: apatch patchname"
41         exit 1
42 }
43
44 opt_force=0
45 PATCH_NAMES=""
46
47 for i in $*
48 do
49         case "$i" in
50         -f)
51                 opt_force=1;;
52         *)
53                 PATCH_NAMES="$PATCH_NAMES $i"
54         esac
55 done
56
57 if [ x"$PATCH_NAMES" == x ]
58 then
59         usage
60 fi
61
62 apatch()
63 {
64         PATCH_NAME=$(stripit $1)
65
66         need_file_there $P/pc/$PATCH_NAME.pc
67
68         if is_applied "$PATCH_NAME"
69         then
70                 echo "$PATCH_NAME" is already applied
71                 exit 1
72         fi
73
74         if [ $opt_force != 0 ]
75         then
76                 echo FORCING PATCH
77         fi
78
79         if [ $opt_force != 0 ] || can_apply $P/patches/"$PATCH_NAME".patch
80         then
81                 do_apply $P/patches/"$PATCH_NAME".patch
82                 add_to_db "$PATCH_NAME"
83                 echo applied $PATCH_NAME
84                 echo
85         else
86                 echo "$PATCH_NAME" does not apply
87                 exit 1
88         fi
89 }
90
91 for i in $PATCH_NAMES
92 do
93         if ! apatch $i
94         then
95                 exit 1
96         fi
97 done
98