LoginSignup
1
1

More than 5 years have passed since last update.

brillo の manifest で 気づくこと

Last updated at Posted at 2015-11-12

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

次回はもう少し中に入っていきたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1