So-net無料ブログ作成

Repoインストールミス [Android]

相変わらずたらたらと続けております当ブログですが、「~/bin/repo」の中身を見てみたところ、こんな感じになってました・・・。(長い行は末尾を省略・・)

<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, ...
  <title>Error 404 (Not Found)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{...
  </style>
  <a href=//www.google.com/><img src=//www.google.com/images/errors/logo...
  <p><b>404.</b> <ins>That’s an error.</ins>
  <p>  <ins>That’s all we know.</ins>


まあ、インストールに失敗してますね・・。検索してみたところ、リポジトリが変更になっているとか。Androidのサイトはメンテされてないんですね・・。まあ、全てのページを最新情報で維持するのは難しいか・・・。

*

と思ったら、回答の参照先は私の見てたページと同じでした。・・・自分の実行したコマンドを良く見直してみたら、私が間違えていました。と言うことで、Androidのサイトは無罪でした・・・。

気を取り直して「repo init」を実行し直したら、次の通りに。

$ repo init -u https://android.googlesource.com/platform/manifest
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.

Get https://gerrit.googlesource.com/git-repo
remote: Counting objects: 101, done
remote: Finding sources: 100% (101/101)
remote: Total 2344 (delta 1420), reused 2344 (delta 1420)
Receiving objects: 100% (2344/2344), 1.34 MiB | 669 KiB/s, done.
Resolving deltas: 100% (1452/1452), done.
From https://gerrit.googlesource.com/git-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.0.1     -> v1.0.1
 * [new tag]         v1.0.2     -> v1.0.2
 * [new tag]         v1.0.3     -> v1.0.3
 * [new tag]         v1.0.4     -> v1.0.4
 * [new tag]         v1.0.5     -> v1.0.5
 * [new tag]         v1.0.6     -> v1.0.6
 * [new tag]         v1.0.7     -> v1.0.7
 * [new tag]         v1.0.8     -> v1.0.8
 * [new tag]         v1.0.9     -> v1.0.9
 * [new tag]         v1.1       -> v1.1
 * [new tag]         v1.10.0    -> v1.10.0
 * [new tag]         v1.10.1    -> v1.10.1
 * [new tag]         v1.10.2    -> v1.10.2
 * [new tag]         v1.10.3    -> v1.10.3
 * [new tag]         v1.10.4    -> v1.10.4
 * [new tag]         v1.11.0    -> v1.11.0
 * [new tag]         v1.11.1    -> v1.11.1
 * [new tag]         v1.12.0    -> v1.12.0
 * [new tag]         v1.12.1    -> v1.12.1
 * [new tag]         v1.12.2    -> v1.12.2
 * [new tag]         v1.2       -> v1.2
 * [new tag]         v1.3       -> v1.3
 * [new tag]         v1.3.1     -> v1.3.1
 * [new tag]         v1.3.2     -> v1.3.2
 * [new tag]         v1.4       -> v1.4
 * [new tag]         v1.4.1     -> v1.4.1
 * [new tag]         v1.4.2     -> v1.4.2
 * [new tag]         v1.4.3     -> v1.4.3
 * [new tag]         v1.4.4     -> v1.4.4
 * [new tag]         v1.5       -> v1.5
 * [new tag]         v1.5.1     -> v1.5.1
 * [new tag]         v1.6       -> v1.6
 * [new tag]         v1.6.1     -> v1.6.1
 * [new tag]         v1.6.10    -> v1.6.10
 * [new tag]         v1.6.10.1  -> v1.6.10.1
 * [new tag]         v1.6.10.2  -> v1.6.10.2
 * [new tag]         v1.6.2     -> v1.6.2
 * [new tag]         v1.6.3     -> v1.6.3
 * [new tag]         v1.6.4     -> v1.6.4
 * [new tag]         v1.6.5     -> v1.6.5
 * [new tag]         v1.6.6     -> v1.6.6
 * [new tag]         v1.6.7     -> v1.6.7
 * [new tag]         v1.6.7.1   -> v1.6.7.1
 * [new tag]         v1.6.7.2   -> v1.6.7.2
 * [new tag]         v1.6.7.3   -> v1.6.7.3
 * [new tag]         v1.6.7.4   -> v1.6.7.4
 * [new tag]         v1.6.7.5   -> v1.6.7.5
 * [new tag]         v1.6.8     -> v1.6.8
 * [new tag]         v1.6.8.1   -> v1.6.8.1
 * [new tag]         v1.6.8.10  -> v1.6.8.10
 * [new tag]         v1.6.8.11  -> v1.6.8.11
 * [new tag]         v1.6.8.2   -> v1.6.8.2
 * [new tag]         v1.6.8.3   -> v1.6.8.3
 * [new tag]         v1.6.8.4   -> v1.6.8.4
 * [new tag]         v1.6.8.5   -> v1.6.8.5
 * [new tag]         v1.6.8.6   -> v1.6.8.6
 * [new tag]         v1.6.8.7   -> v1.6.8.7
 * [new tag]         v1.6.8.8   -> v1.6.8.8
 * [new tag]         v1.6.8.9   -> v1.6.8.9
 * [new tag]         v1.6.9     -> v1.6.9
 * [new tag]         v1.6.9.1   -> v1.6.9.1
 * [new tag]         v1.6.9.2   -> v1.6.9.2
 * [new tag]         v1.6.9.3   -> v1.6.9.3
 * [new tag]         v1.6.9.4   -> v1.6.9.4
 * [new tag]         v1.6.9.5   -> v1.6.9.5
 * [new tag]         v1.6.9.6   -> v1.6.9.6
 * [new tag]         v1.6.9.7   -> v1.6.9.7
 * [new tag]         v1.6.9.8   -> v1.6.9.8
 * [new tag]         v1.7       -> v1.7
 * [new tag]         v1.7.1     -> v1.7.1
 * [new tag]         v1.7.2     -> v1.7.2
 * [new tag]         v1.7.3     -> v1.7.3
 * [new tag]         v1.7.3.1   -> v1.7.3.1
 * [new tag]         v1.7.4     -> v1.7.4
 * [new tag]         v1.7.4.1   -> v1.7.4.1
 * [new tag]         v1.7.4.2   -> v1.7.4.2
 * [new tag]         v1.7.4.3   -> v1.7.4.3
 * [new tag]         v1.7.5     -> v1.7.5
 * [new tag]         v1.7.6     -> v1.7.6
 * [new tag]         v1.7.6.1   -> v1.7.6.1
 * [new tag]         v1.7.7     -> v1.7.7
 * [new tag]         v1.7.7.1   -> v1.7.7.1
 * [new tag]         v1.7.7.2   -> v1.7.7.2
 * [new tag]         v1.7.7.3   -> v1.7.7.3
 * [new tag]         v1.7.7.4   -> v1.7.7.4
 * [new tag]         v1.7.7.5   -> v1.7.7.5
 * [new tag]         v1.7.7.6   -> v1.7.7.6
 * [new tag]         v1.7.8     -> v1.7.8
 * [new tag]         v1.7.8.1   -> v1.7.8.1
 * [new tag]         v1.7.8.2   -> v1.7.8.2
 * [new tag]         v1.8.0     -> v1.8.0
 * [new tag]         v1.8.1     -> v1.8.1
 * [new tag]         v1.8.2     -> v1.8.2
 * [new tag]         v1.9.0     -> v1.9.0
 * [new tag]         v1.9.1     -> v1.9.1
 * [new tag]         v1.9.2     -> v1.9.2
 * [new tag]         v1.9.3     -> v1.9.3
 * [new tag]         v1.9.4     -> v1.9.4
 * [new tag]         v1.9.5     -> v1.9.5
 * [new tag]         v1.9.6     -> v1.9.6
Get https://android.googlesource.com/platform/manifest
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 96126  100 96126    0     0  50850      0  0:00:01  0:00:01 --:--:--  182k
From /Volumes/android/work/.repo/manifests.git/clone.bundle
 * [new branch]      tradefed   -> origin/tradefed
 * [new branch]      tradedef   -> origin/tradedef
 * [new branch]      tools_r20  -> origin/tools_r20
 * [new branch]      master-dalvik -> origin/master-dalvik
 * [new branch]      master     -> origin/master
 * [new branch]      ics-mr1    -> origin/ics-mr1
 * [new branch]      ics-mr0    -> origin/ics-mr0
 * [new branch]      gingerbread-release -> origin/gingerbread-release
 * [new branch]      gingerbread -> origin/gingerbread
 * [new branch]      froyo      -> origin/froyo
 * [new branch]      android-sdk-adt_r20 -> origin/android-sdk-adt_r20
 * [new branch]      android-sdk-adt_r16.0.1 -> origin/android-sdk-adt_r16.0.1
 * [new branch]      android-sdk-4.0.3_r1 -> origin/android-sdk-4.0.3_r1
 * [new branch]      android-sdk-4.0.3-tools_r1 -> origin/android-sdk-4.0.3-tools_r1
 * [new branch]      android-cts-verifier-4.0_r1 -> origin/android-cts-verifier-4.0_r1
 * [new branch]      android-cts-verifier-4.0.3_r1 -> origin/android-cts-verifier-4.0.3_r1
 * [new branch]      android-cts-4.0_r1 -> origin/android-cts-4.0_r1
 * [new branch]      android-cts-4.0.3_r2 -> origin/android-cts-4.0.3_r2
 * [new branch]      android-cts-4.0.3_r1 -> origin/android-cts-4.0.3_r1
 * [new branch]      android-cts-2.3_r12 -> origin/android-cts-2.3_r12
 * [new branch]      android-cts-2.3_r11 -> origin/android-cts-2.3_r11
 * [new branch]      android-cts-2.3_r10 -> origin/android-cts-2.3_r10
 * [new branch]      android-cts-2.2_r8 -> origin/android-cts-2.2_r8
 * [new branch]      android-4.0.4_r2.1 -> origin/android-4.0.4_r2.1
 * [new branch]      android-4.0.4_r2 -> origin/android-4.0.4_r2
 * [new branch]      android-4.0.4_r1.2 -> origin/android-4.0.4_r1.2
 * [new branch]      android-4.0.4_r1.1 -> origin/android-4.0.4_r1.1
 * [new branch]      android-4.0.4_r1 -> origin/android-4.0.4_r1
 * [new branch]      android-4.0.3_r1.1 -> origin/android-4.0.3_r1.1
 * [new branch]      android-4.0.3_r1 -> origin/android-4.0.3_r1
 * [new branch]      android-4.0.2_r1 -> origin/android-4.0.2_r1
 * [new branch]      android-4.0.1_r1.2 -> origin/android-4.0.1_r1.2
 * [new branch]      android-4.0.1_r1.1 -> origin/android-4.0.1_r1.1
 * [new branch]      android-4.0.1_r1 -> origin/android-4.0.1_r1
 * [new branch]      android-2.3_r1 -> origin/android-2.3_r1
 * [new branch]      android-2.3.7_r1 -> origin/android-2.3.7_r1
 * [new branch]      android-2.3.6_r1 -> origin/android-2.3.6_r1
 * [new branch]      android-2.3.6_r0.9 -> origin/android-2.3.6_r0.9
 * [new branch]      android-2.3.5_r1 -> origin/android-2.3.5_r1
 * [new branch]      android-2.3.4_r1 -> origin/android-2.3.4_r1
 * [new branch]      android-2.3.4_r0.9 -> origin/android-2.3.4_r0.9
 * [new branch]      android-2.3.3_r1.1 -> origin/android-2.3.3_r1.1
 * [new branch]      android-2.3.3_r1 -> origin/android-2.3.3_r1
 * [new branch]      android-2.3.2_r1 -> origin/android-2.3.2_r1
 * [new branch]      android-2.3.1_r1 -> origin/android-2.3.1_r1
 * [new branch]      android-2.2_r1.3 -> origin/android-2.2_r1.3
 * [new branch]      android-2.2_r1.2 -> origin/android-2.2_r1.2
 * [new branch]      android-2.2_r1.1 -> origin/android-2.2_r1.1
 * [new branch]      android-2.2_r1 -> origin/android-2.2_r1
 * [new branch]      android-2.2.3_r2.1 -> origin/android-2.2.3_r2.1
 * [new branch]      android-2.2.3_r2 -> origin/android-2.2.3_r2
 * [new branch]      android-2.2.3_r1 -> origin/android-2.2.3_r1
 * [new branch]      android-2.2.2_r1 -> origin/android-2.2.2_r1
 * [new branch]      android-2.2.1_r2 -> origin/android-2.2.1_r2
 * [new branch]      android-2.2.1_r1 -> origin/android-2.2.1_r1
 * [new branch]      android-2.1_r2.1s -> origin/android-2.1_r2.1s
 * [new branch]      android-2.1_r2.1p2 -> origin/android-2.1_r2.1p2
 * [new branch]      android-2.1_r2.1p -> origin/android-2.1_r2.1p
 * [new branch]      android-2.1_r2 -> origin/android-2.1_r2
 * [new branch]      android-2.1_r1 -> origin/android-2.1_r1
 * [new branch]      android-2.0_r1 -> origin/android-2.0_r1
 * [new branch]      android-2.0.1_r1 -> origin/android-2.0.1_r1
 * [new branch]      android-1.6_r2 -> origin/android-1.6_r2
 * [new branch]      android-1.6_r1.5 -> origin/android-1.6_r1.5
 * [new branch]      android-1.6_r1.4 -> origin/android-1.6_r1.4
 * [new branch]      android-1.6_r1.3 -> origin/android-1.6_r1.3
 * [new branch]      android-1.6_r1.2 -> origin/android-1.6_r1.2
 * [new branch]      android-1.6_r1.1 -> origin/android-1.6_r1.1
 * [new branch]      android-1.6_r1 -> origin/android-1.6_r1
 * [new tag]         android-sdk-adt_r20 -> android-sdk-adt_r20
 * [new tag]         android-sdk-adt_r16.0.1 -> android-sdk-adt_r16.0.1
 * [new tag]         android-sdk-4.0.3_r1 -> android-sdk-4.0.3_r1
 * [new tag]         android-sdk-4.0.3-tools_r1 -> android-sdk-4.0.3-tools_r1
 * [new tag]         android-cts-verifier-4.0_r1 -> android-cts-verifier-4.0_r1
 * [new tag]         android-cts-verifier-4.0.3_r1 -> android-cts-verifier-4.0.3_r1
 * [new tag]         android-cts-4.0_r1 -> android-cts-4.0_r1
 * [new tag]         android-cts-4.0.3_r2 -> android-cts-4.0.3_r2
 * [new tag]         android-cts-4.0.3_r1 -> android-cts-4.0.3_r1
 * [new tag]         android-cts-2.3_r12 -> android-cts-2.3_r12
 * [new tag]         android-cts-2.3_r11 -> android-cts-2.3_r11
 * [new tag]         android-cts-2.3_r10 -> android-cts-2.3_r10
 * [new tag]         android-cts-2.2_r8 -> android-cts-2.2_r8
 * [new tag]         android-4.0.4_r2.1 -> android-4.0.4_r2.1
 * [new tag]         android-4.0.4_r2 -> android-4.0.4_r2
 * [new tag]         android-4.0.4_r1.2 -> android-4.0.4_r1.2
 * [new tag]         android-4.0.4_r1.1 -> android-4.0.4_r1.1
 * [new tag]         android-4.0.4_r1 -> android-4.0.4_r1
 * [new tag]         android-4.0.3_r1.1 -> android-4.0.3_r1.1
 * [new tag]         android-4.0.3_r1 -> android-4.0.3_r1
 * [new tag]         android-4.0.2_r1 -> android-4.0.2_r1
 * [new tag]         android-4.0.1_r1.2 -> android-4.0.1_r1.2
 * [new tag]         android-4.0.1_r1.1 -> android-4.0.1_r1.1
 * [new tag]         android-4.0.1_r1 -> android-4.0.1_r1
 * [new tag]         android-2.3_r1_ -> android-2.3_r1_
 * [new tag]         android-2.3.7_r1 -> android-2.3.7_r1
 * [new tag]         android-2.3.6_r1 -> android-2.3.6_r1
 * [new tag]         android-2.3.6_r0.9 -> android-2.3.6_r0.9
 * [new tag]         android-2.3.5_r1_ -> android-2.3.5_r1_
 * [new tag]         android-2.3.4_r1_ -> android-2.3.4_r1_
 * [new tag]         android-2.3.4_r0.9_ -> android-2.3.4_r0.9_
 * [new tag]         android-2.3.3_r1_ -> android-2.3.3_r1_
 * [new tag]         android-2.3.3_r1.1_ -> android-2.3.3_r1.1_
 * [new tag]         android-2.3.2_r1_ -> android-2.3.2_r1_
 * [new tag]         android-2.3.1_r1_ -> android-2.3.1_r1_
 * [new tag]         android-2.2_r1_ -> android-2.2_r1_
 * [new tag]         android-2.2_r1.3_ -> android-2.2_r1.3_
 * [new tag]         android-2.2_r1.2_ -> android-2.2_r1.2_
 * [new tag]         android-2.2_r1.1_ -> android-2.2_r1.1_
 * [new tag]         android-2.2.3_r2.1 -> android-2.2.3_r2.1
 * [new tag]         android-2.2.3_r2 -> android-2.2.3_r2
 * [new tag]         android-2.2.3_r1 -> android-2.2.3_r1
 * [new tag]         android-2.2.2_r1_ -> android-2.2.2_r1_
 * [new tag]         android-2.2.1_r2_ -> android-2.2.1_r2_
 * [new tag]         android-2.2.1_r1_ -> android-2.2.1_r1_
 * [new tag]         android-2.1_r2_ -> android-2.1_r2_
 * [new tag]         android-2.1_r2.1s_ -> android-2.1_r2.1s_
 * [new tag]         android-2.1_r2.1p_ -> android-2.1_r2.1p_
 * [new tag]         android-2.1_r2.1p2_ -> android-2.1_r2.1p2_
 * [new tag]         android-2.1_r1_ -> android-2.1_r1_
 * [new tag]         android-2.0_r1_ -> android-2.0_r1_
 * [new tag]         android-2.0.1_r1_ -> android-2.0.1_r1_
 * [new tag]         android-1.6_r2_ -> android-1.6_r2_
 * [new tag]         android-1.6_r1_ -> android-1.6_r1_
 * [new tag]         android-1.6_r1.5_ -> android-1.6_r1.5_
 * [new tag]         android-1.6_r1.4_ -> android-1.6_r1.4_
 * [new tag]         android-1.6_r1.3_ -> android-1.6_r1.3_
 * [new tag]         android-1.6_r1.2_ -> android-1.6_r1.2_
 * [new tag]         android-1.6_r1.1_ -> android-1.6_r1.1_
remote: Counting objects: 19, done
remote: Finding sources: 100% (320/320)
remote: Getting sizes: 100% (70/70)
remote: Total 320 (delta 129), reused 320 (delta 129)
Receiving objects: 100% (320/320), 67.17 KiB, done.
Resolving deltas: 100% (129/129), completed with 4 local objects.
From https://android.googlesource.com/platform/manifest
 * [new branch]      android-4.1.1_r1 -> origin/android-4.1.1_r1
 * [new branch]      android-4.1.1_r1.1 -> origin/android-4.1.1_r1.1
 * [new branch]      android-4.1.1_r2 -> origin/android-4.1.1_r2
 * [new branch]      android-4.1.1_r3 -> origin/android-4.1.1_r3
 * [new branch]      android-4.1.1_r4 -> origin/android-4.1.1_r4
 * [new branch]      android-4.1.1_r5 -> origin/android-4.1.1_r5
 * [new branch]      android-4.1.1_r6 -> origin/android-4.1.1_r6
 * [new branch]      android-4.1.1_r6.1 -> origin/android-4.1.1_r6.1
 * [new branch]      android-4.1.2_r1 -> origin/android-4.1.2_r1
 * [new branch]      android-4.2.1_r1 -> origin/android-4.2.1_r1
 * [new branch]      android-4.2.1_r1.1 -> origin/android-4.2.1_r1.1
 * [new branch]      android-4.2.1_r1.2 -> origin/android-4.2.1_r1.2
 * [new branch]      android-4.2.2_r1 -> origin/android-4.2.2_r1
 * [new branch]      android-4.2_r1 -> origin/android-4.2_r1
 * [new branch]      android-cts-4.1_r1 -> origin/android-cts-4.1_r1
 * [new branch]      android-cts-4.1_r2 -> origin/android-cts-4.1_r2
 * [new branch]      android-cts-4.2_r2 -> origin/android-cts-4.2_r2
 * [new branch]      android-sdk-support_r11 -> origin/android-sdk-support_r11
   32bb163..b48922c  gingerbread -> origin/gingerbread
   ed09c39..6912769  ics-mr1    -> origin/ics-mr1
 * [new branch]      ics-plus-aosp -> origin/ics-plus-aosp
 * [new branch]      jb-dev     -> origin/jb-dev
 * [new branch]      jb-mr1-dev -> origin/jb-mr1-dev
 * [new branch]      jb-mr1-dev-plus-aosp -> origin/jb-mr1-dev-plus-aosp
 * [new branch]      jb-mr1.1-dev -> origin/jb-mr1.1-dev
 * [new branch]      jumper-stable -> origin/jumper-stable
   3954196..70c902c  master     -> origin/master
   b5a0d13..a7f38b7  master-dalvik -> origin/master-dalvik
 * [new branch]      tools_r21  -> origin/tools_r21
 * [new branch]      tools_r21.1 -> origin/tools_r21.1
   8b9be7c..fbb30a8  tradefed   -> origin/tradefed
 * [new tag]         android-4.1.1_r1 -> android-4.1.1_r1
 * [new tag]         android-4.1.1_r1.1 -> android-4.1.1_r1.1
 * [new tag]         android-4.1.1_r1_ -> android-4.1.1_r1_
 * [new tag]         android-4.1.1_r2 -> android-4.1.1_r2
 * [new tag]         android-4.1.1_r3 -> android-4.1.1_r3
 * [new tag]         android-4.1.1_r4 -> android-4.1.1_r4
 * [new tag]         android-4.1.1_r5 -> android-4.1.1_r5
 * [new tag]         android-4.1.1_r6 -> android-4.1.1_r6
 * [new tag]         android-4.1.1_r6.1 -> android-4.1.1_r6.1
 * [new tag]         android-4.1.2_r1 -> android-4.1.2_r1
 * [new tag]         android-4.2.1_r1.1 -> android-4.2.1_r1.1
 * [new tag]         android-4.2.1_r1.2 -> android-4.2.1_r1.2
 * [new tag]         android-4.2.1_r1__ -> android-4.2.1_r1__
 * [new tag]         android-4.2.2_r1_ -> android-4.2.2_r1_
 * [new tag]         android-4.2_r1___ -> android-4.2_r1___
 * [new tag]         android-cts-4.1_r1 -> android-cts-4.1_r1
 * [new tag]         android-cts-4.1_r2 -> android-cts-4.1_r2
 * [new tag]         android-cts-4.2_r2 -> android-cts-4.2_r2
 * [new tag]         android-sdk-support_r11 -> android-sdk-support_r11

Your Name  [xxxxx]: 


プロンプトが出て、入力待ちになってるんですが、何を入れればいいのやら・・?

まあ、実行結果を見て行くとまず、「gpg (GnuPG)」のインストールを強く求められています。何に使うんでしょうか?後は特に問題はなさそうです。

(ログで)記事が長くなったので、今回はここまでにしときます。

つづく。


【参考】
repoのinitエラーの回避策を教えてください - 日本Androidの会





Repo [Android]

前回の続きを読んで行くと、Android 4.0.x 以前のブランチのビルドには Leopard or Snow Leopard + MacOS 10.5 SDK が必要だとのこと・・・。Android のバージョン毎に違う環境を用意しないといけないんですねぇ・・。個人的には最終的に保有している端末向けに何かビルドできればうれしいとか思ってたんですが、ちょっと厳しいかも・・。

他にもいろいろ書かれているので、まとめて見ると、下記の様な感じです。

  • Xcodeは3.1.4以降
  • gccは4.2
  • MacPorts
  • make, git, GPGのパッケージをMacPortsから取得
    →「POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg


MacPortsを入れたら、PATHの設定が必要な様です。「/usr/bin」の前に「/opt/local/bin」を入れろとか。これは「~/.bash_profile」内に「export PATH=/opt/local/bin:$PATH」を加えればいい様です。

文章中には書かれていませんが、実行しているコマンドを見る限り、SDLも入れる必要がある様です。

後、ICS(4.0.x)以前のバージョンのビルドだと、makeのバージョンも戻す必要がある様ですが、話が発散するので、とりあえずは、最新ブランチのビルドに専念します。それでも、MacPortsくらいは入れといた方がいいんですかね・・。

*

まあ、どうせ環境が整ってないのでその辺は都度考えることにして、まずはソースのダウンロードです。その前にRepoを入れましょうとのこと。ずいぶん前に「git」は入れた気がしますが、バージョンが古いんでしょうねぇ・・。まあ、言われる通りにRepoをインストールして行きます。

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo


次にRepoの初期化です。case-sensitiveなファイルシステムで実行せよとのことなので、前回作成したファイルシステムで実行します。

$ mkdir work
$ cd work
$ repo init -u https://android.googlesource.com/platform/manifest
/Users/xxx/bin/repo: line 1: syntax error near unexpected token `newline'
/Users/xxx/bin/repo: line 1: `<!DOCTYPE html>'


・・・Repoがうまく動いてないですね。インストールに失敗したんですかね。と言うか、何か環境が足りてないのか・・?


つづく。

【参考】
Initializing a Build Environment - android open source project
Downloading the Source Tree - android open source project
MacPorts Project






Androidのソース [Android]

ご無沙汰しております。ちょっと、更新する暇が取れなくて、放置していたところ、だんだん更新するのがめんどくさくなって来て、気づいてみれば、年が明け、前回の更新からずいぶん経ってしまいましたね。一度、更新を止めると再開が面倒になって、ダメですね。今週から、なんとか更新を再開したいと思います・・。でも、ペースはゆっくりと・・。

さて、sqliteもいいのですが、年末に何気なく、Android ってソースが公開されているんよね〜、でもビルドにはLinuxが必要とか言う話だったね〜。と関連情報を検索していたところ、「 To build the Android source files, you will need to use Linux or Mac OS.」と言う記述がっ! デフォルトでMacOSも考慮されてるみたいですねっ!Macがサポートされていて、Windowsはサポートされてないってめずらし〜・・・。くもないんでしょうか??

せっかくなので、あまり意味はないですが、ソースを落としてビルドを試してみましょう。まあ、すんなり行くとは思いませんが・・・。

*

と言うことで、Android open source projectのページを見ていたら、結構ドキュメントが充実している様です。ソースコードのダウンロードサイズは約8.5GB、ビルドをするには30GB〜100GB以上のフリースペースが必要だとか。とりあえず、500GBのUSBハードディスクを空けました。

さっそく、Mac OS Xのビルド環境構築の手引きを見て行きます。まずは、これです。

・case-sensitiveなファイルシステムを使ってください

MacOS Xはデフォルトでは、大文字小文字を区別しないファイルシステムになっています。確か、インストール時とかにどっちか選べた気がしますが、各種アプリが区別しないことを前提になっているので、区別する方を選択すると何かとトラブルに巻き込まれることがあるとか聞いたことがある様な気がします。Androidでは、逆にgitが大文字小文字を区別するので、それでは問題が出るとのこと。と言うことで、case-sensitiveなディスクイメージを作りましょうとのことです。説明を参考に下記の設定としました。

  • 「ディスクユーティリティ」を立ち上げ、「新規イメージ」をクリック
  • 上部の名前は「android.dmg.sparseimage」
  • 下部の名前は「android」
  • サイズはカスタムの50GB
  • フォーマットは「Mac OS拡張(大文字/小文字を区別、ジャーナリング)」
  • 暗号化は「なし」
  • パーティションは「単一パーティション(アップルパーティションマップ)」
  • イメージフォーマットは「スパース・ディスクイメージ」


これで、ディスクイメージが出来ました。&勝手にマウントされてました。頭の方で、30GB〜100GBくらい必要かもと書かれていましたが、ここでは、ミニマム25GBで、実際に作成しているのは40GBの様だったので、50GBにしましたが、後々足りなくなるかも知れませんね・・・。

次に必要な環境として、下記があげられています。

・SnowLeopard or Lion
・Xcode 4.2

私のMacはSnowLeopardで動いていますが、Xcodeのバージョンを調べてみると、3.2.6でした・・・。ADCに行ってみると、今のバージョンは4.6とのこと。バージョンが異なってると、トラブルの元になる可能性もありますが、とりあえずこれで行こうかと思ったところ、リリースノートを見たら、LionかMountain Lionじゃないと動かない様子・・。じゃあ、少し古いのでもと探していたら、SnowLeopard用の4.xが見つかりません・・・。

*

どうやら、SnowLeopard用のXcode4.2は販売されてた様ですね・・・。販売されていた当時はADCに登録していたらダウンロードできた様ですが、今では手に入らない様子・・・。

と言うことで、とりあえず、気にせずにXcodeは3.2.6で進めて行こうと思いますが、いきなり頓挫かも・・・。

【参考】
Androidソースコード検索サービス - Developer Collaboration Project
Android open source project
XCodeをSnow leopardにインストールでエラーになる件 - WEB系エンジニアの備忘録




NEC Direct(NECダイレクト)

amalgamationの様子をみる~その6 [SQLite]

前回に続いて、「./tool/mksqlite3h.tcl」を見て行きます。処理のコメントを追って行くと次の様な手順となっている様です。

  1. コマンドラインからソースツリーのルートディレクトリを取得
  2. 「VERSION」ファイルからSQLiteのバージョン番号(3.6.18とか)を取得
    →フォーマットは「%d%03d%03d」となっています。「3.6.18」だと「3006018」になるのか?
  3. 「manifest.uuid」からSCMのバージョン番号を取得
  4. 「manifest」の「D」カードからSCMへのチェックイン日を取得
  5. API宣言解釈のためのパターンを作成(内部処理用?)
  6. 標準出力の行末を「LF」に設定(Windowsでも同様)
  7. 「src/sqlite.h.in」と「ext/rtree/sqlite3rtree.h」を処理
  8. 「sqlite3rtree.h」を「sqlite3.h」にコピーする際に「#include <sqlite3.h>」の行を省く


上記に加えて、数行の記述を加えている様ですね。この辺は、最終的な形をどうするかで決まってくる気もします。


次回は、また、「./tool/mksqlite3c.tcl」に戻ります





ショップチャンネル:キャンペーン


amalgamationの様子をみる~その5 [SQLite]

前回の続きを見て行きます。ま、細かい内容はともかく流れを見て行きたいと思います。

まずは「sqlite3.h」を読み込むところから始まる様子。

・・・「sqlite3.h」は「./tool/mksqlite3h.tcl」で自動生成されてますね。こちら、スルーしてましたねぇ・・・。

スクリプトをちょっと見てみたところ、短いのでこの内容から見て行きますか。次のソースから「sqlite3.h」を生成するとのこと。

  1. 「src/sqlite.h」 ←テンプレートになるとのこと
  2. 「VERSION」 ←SQLiteのバージョンナンバーが入っているとのこと
  3. 昔のSCMの「manifest」ファイル ←日付を利用(?)
  4. 昔のSCMの「manifest.uuid」ファイル ←「SHA1」ハッシュを得るとのこと


2) の「VERSION」を見たところ、内容は「3.7.12」の一行のみ。末尾に改行(LF?)が入っています。

