blob: 3249936493d2797018a3fd1ef9dba454b6df991e (
plain)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
#!/bin/bash
function cleanup() {
hdiutil detach ${DEV_NAME} ||
{ sleep 5 && hdiutil detach ${DEV_NAME} -force; };
return $1 && $?;
};
unpack_build () {
unpack_platform="$1"
dir_name="$2"
pkg_file="$3"
locale=$4
unpack_jars=$5
update_settings_string=$6
if [ ! -f "$pkg_file" ]; then
return 1
fi
mkdir -p $dir_name
pushd $dir_name > /dev/null
case $unpack_platform in
# $unpack_platform is either
# - a balrog platform name (from testing/mozharness/scripts/release/update-verify-config-creator.py)
# - a simple platform name (from tools/update-verify/release/updates/verify.sh)
mac|Darwin_*)
os=`uname`
# How we unpack a dmg differs depending on which platform we're on.
if [[ "$os" == "Darwin" ]]
then
cd ../
echo "installing $pkg_file"
../common/unpack-diskimage.sh "$pkg_file" mnt $dir_name
else
7z x ../"$pkg_file" > /dev/null
if [ `ls -1 | wc -l` -ne 1 ]
then
echo "Couldn't find .app package"
return 1
fi
unpack_dir=$(ls -1)
unpack_dir=$(ls -d "${unpack_dir}")
mv "${unpack_dir}"/*.app .
rm -rf "${unpack_dir}"
appdir=$(ls -1)
appdir=$(ls -d *.app)
# The updater guesses the location of these files based on
# its own target architecture, not the mar. If we're not
# unpacking mac-on-mac, we need to copy them so it can find
# them. It's important to copy (and not move), because when
# we diff the installer vs updated build afterwards, the
# installer version will have them in their original place.
cp "${appdir}/Contents/Resources/update-settings.ini" "${appdir}/update-settings.ini"
cp "${appdir}/Contents/Resources/precomplete" "${appdir}/precomplete"
fi
update_settings_file="${appdir}/update-settings.ini"
;;
win32|WINNT_*)
7z x ../"$pkg_file" > /dev/null
if [ -d localized ]
then
mkdir bin/
cp -rp nonlocalized/* bin/
cp -rp localized/* bin/
rm -rf nonlocalized
rm -rf localized
if [ $(find optional/ | wc -l) -gt 1 ]
then
cp -rp optional/* bin/
rm -rf optional
fi
elif [ -d core ]
then
mkdir bin/
cp -rp core/* bin/
rm -rf core
else
for file in *.xpi
do
unzip -o $file > /dev/null
done
unzip -o ${locale}.xpi > /dev/null
fi
update_settings_file='bin/update-settings.ini'
;;
linux|Linux_*)
if `echo $pkg_file | grep -q "tar.gz"`
then
tar xfz ../"$pkg_file" > /dev/null
elif `echo $pkg_file | grep -q "tar.bz2"`
then
tar xfj ../"$pkg_file" > /dev/null
else
echo "Unknown package type for file: $pkg_file"
exit 1
fi
update_settings_file=`echo $product | tr '[A-Z]' '[a-z]'`'/update-settings.ini'
;;
*)
echo "Unknown platform to unpack: $unpack_platform"
exit 1
esac
if [ ! -z $unpack_jars ]; then
for f in `find . -name '*.jar' -o -name '*.ja'`; do
unzip -o "$f" -d "$f.dir" > /dev/null
done
fi
if [ ! -z $update_settings_string ]; then
echo "Modifying update-settings.ini"
cat "${update_settings_file}" | sed -e "s/^ACCEPTED_MAR_CHANNEL_IDS.*/ACCEPTED_MAR_CHANNEL_IDS=${update_settings_string}/" > "${update_settings_file}.new"
diff -u "${update_settings_file}" "${update_settings_file}.new"
echo " "
rm "${update_settings_file}"
mv "${update_settings_file}.new" "${update_settings_file}"
fi
popd > /dev/null
}
|