session_manager编译

session_manager 用于管理Chrome进程的生命周期。通常位于目录login_manager下,并通过包chromeos-login安装。

安装包信息

ChromeOS的编译环境下查询chromeos-login的包信息如下:

$ emerge -s chromeos-login
Searching...    
[ Results for search key : chromeos-login ]
[ Applications found : 1 ]

*  chromeos-base/chromeos-login
      Latest version available: 0.0.2-r2839
      Latest version installed: [ Not Installed ]
      Size of files: 0 KiB
      Homepage:      http://www.chromium.org/
      Description:   Login manager for Chromium OS.
      License:       BSD-Google

而其所依赖的包信息如下:

$ emerge -p chromeos-login

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] app-arch/snappy-1.0.4  USE="-static-libs" 
[ebuild  N     ] sys-apps/keyutils-1.5.9-r3  USE="-static -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 
[ebuild  N     ] chromeos-base/chromeos-config-tools-0.0.1-r248  USE="cros_host -asan -clang -cros-debug -profiling {-test}" 
[ebuild  N     ] chromeos-base/libchromeos-ui-0.0.1-r759  USE="cros_host -asan -clang -cros-debug -profiling {-test}" 
[ebuild  N     ] chromeos-base/libscrypt-1.1.6-r12  USE="cros_host -asan -clang -profiling -static-libs" 
[ebuild  N     ] dev-util/google-perftools-2.0-r2  USE="debug -largepages -minimal -static-libs {-test}" 
[ebuild  N     ] sys-fs/lvm2-2.02.97-r4  USE="lvm1 readline udev (-clvm) (-cman) -device-mapper-only -selinux -static -static-libs -thin" 
[ebuild  N     ] sys-fs/ecryptfs-utils-101  USE="python -doc -gpg -gtk -openssl -pam -pkcs11 -suid -tpm" 
[ebuild  N     ] dev-libs/leveldb-1.18-r1  USE="snappy tcmalloc -static-libs" 
[ebuild  N     ] app-crypt/trousers-0.3.3-r61  USE="cros_host -cros-debug -doc -profiling -systemd -tss_trace" 
[ebuild  N     ] chromeos-base/libcontainer-0.0.1-r534  USE="cros_host device-mapper -asan -clang -cros-debug -profiling {-test}" 
[ebuild  N     ] chromeos-base/chaps-0.0.1-r1945  USE="cros_host -asan -clang -cros-debug -profiling -systemd {-test} -tpm -tpm2" 
[ebuild  N     ] chromeos-base/cryptohome-0.0.1-r1731  USE="cros_host -asan -clang -cros-debug -direncryption -profiling -systemd {-test} -tpm -tpm2" 
[ebuild  N     ] chromeos-base/chromeos-login-0.0.2-r2839  USE="cros_host -asan -cheets -clang -cros-debug -profiling -systemd {-test} -unibuild" 

ebuild信息

chromeos-login对应的ebuild文件位于目录src/third_party/chromiumos-overlay/chromeos-base/chromeos-login下:

# tree .
.
├── chromeos-login-0.0.2-r2839.ebuild
├── chromeos-login-9999.ebuild
└── files
    └── chromeos-version.sh

1 directory, 3 files

由该配置文件可知最终编译出来的二进制文件位于/sbin/session_manager目录下。

再查阅其中的ebuild文件发现对应的工作目录为src/platform2,在该目录下稍作搜索可知,session_manager实现在目录src/platform2/login_manager中,对应的gyp配置文件为src/platform2/login_manager/login_manager.gyp,其中session_manager相关的内容如下:

    {
      'target_name': 'session_manager',
      'type': 'executable',
      'libraries': [
        '-lrootdev',
        '-lcontainer',
      ],
      'dependencies': ['libsession_manager'],
      'sources': ['session_manager_main.cc'],
    },

session_manager代码实现的具体细节,就可以跟随文件src/platform2/login_manager/session_manager_main.cc向下继续查看。

你可能感兴趣的:(session_manager编译)