3) 4) は意味がわからないんですが、4) の方は見てみたら、ハッシュコードっぽいのが入ってました。

これをソースツリーのルートディレクトリで実行せよとのこと。ちなみに、これはtclのスクリプトです。このスクリプトは「src/sqlite.h.in」に基づいて実行されるらしいですが、このファイルとスクリプトの関係はいまのところよくわかりません・・・。その処理は下記を含む様です。

  1. グローバル変数の定義の前に「SQLITE_EXTERN」を付加する
  2. API関数の定義の前に「SQLITE_API」を付加する
  3. 「--VERS--」と言う文字列を現在のライブラリのバージョン(例えば「3.6.17」と言う書式の文字列)に置き換える
  4. 「--VERSION-NUMBER--」と言う文字列を現在のライブラリのバージョン(例えば「3006017」と言う書式の文字列)
  5. 「--SOURCE-ID--」と言う文字列を日付、時刻とハッシュ文字列(SHA1)に置き換える


このスクリプトの出力は標準出力に出力されるとのこと。

次回、一応処理を見て行きましょう。





amalgamationの様子をみる~その4 [SQLite]

前回で、「target_source」のルールについてざ~っとみたので、次は、やっと大元の「sqlite3.c」のルールまで戻ります。

sqlite3.c: target_source $(TOP)/tool/mksqlite3c.tcl
        tclsh $(TOP)/tool/mksqlite3c.tcl
        echo '#ifndef USE_SYSTEM_SQLITE' >tclsqlite3.c
        cat sqlite3.c >>tclsqlite3.c
        echo '#endif /* USE_SYSTEM_SQLITE */' >>tclsqlite3.c
        cat $(TOP)/src/tclsqlite.c >>tclsqlite3.c


