ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年5月31日 星期二

localize android repo -- more detail

抓 code -- 先覆蓋 default.xml 再 sync,這樣減少抓 code 的時間。
$mkdir androidrepo && cd androidrepo $repo repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread --mirror $cp ....../default.xml ./.repo/manifests/default.xml $repo sync 為了保險起見,先把他 tar 起來˙˙ ˙
$cd .. $tar zcvf myandroidrepo.tar.gz myandroidrepo 接著 clone kernel 和 uboot..
follow user guide, 把 kernel 和 uboot 分開 mirror
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.35.y.git --mirrot 還有
git clone git://git.denx.de/u-boot.git --mirrot
server 部份先作到這裡,接下來要從 client 來修改 server 的內容 (因為 server 的 repo 是用 --mirror option clone 的)

修改 manifest.git/default.xml
$git clone git://server/androidrepo/platform/manifest.git -b gingerbread 照剛剛server 的作法作一次,好 update default.xml
$cp ../code/r10.1/default.xml manifest/default.xml branch 出來作mark
$git checkout -b freescale $git commit -am 'use freescale default.xml $git push origin freescale 接著改為local,同樣 branch 一次
(因為 repo init -u 只能由 -b 選擇 manifest.xml 的 branch,不能選rev,所以要這樣每次都 branch 一次)
$git checkout -b freescaleLocal 修改 default.xml,把 remote 改為 local:
<remote name="korg" fetch="git://server/androidrepo/" review="review.source.android.com" /&g commit & push 回去
$git commit -am 'use local server'
$git push origin freescaleLocal

OK, 現在 client 可以開始作 repo sync..
$mkdir myandroid && cd myandroid $repo init -u git://server/androidrepo/platform/manifest.git -b freescaleLocal $repo sync
為了把每一個 step 都紀錄起來,最好隨著 manifest.xml 的版本變更,增加對應的 project code branch。


現在作一個 branch -- justsync, 要改 source 跟 manifest.xml
$repo forall -c 'git checkout -b justsync' update server
$repo forall -c 'git push korg justsync 修改 manifest..
先到外面..clone
$git clone git://server/androidrepo/platform/manifest.git -b freescaleLocal 新增 justsync , 修改 manifest.xml
$cd manifest $git checkout -b justsync 修改 default.xml,把 default rev 改.
<default revision="justsync" remote="korg" /> 並且把下面所有 project 有 revision 的部份刪掉.
commit, push 到 serve
$git commit -am 'use justsync as default rev' $git push origin justsync
接著clone kernel, uboot 到對應位置, follow user guide, checkout v2.6.35.3 出來
$git clone git://serer/linux-2.6.35.y.git kernel_imx $git checkout v2.6.35.3 cd ..... $git clone git://server/u-boot.git uboot-imx 為求一致,都 branch 一個 justsync ,push 到 server
$ git checkout -b justsync $ git push origin justsync kernel_imx, uboot-imx 都要作一次。
到此,所有 git project 都在 justsync 上了。

以後 checkout justsync,就可以回到 repo sync 後的 code 狀態。

上 vendor patch.. $ c_patch ~/home/myhome/imx-android-r10.1/code/r10.1 imx_r10.1 vendor patch 會 對所有 patch 過的 project 產生 imx_r10.1 這個 branch。
同時還會新增一些 folder...

做完 patch ,先把有在 repo manifest管理的 project 都 create imx_r10.1 出來,push 到 server.
$repo forall -c 'git checkout -b imx_r10.1' $repo forall -c 'git push korg imx_r10.1'
kernel, bootloader 也要這樣作,push 回去
$git push origin imx_r10.1
做完patch 後,用上次寫的python script : searchcompare.py,找出哪些 folder 不在 manifest.xml 的管轄內。
要手動加回去,還要 mirror 到 server 裡。
$python searchcompare.py ./kernel_imx ./system/dispd ./system/wlan/atheros ./packages/apps/fsl_imx_demo ./device/fsl ./hardware/mx5x ./bootable/bootloader/uboot-imx ./external/linux-atheros-wifi ./external/systemtap ./external/linux-firmware-imx ./external/wpa_supplicant_ath ./external/linux-lib 所以除了 kernel_imx, bootable/bootloader/uboot-imx 以外,都要作

到 server 去,su 成 git,到 git-daemon 的 repo 位置, androidrepo 下,到對應的 folder。
以 dispd 為例
$cd platform/system $git clone --mirror /home/myhome/myandroid/system/dispd 10 個都做,這樣 server repo 就做好。

--- 現在 server repo 裡有所有 patch 後的 code,在 imx_r10.1 裡。

然後是修改 manifest..
1. 把沒有在 manifest.xml 裡的 project 加進去
2. 把 default rev 改為 imx_r10.1

先 branch 出來
$git checkout -b imx_r10.1 修改 default.xml
diff:
diff --git a/default.xml b/default.xml index fcdbc50..8670e1e 100644 --- a/default.xml +++ b/default.xml @@ -3,7 +3,7 @@ <remote name="korg" fetch="git://gps1004/myandroid10.1/" review="review.source.android.com" /> - <default revision="justsync" + <default revision="imx_r10.1" remote="korg" /> <project path="build" name="platform/build"> @@ -174,4 +174,14 @@ <project path="hardware/alsa_sound" name="platform/hardware/alsa_sound" /> <project path="external/alsa-utils" name="platform/external/alsa-utils" /> <project path="external/mtd-utils" name="platform/external/mtd-utils" /> + <project path="device/fsl" name="device/fsl" /> + <project path="external/linux-atheros-wifi" name="platform/external/linux-atheros-wifi" /> + <project path="external/linux-firmware-imx" name="platform/external/linux-firmware-imx" /> + <project path="external/linux-lib" name="platform/external/linux-lib" /> + <project path="external/wpa_supplicant_ath" name="platform/external/wpa_supplicant_ath" /> + <project path="external/systemtap" name="platform/external/systemtap" /> + <project path="hardware/mx5x" name="platform/hardware/mx5x" /> + <project path="system/dispd" name="platform/system/dispd" /> + <project path="system/wlan/atheros" name="platform/system/wlan/atheros" /> +< </manifest> commit, push/create 到 server
$git commit -am 'use imx_r10.1 as default and add newly added project' $git push origin imx_r10.1

試著從 predownload 的 working directory 來作,看看能不能減少 localize repo server 的 repo sync 時間。

不行.. 因為 repo 的 project path 和 project name 不一樣,
也就是說 有用 --mirror option 作repo sync 出來的 repo folderstructure 和實際 checkout 出來的不一樣,
所以 manifest.xml 不能用。

沒有留言:

標籤

網誌存檔