のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

B2G/build.shの内容


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    # Make sure that our assumption that device codenames are unique
13    # across vendors is true
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    # Select which blob setup script to use, if any.  We currently
20    # assume that $DEVICE maps to the filesystem location, which is true
21    # for the devices we support now (oct 2012) that do not require blobs.
22    # The emulator uses a $DEVICE of 'emulator' but its device/ directory
23    # uses the 'goldfish' name.
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