まずは「./tool/mksqlite3c.tcl」を見て行きます。冒頭のコメントから・・・。

*

「target_source」の生成等、これまで実行されていた内容が書かれていますが、「parse.c」「parse.h」が「parse.y」からlemonと言う構文解析器生成プログラムで作成して「./tsrc」に追加されると書かれています。そんな箇所あったっけ?と思ったところ、その1の記事に該当の箇所がありました。

「keywordhash.h」は「mkkeywordhash」と言うコマンドで作成されるとのこと。「./tool」ディレクトリを見たところ、「mkkeywordhash.c」と言うCソースで提供されています。こちらもその1の記事で「keywordhash.h」の生成ルールの中でコンパイルされて、即利用されていますね。

まあ、そんな感じで「tsrc」ディレクトリが作成されて、ソースがそろったらこのスクリプトを実行せよとのこと。そしたら、「sqlite3.c」を作成するよと言うことです・・。


つづく。

【参考】
Lemon構文解析器生成プログラム



ioPLAZA【アイ・オー・データ直販サイト】



amalgamationの様子をみる~その3 [SQLite]

「./tool/vdbe-compress.tcl」を見て行きます。冒頭にコメントが書かれているので、とりあえずそれを読んでみましょう・・。

ソースファイル「vdbe.c」をいじって「sqlite3VdbeExec()」実行時のスタックサイズを減らすとのこと。「vdbe.c」って、どっかから持ってきたソースなんでしょうかねぇ・・。

