build.sh
55 unset CDPATH <= CDPATHを無効にする。
56 . setup.sh && <= setup.shを実行する。
57 if [ -f patches/patch.sh ] ; then <= B2G/pathces/pathc.shがあると実行する。(今はなかった。)
58 . patches/patch.sh
59 fi &&
60 configure_device &&
09 function configure_device() {
10 hash_file="$OUT/firmware.hash"
11
12
13
14 if [ $(ls -d device/*/$DEVICE 2> /dev/null | wc -l) -gt 1 ] ; then <=== $DEVICE=maguro
どうして$(ls)が付いているんだろう?
15 echo $DEVICE is ambiguous \"$(ls -d device/*/$DEVICE 2> /dev/null)\"
16 return 1
17 fi
18
$ ls -d device/*/maguro
device/samsung/maguro
$ ls -d device/*/maguro | wc -l
1
$を外してみたら、エラーになった。
if [ (ls -d device/*/$DEVICE | wc -l) -gt 1 ] ; then <=ここの$
2> /dev/nullがあってもエラーになった。
echo $DEVICE is ambiguous \"$(ls -d device/*/$DEVICE 2> /dev/null)\"
return 1
fi
-----------------------------------------------------------------
$ ./build.sh
./build.sh: 行 15: 予期しないトークン `ls' 周辺に構文エラーがあります
./build.sh: 行 15: ` if [ (ls -d device/*/$DEVICE | wc -l) -gt 1 ] ; then'
-----------------------------------------------------------------
if [ ls -d device/*/$DEVICE -gt 1 ] ; then <=これはエラーにならなかった。
-----------------------------------------------------------------
これと同じ動き
filecnt=$(ls -d device/*/$DEVICE 2> /dev/null | wc -l)
echo $filecnt <=echoは1だった。
if [ ${filecnt} -gt 1 ] ; then
http://www.shylph.info/blog/programming/bash/449
19
20
21
22
23
24 if [ -f device/*/$DEVICE/download-blobs.sh ] ; then <== ある
25 important_files="device/*/$DEVICE/download-blobs.sh" <== [http://d.hatena.ne.jp/none53/20130326/1364327613:title=device/samsung/maguro/download-blobs.sh]
26 script="cd device/*/$DEVICE && ./download-blobs.sh"
27 elif [ -f device/*/$DEVICE/extract-files.sh ] ; then <== ある
28 important_files="device/*/$DEVICE/extract-files.sh"
29 script="cd device/*/$DEVICE && ./extract-files.sh"
30 else
31 important_files=
32 script=
33 fi
34
37 if [ -n "$important_files" ] ; then <== important_filesがあるとき
38 new_hash=$(cat $important_files | openssl sha1) <== ハッシュを作成
39 if [ -f "$hash_file" ] ; then
40 old_hash=$(cat "$hash_file")
41 fi
42 if [ "$old_hash" != "$new_hash" ] ; then <== ファイルが変化していないとき、処理なし
ファイルが変化したとき、再度実行する。
43 echo Blob setup script has changed, re-running &&
44 sh -c "$script" &&
45 mkdir -p "$(dirname "$hash_file")" &&
46 echo "$new_hash" > "$hash_file"
47 fi
48 else
49 rm -f $hash_file
50 fi
51
52 return $?
53 }
61 time nice -n19 make $MAKE_FLAGS $@ <= メイクを実行
62
63 ret=$? <=== メイクの終了値
64 echo -ne \\a <=== -n 行末の改行を行わない。 -e string string:=\\aを出力
65 if [ $ret -ne 0 ]; then <=== メイクがエラーのときの処理
66 echo
66 echo \> Build failed\! \<
67 echo
68 echo Build with \|./build.sh -j1\| for better messages
69 echo If all else fails, use \|rm -rf objdir-gecko\| to clobber gecko and \|rm -rf out\| to clobber everything else.
70 else
71 if echo $DEVICE | grep generic > /dev/null ; then
72 echo Run \|./run-emulator.sh\| to start the emulator
73 exit 0
74 fi
75 case "$1" in
76 "gecko")
77 echo Run \|./flash.sh gecko\| to update gecko
78 ;;
79 *)
80 echo Run \|./flash.sh\| to flash all partitions of your device
81 ;;
82 esac
83 exit 0
84 fi
85
86 exit $ret