cygwinでAndroidのソースを取得する
ここのところ、ずっとgit.kernel.orgからAndroidのソースがダウンロードできなかったのですが、やっとダウンロードできるようになりました。Googleはgit.kernel.orgをあきらめて、android.googlesource.comという自前サーバを立てたようです。
詳細は、Android Open Source ProjectのDownloading the Source Treeを参照してください。防備録としてcygwinでandroid.googlesource.comからソースを取得する方法を書いておきます。
cygwinのインストールはこちらに以前書いています。
repoの新規取得
新しい環境に対応したrepoをcygwinで取得します。古いrepoをとりあえずバックアップしておきます。
$ cd bin $ mv repo repo.bak
curlでrepoを取り込みます。
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > repo % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (60) SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed More details here: http://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.
ああー、curl.haxx.se/docs/sslcerts.htmlから認証取れだって。
上に書いているように、-kオプションを使うことにします。
$ curl -k https://dl-ssl.google.com/dl/googlesource/git-repo/repo > repo % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 19731 100 19731 0 0 11268 0 0:00:01 0:00:01 --:--:-- 11800
取れました。
実行できるようにします。
$ chmod a+x repo
manifestの取得
workingディレクトリを作って、そこにmanifestを取得とようと思います。
$ mkdir working $ cd working $ repo init -u https://android.googlesource.com/platform/manifest Get https://android.googlesource.com/tools/repo error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify faile d while accessing https://android.googlesource.com/tools/repo/info/refs fatal: HTTP request failed
ああーん、また出た。gitが認証通らないようです。ということで、認証を無視させましょう。
$ git config --global http.sslVerify false
再度、repoをします。
$ repo init -u https://android.googlesource.com/platform/manifest Get https://android.googlesource.com/tools/repo remote: Counting objects: 1405, done remote: Finding sources: 100% (77/77) remote: Total 1405 (delta 911), reused 1405 (delta 911) Receiving objects: 100% (1405/1405), 428.10 KiB, done. Resolving deltas: 100% (911/911), done. From https://android.googlesource.com/tools/repo * [new branch] maint -> origin/maint * [new branch] master -> origin/master * [new branch] stable -> origin/stable * [new tag] v1.0 -> v1.0 ...省略 * [new tag] v1.7.7.5 -> v1.7.7.5 Get https://android.googlesource.com/platform/manifest remote: Counting objects: 170, done remote: Finding sources: 100% (31/31) remote: Total 170 (delta 18), reused 170 (delta 18) Receiving objects: 100% (170/170), 95.80 KiB, done. Resolving deltas: 100% (18/18), done. From https://android.googlesource.com/platform/manifest * [new branch] android-1.6_r1 -> origin/android-1.6_r1 * [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1 * [new branch] android-1.6_r1.2 -> origin/android-1.6_r1.2 ...省略 is this correct [y/n]? y repo initialized in /home/minao/working
manifestが取得できたようです。
認証用のルート証明書を取得する
git以外にもルート証明が無いといろいろと問題が出てきそうなので、認証用のルート証明書を取得することにします。
とりあえず、gitの認証無効化を元に戻します。
$ git config --global http.sslVerify true
ネットを検索してみると、cygwinでルート証明を取得するには「以下を実行しろ」と書かれていました。
$ cd /usr/ssl/certs $ curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}' $ c_rehash
早速実行してみます。
$ cd /usr/ssl/certs $ curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after= 0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 233k 100 233k 0 0 59029 0 0:00:04 0:00:04 --:--:-- 98920
cert番号.pemファイルがたくさんできました。
$ ls
README.RootCerts cert120.pem cert144.pem cert31.pem cert55.pem cert79.pem
cert.pem cert121.pem cert145.pem cert32.pem cert56.pem cert8.pem
cert1.pem cert122.pem cert146.pem cert33.pem cert57.pem cert80.pem
cert10.pem cert123.pem cert147.pem cert34.pem cert58.pem cert81.pem
cert100.pem cert124.pem cert148.pem cert35.pem cert59.pem cert82.pem
...省略
cert119.pem cert142.pem cert3.pem cert53.pem cert77.pem expired
cert12.pem cert143.pem cert30.pem cert54.pem cert78.pem
続けてc_rehashします。
$ c_rehash Doing /usr/ssl/certs cert.pem => 4d654d1d.0 cert1.pem => ddc328ff.0 cert10.pem => ed62f4e3.0 cert100.pem => fde84897.0 ...省略 cert97.pem => 3a3b02ce.0 cert98.pem => f559733c.0 cert99.pem => f61bff45.0
これでルート証明書が取得できたようです。
repo syncしてみましょう
workingディレクトリに戻って、このままrepo syncでgitが認証通ると思います。
$ cd ~/working $ ~/bin/repo sync remote: Counting objects: 120, done remote: Counting objects: 160, done remote: Finding sources: 100% (32/32) remote: Finding sources: 100% (32/32) remote: Total 120 (delta 32), reused 120 (delta 32) Receiving objects: 100% (120/Receiving objects120: ) , 43.20 KiB, done.14 32/32)Receiving objects, done.: (g objects/: 32 )36 % (/ 32) remote: Total 160 (delta 59), reused 160 (delta 59) Receiving objects: 100% (160/160), 90.73 KiB, done. Resolving deltas: 100% (59/59), done. From https://android.googlesource.com//platform/bootable/diskinstaller * [new branch] donut-release -> aosp/donut-release * [new branch] donut-release2 -> aosp/donut-release2 * [new branch] eclair-passion-release -> aosp/eclair-passion-release * [new branch] eclair-release -> aosp/eclair-release * [new branch] eclair-sholes-release -> aosp/eclair-sholes-release From https://android.googlesource.com//platform/bootable/bootloader/legacy * [new branch] donut-release -> aosp/donut-release * [new branch] eclair-sholes-release2 -> aosp/eclair-sholes-release2 ...省略
repo syncが走り始めましたので、問題ないと思います。
あと、取得したソースはシンボリックリンクを切らないように、tarで丸めて持って行きます。
tar cvf android-source.tar ./*