ところで、前回、このスクリプトが「target_source」を作成してるとか想像してましたが、「target_source」のルールの末尾に書かれている「touch target_source」が該当のファイルを作っているようですね。「touch」コマンドはファイルが無い場合に空のファイルを作成するそうです。タイムスタンプを変えるだけかと思ってました・・。

*

それはさておき、このスクリプトは特に実行しなくてもいいとのこと。実行してもしなくてもソースの動作結果は変わらない様です。単純にスタックを減らすためとのこと。組み込み向けですかね・・?

スタックの削減方法ですが、ローカル変数を個々の「opcode」の実装から抜き出して、一つの共用体(union)に詰め込んでいるとのこと。まあ、具体的には変更前と変更後のソースを見比べないと何ともわかんないですね。


ま、こういう処理もしていると言うことで、これについてはここまでにしておきます。







amalgamationの様子をみる~その2 [SQLite]

次は、前々回の記事で出てきた、「main.mk」内の「target_src」のルールに戻ります。ルールを再度掲載すると、こんな感じ。

target_source:	$(SRC) $(TOP)/tool/vdbe-compress.tcl
	rm -rf tsrc
	mkdir tsrc
	cp -f $(SRC) tsrc
	rm tsrc/sqlite.h.in tsrc/parse.y
	tclsh $(TOP)/tool/vdbe-compress.tcl vdbe.new
	mv vdbe.new tsrc/vdbe.c
	touch target_source


