|
1 # This Source Code Form is subject to the terms of the Mozilla Public |
|
2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
4 |
|
5 check_updates () { |
|
6 # called with 4 args - platform, source package, target package, update package |
|
7 update_platform=$1 |
|
8 source_package=$2 |
|
9 target_package=$3 |
|
10 locale=$4 |
|
11 |
|
12 # cleanup |
|
13 rm -rf source/* |
|
14 rm -rf target/* |
|
15 |
|
16 unpack_build $update_platform source "$source_package" $locale |
|
17 if [ "$?" != "0" ]; then |
|
18 echo "FAILED: cannot unpack_build $update_platform source $source_package" |
|
19 return 1 |
|
20 fi |
|
21 unpack_build $update_platform target "$target_package" $locale |
|
22 if [ "$?" != "0" ]; then |
|
23 echo "FAILED: cannot unpack_build $update_platform target $target_package" |
|
24 return 1 |
|
25 fi |
|
26 |
|
27 case $update_platform in |
|
28 Darwin_ppc-gcc | Darwin_Universal-gcc3) |
|
29 platform_dirname="*.app" |
|
30 updater="Contents/MacOS/updater.app/Contents/MacOS/updater" |
|
31 ;; |
|
32 WINNT_x86-msvc) |
|
33 platform_dirname="bin" |
|
34 updater="updater.exe" |
|
35 ;; |
|
36 Linux_x86-gcc | Linux_x86-gcc3) |
|
37 platform_dirname=`echo $product | tr '[A-Z]' '[a-z]'` |
|
38 updater="updater" |
|
39 ;; |
|
40 esac |
|
41 |
|
42 if [ -f update/update.status ]; then rm update/update.status; fi |
|
43 if [ -f update/update.log ]; then rm update/update.log; fi |
|
44 |
|
45 if [ -d source/$platform_dirname ]; then |
|
46 cd source/$platform_dirname; |
|
47 cp $updater ../../update |
|
48 ../../update/updater ../../update 0 |
|
49 cd ../.. |
|
50 else |
|
51 echo "FAIL: no dir in source/$platform_dirname" |
|
52 return 1 |
|
53 fi |
|
54 |
|
55 cat update/update.log |
|
56 update_status=`cat update/update.status` |
|
57 |
|
58 if [ "$update_status" != "succeeded" ] |
|
59 then |
|
60 echo "FAIL: update status was not succeeded: $update_status" |
|
61 return 1 |
|
62 fi |
|
63 |
|
64 diff -r source/$platform_dirname target/$platform_dirname > results.diff |
|
65 diffErr=$? |
|
66 cat results.diff |
|
67 grep '^Binary files' results.diff > /dev/null |
|
68 grepErr=$? |
|
69 if [ $grepErr == 0 ] |
|
70 then |
|
71 echo "FAIL: binary files found in diff" |
|
72 return 1 |
|
73 elif [ $grepErr == 1 ] |
|
74 then |
|
75 if [ -s results.diff ] |
|
76 then |
|
77 echo "WARN: non-binary files found in diff" |
|
78 return 2 |
|
79 fi |
|
80 else |
|
81 echo "FAIL: unknown error from grep: $grepErr" |
|
82 return 3 |
|
83 fi |
|
84 if [ $diffErr != 0 ] |
|
85 then |
|
86 echo "FAIL: unknown error from diff: $diffErr" |
|
87 return 3 |
|
88 fi |
|
89 } |