Chromium开发者生命周期

据此了解Chromium开发流程

常用git命令

开始工作 (下载代码)

$git pull --rebase && gclient sync

修改代码,提交,测试

$git checkout -b -t my_new_feature origin/master  //  创建分支
$git cl upload                                    //  code review
$git cl try                                       //  触发try bot

try bot失败,因为你忘了某个文件

$git add forgotten_file.cc$git commit

根据review进行修改后,不要忘了提交,测试

$git cl upload
$git cl try

提交补丁

review过了,try bot也没问题,就可以提交代码了。使用commit queue进行提交。通常code review界面会有一个”commit”按钮。如果你发现它不可用或有问题,报告一个bug并给它一个Build-CommitQueue标签。
如果你是一个committer,当CQ有问题时,请手动提交patch。

常用链接

说明链接
文档dev.chromium.org
Code Reviewscodereivew.chromium.org
Bugsbugs.chromium.org 或 crbug.com
IRCchromium on freenode.net
源码src.chromium.org
Mailing listchromium-dev@chromium.org
Buildbotsbuild.chromium.org
Chromium基础设施https://chromium.googlesource.com/infra/infra/+/master/doc/index.md

概述

怎么样加入Chromium开发呢?通常,你可能涉及掉如下工作流中的1到多种:

  1. 弄台能编译Chromium的机器
  2. 下载代码
  3. 修改和编译代码
  4. 测试代码
  5. 上传并发起code review
  6. 提交补丁

开发机器

Chromium是一个大大工程!

  • 超过20000个编译文件
  • 100多个库
  • 巨量的可执行文件(Linux Debug版超过了1.3G)

为什么有这么多可执行对象?

  • 更容易升级
  • 更快的加载速度
  • 链接漫长 :(

即便是编译32位的版本,你仍然需要一台64位的机器。因为链接需要4GB以上的虚拟内存。

基本要求:

  • 多核
  • 大量的内存
  • 足够块的硬盘

否则,你进行一次编译可能需要数十个小时。

windows:

Mac OS X

Linux

获取代码

源码树

源码树是:

  • 用于编译Chromium的代码
  • 所有位于src目录下的文件组成
  • 还有来自许多Chromium依赖的工程的文件

因为源码树包括了许多其它工程的文件,所以完整的checkout也会下载这些工程的代码。
内核chromium代码只是其中的一部分

基本步骤

  • 安装Depot Tools
  • 执行fetch chromium下载所有代码并生成编译文件

详细说明请访问:
http://dev.chromium.org/developers/how-tos/get-the-code

安装Depot tools

depot_tools是Chromium和Chromium OS用于管理checkouts和code reviews的一个脚本包。包括gclient, gcl, git-cl, repo等

包括check out代码和并把目录加入到搜索路径中(PATH)。详细说明
一个简单的例子:

$git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$export PATH=`pwd`/depot_tools:"$PATH"

第一个命令会把Depot Tools check out到本地子目录”depot_tools”。
第二个命令把该工具加入到搜索路径中。

Depot Tools做些什么

depot tools由一系列脚本组成,它们用于:

  • 管理所有的Chromium源码数的check outs
  • 生成平台相关的编译文件
  • 上传变更进行review

常用工具:
glient - 同步源码树并生成编译文件
git-cl - 集成code reivew和tryjobs

Depot Tools怪癖

  • Depot Tools安装实际上是一次git checkout
  • gclient每次运行时会更新它自己而且可能在这个过程中出错
  • gclient sync不但更新代码还会重新生成编译文件(隐式执行了gclient runhooks)

准备好编译了吗?

编译之前,你需要准备好编译Chromium所需要的所有代码。总结而言,简单的两步就可以搞定:

  1. 安装Depot Tools
    bash
    $git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    $export PATH=`pwd`/depot_tools:"$PATH"
  2. 下载代码
    bash
    $fetch chromium

修改与编译

开发环境

各种平台和IDE都可以用,选择一个适合你的就行。
常用的配置:

  • Linux: vim/emacs
  • Mac: Xcode
  • Windows: Visual Studio

编译代码,ninja

可以在任何系统上执行(Mac, Linux, Windows)
在src目录:

$ ninja -C out/Debug chrome

编译release版

$ninja -C out/Release chrome

编译到out/Debug目录,也可以指定其它目录,例如:out/Debug/Chrome
要执行clean build,可以把out目录下面的东西删除掉。

调试

调试器需要attach到browser和renderer进程,但默认情况下,只是attach到了browser
要attach到renderer进程,可以这么做:

  • 使用–single-process标志启动
  • 手动attach

详细说明页面:Linux

遵循良好风格

通过Chromium bug tracker找给Bug来解,或通过搜索代码中的TODOs寻找一任务。
注意:并不是所有的bug都是需要fixed,在你决定花时间之前,先咨询一下资深的项目成员。
Chromium设计文档从高层视角说明了Chrome各个组件的架构。
遵循编码规范

测试

Chromium有很多很多的测试!
可以粗率的分为下面几类:

  • 单元测试(Unit tests)
  • Browser tests
  • 性能测试(Performance tests)
  • Layout tests

也会通过Valgrind执行某些测试以发现内存和线程相关问题。
通常,由开发者提交patches到try server进行编译,并在所有平台上运行所有的测试。

测试概述

大部分测试是用C++写的,基于gtest,代码都放在Chromium’s仓库。
Layout tests是用HTML/CSS/JS写的,代码放在Webkit’s仓库。
一般而言,只要编译你所修改的代码相关的测试就行。

Try Server

try server是在所有平台测试你的修改的最方便、最容易方法。强烈推荐!
try server会单独checkout 一份代码,应用你上传的变更,编译并执行所有相关的测试。
提交你的变更到try server:
Git: checkout 你想要测试的代码,然后执行git cl try(需要commit 权限)。如何成为committer
就因为不想等待try server返回结果,而提交了某些有问题的代码,是很不好的。

上传,进行review

为什么要进行code review

Chromium代码量巨大,而且复杂,为了隐藏IPC、线程、资源管理的细节,使用了很多的抽象层。
通过把变更代码上传到Chromium的Rietvel进行review。
review通过才能签入代码。

上传代码

你觉得你的代码已经OK,并进行测试后才发起review。
git cl upload

Finding reviewers

发起review

Tips

  • 【遵循编码规范】(http://dev.chromium.org/developers/coding-style
  • 修改描述要简单,易懂。
  • 修改不要太多,尽量限制在一定范围,这样review的人容易理解,也可以更好的review你的修改。不相关的修改要进行分解。
  • 在尝试进行一些大的修改之前,发邮件给review的人,进行讨论,以确定采用了好的解决方案。

指引

  • 为Chromium做正确的事,而不是快速提交代码。
  • 如果你要修改你之前不熟悉的代码,要把熟悉的人加入到review中,即便修改很简单
  • 类似的,如果你被邀请review你不熟悉的代码,那么你有业务把更熟悉这部分代码的人加入到reviewer中
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值