いきなり、「tsrc」と言うディレクトリを消して、再度作成しています。処理後には消さない様ですね・・。って、これはどこのディレクトリを起点に実行してるんでしたっけ??

「README」を読み返したところ、特に何も書いていない様で、「publish.sh」を見てみると、何となく任意のディレクトリで実行できそうな感じです。が、ソースのトップレベルのディレクトリが安全そうな気がしますね・・。まあ、今はどっちでもいいですか・・。

次に、対象のソースを全て、「tsrc」にコピーしていますね。その後、「SRC」内に含まれているソース以外のファイル「sqlite.h.in」「parse.y」を削除しています。

で、「./tool/vdbe-compress.tcl」に「tsrc/vdbe.c」を与えて実行しているようですね。後の行から、このスクリプトが「target_source」を作成しているのだろうと想像できます。

tclのソースの様ですが、分かりますかねぇ・・・。つづく。



トレンドマイクロダイレクトストア

amalgamationの様子をみる~その1 [SQLite]

前回の最後に上げた6つのソースの生成ルールは次の様に定義されています。

opcodes.c:	opcodes.h $(TOP)/mkopcodec.awk
	$(NAWK) -f $(TOP)/mkopcodec.awk opcodes.h >opcodes.c

opcodes.h:	parse.h $(TOP)/src/vdbe.c $(TOP)/mkopcodeh.awk
	cat parse.h $(TOP)/src/vdbe.c | \
		$(NAWK) -f $(TOP)/mkopcodeh.awk >opcodes.h

