美文网首页
session_manager编译

session_manager编译

作者: 发条蛙 | 来源:发表于2017-10-26 16:34 被阅读0次

    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编译

          本文链接:https://www.haomeiwen.com/subject/stfcpxtx.html