brillo の manifest で 気づくこと
前回 、 repo sync の仕方と、通常のAndroid (Marshmallow base)の視点で追加されているgitの一覧を出しました.
bdk それは、Brillo Development Kit?
今回は、brillo特有の部分に目を向けていきたいと思います.
manifest.xml
<!-- Brillo-specific build tooling -->
<project path="device/generic/brillo" name="device/generic/brillo" groups="pdk,bdk" />
<project path="tools/bdk" name="platform/tools/bdk" groups="bdk" />
<project path="external/gentoo/integration" name="platform/external/gentoo/integration" groups="bdk" />
<project path="external/gentoo/overlays/gentoo" name="platform/external/gentoo/overlays/gentoo" groups="bdk" clone-depth="1" />
<project path="external/gentoo/portage" name="platform/external/gentoo/portage" groups="bdk" />
<!-- Brillo product examples -->
<project path="product/google/common" name="product/google/common" groups="bdk" />
<project path="product/google/example-ledflasher" name="product/google/example-ledflasher" groups="bdk" />
まず、注目すべきは、groupsに "bdk"のキーワードがあることです. 隣にPDKと見えますが、以前、Google I/OでGoogleが発表したPDK (Platform Development Kit)の、Brillo版を、BDK (きっとBrillo Developement Kit...)と呼ぶのでしょう.
追加されたgitが、何のソースコードなのか?
git path | 役割 |
---|---|
device/generic/brillo | brillo 共通 の定義場所(init.brillo.rcなど). 製品固有情報はproduct/以下にある. |
kernel/common | Brilloの製品で使うkernel. (ただし、現在はAndroid common kernel) |
product/google/common | 現状はsample code置き場. 以下にbrillo_gpios, brillo_leds, sensors_example がある. |
product/google/example-ledflasher | brilloベースの製品固有のファイルの置き場 |
platform/external/libweave | Weave protocolのdevice sideの実装. See google source |
platform/system/weaved | Brillo service. デバイスの登録とリモートコマンドの送受信. |
platform/tools/bdk | BDKの生成スクリプトなど |
platform/build/blueprint | Ninjaベースの新build system. "Blueprint"と呼ぶ新makefileから、meta-buildするためのもので、Ninja manifestを生成する. Ninja manifestは、実行すべきcommandと、依存を記述するためのもの. |
platform/build/kati | Androidをincremental buildして、buildを高速化するためのGNU makeのcloneです. 現在はmakefileをNinjaのconvertしてそれを実現します. export USE_NINJA=true とすることで利用可能. |
platform/build/soong | Androidのbuilder. Blueprint filesとNinjaをparseして、依存関係をtrackし、sub processの管理する. Soong自体はBlueprintによって読まれたmodules("build.ninja")を、build ruleに変換すること. |
platform/system/attestation | security絡み (認証) |
platform/system/ca-certificates | cacert置き場 |
platform/system/connectivity/apmanager | access point manager |
platform/system/connectivity/shill | connectivity manager, switching network devices |
platform/system/firewalld | firewall daemon |
platform/system/nativepower | power management |
platform/system/tools/aidl | AIDL: Android Interface Definition Language |
platform/system/tpm_manager | Trusted Platform Module Manager |
platform/system/trunks | The Trunks TPM Library (TTL). TPMのutility library. |
platform/system/update_engine | Software updater |
platform/system/webservd | Web Server. libmicrohttpdが動くprocessとはdbusで分離しているとのこと. |
platform/external/avahi | mDNS/DNS-SD protocolで、local network上の service discoveryするためのもの. avahi |
platform/external/c-ares | DNSの非同期resolver c-ares |
platform/external/cros/system_api | lite protobufベースのIPCの定義 |
platform/external/curl | ご存知のhttp client curl |
platform/external/dbus | A IPC. |
platform/external/dbus-binding-generator | D-BUS向けのbindingの生成 |
platform/external/dhcpcd-6.8.2 | dhcp client daemon |
platform/external/fec | FEC (forward error correction)のアルゴリズムの実装と、DSP向けに有用なlow level routine. |
platform/external/gentoo/integration | 不明. gentoo linuxの一部っぽい. |
platform/external/gentoo/overlays/gentoo | 不明. gentoo linuxの一部っぽい. |
platform/external/gentoo/portage | 不明. gentoo linuxの一部っぽい. |
platform/external/gmock | jmockのC++版. C++向けのmockを使うコード向けのframework |
platform/external/google-breakpad | client-server構成のcrash-reporting system |
platform/external/iw | nl80211のtool (iwtools) |
platform/external/libbrillo | brilloのlibrary (後で分析). dbus/binder/minijail/stream/httpでIPC可能. |
platform/external/libcap | POSIX.1eのcapabilityのset/get library |
platform/external/libchrome | |
platform/external/libdaemon | daemon共通実装を実装するlibrary (Avahiで使われている) |
platform/external/libdivsufsort | 軽量なsuffix arrayを構築するlibrary code google |
platform/external/libevent | file descriptorでのイベントが発生した時に、callbackを行うための実装を提供するlibrary. libevent.org |
platform/external/libmicrohttpd | HTTP 1.1 web server library [gnu.org(https://www.gnu.org/software/libmicrohttpd/) |
platform/external/libunwind_llvm | libunwindのLLVM対応版. libunwind? |
platform/external/minijail | chromiumで使っている簡易カスタムlauncher. namespace, group control, chrootによるsandboxingなどを処理. chromium(dead) |
platform/external/modp_b64 | base64 decoder stringencoders |
platform/external/rootdev | Chromium OS version of rootdev |
platform/external/tlsdate | secure parasitic rdate replacement. |
platform/external/xmlrpcpp | py-xmlrpcのC++版 source forge |
platform/prebuilts/android-emulator | android-emulator |
platform/prebuilts/clang/host/linux-x86 | clang (C compiler for LLVM) |
platform/prebuilts/gdb/linux-x86 | gnu debugger |
platform/prebuilts/go/darwin-x86 | go language |
platform/prebuilts/go/linux-x86 | go language |
platform/prebuilts/ninja/darwin-x86 | ninja (new build system) ninja-build.org |
platform/prebuilts/ninja/linux-x86 | ninja (new build system) ninja-build.org |
platform/prebuilts/qemu-kernel | kernel for android emulator |
次回はもう少し中に入っていきたいと思います。