parse.h:	parse.c

parse.c:	$(TOP)/src/parse.y lemon $(TOP)/addopcodes.awk
	cp $(TOP)/src/parse.y .
	rm -f parse.h
	./lemon $(OPTS) parse.y
	mv parse.h parse.h.temp
	$(NAWK) -f $(TOP)/addopcodes.awk parse.h.temp >parse.h

sqlite3.h:	$(TOP)/src/sqlite.h.in $(TOP)/manifest.uuid $(TOP)/VERSION
	tclsh $(TOP)/tool/mksqlite3h.tcl $(TOP) >sqlite3.h

keywordhash.h:	$(TOP)/tool/mkkeywordhash.c
	$(BCC) -o mkkeywordhash $(OPTS) $(TOP)/tool/mkkeywordhash.c
	./mkkeywordhash >keywordhash.h


それぞれのソースの生成スクリプトはawkやtclで書かれている様ですね。スクリプトの中身をちらっと見てみたところ、たんに元ソースを加工するだけでなく、何らかのコードか定義を追加して行っているようです。この辺、なんでソースに含まれていないのかは分かりませんが、結合時に必要になったものを別途付けてる感じなんですかねぇ・・。

tclって、文法とかを知らないんですよねぇ・・。

最後の「keywordhash.h」は完全にプログラムで生成しているようです。なぜ、プログラムで生成する必要があるのかは、実際に出力を見ないと分かりそうにないですね。

これらのファイルについては、この辺にしておきます。


つづく。





the amalgamation generator script [SQLite]

Amalgamationってどうやってんの~? と、脱線気味に探していたところ、「the amalgamation generator script」と言うものが存在してそうな記述を見つけました。・・・それはどこにあるんかなぁ?

*

ズバリそのものが見つかりそうにないので、「README」に書かれていた「publish.sh」と言うのを見て行きます。すると「make sqlite3.c」と言う記述が!

ソースツリー内には「sqlite3.c」が無いため、それを作成する(Amalgamationする?)動作だと思われます。と言うことなので、「Makfile」を見て行こうと思いますが、これは、「publish.sh」の頭の方で「Makefile.linux-gcc」をコピーすることで作成している様なので、「Makefile.linux-gcc」を見て行きます。

「Makefile.linux-gcc」の中は定義っぽいのばかりで、最後に「main.mk」と言うのをインクルードしていますので、そっちを見ることに。「sqlite3.c」を作成する箇所は下記の様な記述になっていました。

sqlite3.c:	target_source $(TOP)/tool/mksqlite3c.tcl
	tclsh $(TOP)/tool/mksqlite3c.tcl
	echo '#ifndef USE_SYSTEM_SQLITE' >tclsqlite3.c
	cat sqlite3.c >>tclsqlite3.c
	echo '#endif /* USE_SYSTEM_SQLITE */' >>tclsqlite3.c
	cat $(TOP)/src/tclsqlite.c >>tclsqlite3.c


「target_source」と「mksqlite3c.tcl」を参照してますね・・。

「target_source」の作成はこんな記述になってました。「mksqlite3c.tcl」は「./tool」配下にある様です。

target_source:	$(SRC) $(TOP)/tool/vdbe-compress.tcl
	rm -rf tsrc
	mkdir tsrc
	cp -f $(SRC) tsrc
	rm tsrc/sqlite.h.in tsrc/parse.y
	tclsh $(TOP)/tool/vdbe-compress.tcl vdbe.new
	mv vdbe.new tsrc/vdbe.c
	touch target_source


こちらは「SRC」と「vdbe-compress.tcl」を参照しています。

「SRC」は「./src」「./ext」に含まれている全ソース(たぶん)と自動生成される(と言うかさせる)下記のファイルの全てを含む様です。

  • keywordhash.h
  • opcodes.c
  • opcodes.h
  • parse.c
  • parse.h
  • sqlite3.h


これらのルールもまた、この「main.mk」に書かれているようですね・・・。


長くなったので、つづく。








ブログを作る(無料) powered by So-netブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。