Ubuntu下Chromium代码下载和环境配置

1.下载配置depot_tools

通过以下链接

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

下载depot_tools压缩包,解压,并将其目录添加到环境变量中,比如我的将depot_tools解压在 ~/chromium_linux文件下,在 ~/.bashrc文件最后添加了:

export:PATH=$PATH:~/chromium_linux/depot_tools

配置好后记得重启终端,或者执行下面命令加载~/.bashrc中环境变量:

$source ~/.bashrc

2.代理配置

export http_proxy=ip:port
export https_proxy=ip:port

比如我的是:

export http_proxy=192.168.0.149:10808
export https_proxy=192.168.0.149:10808

也可添加到配置文件中,但记得设置代理的ip和端口号,不然会出现类似如下错误:

fatal: unable to access 'https://chromium.googlesource.com/chromium/src.git/': Failed to connect to chromium.googlesource.com port 443: Connection timed out

3.代码下载

我的代码准备放在~/chromium_linux目录下,所以现在终端进入chromium_linux目录

$cd ~/chromium_linux

然后运行命令:

$fetch --nohook chromium

显示如下效果:

B85M-D3H:~/chromium_linux$ fetch --nohooks chromium
Running: gclient root
Running: gclient config --spec 'solutions = [
  {
    "url": "https://chromium.googlesource.com/chromium/src.git",
    "managed": False,
    "name": "src",
    "deps_file": ".DEPS.git",
    "custom_deps": {},
  },
]
'
Running: gclient sync --nohooks

这里会创建一个.gclient文件,并自动开始下载代码,如果中断,可运行命令:

$gclient sync --force

  • 注意:此处一定要添加--force,这样可以避免很多关于gclient runhooks中的错误。

继续下载,下载过程时间较长,我的下了3个多小时。

4.切换到特定分支

可参考以下链接:
http://blog.csdn.net/bbmjja0000/article/details/45870891

git fetch --tags

# 根据63.0.3239.132版本建立一个你自己的分支
git checkout -b your_release_branch     63.0.3239.132

// 同步所有相关工程代码
gclient sync --with_branch_heads --jobs 16

如果出现如下错误:

$ gn gen out/Default
ERROR at //third_party/angle/BUILD.gn:674:13: Script returned non-zero exit code.
util_gypi = exec_script("//build/gypi_to_gn.py",
            ^----------
Current dir: /home/android/chromium_linux/src/out/Default/
Command: python -- /home/android/chromium_linux/src/build/gypi_to_gn.py /home/android/chromium_linux/src/third_party/angle/util/util.gyp
Returned 1 and printed out:

Attempting to recursively print a dictionary.

See //BUILD.gn:666:7: which caused the file to be included.
      "//third_party/angle:libANGLE",
      ^-----------------------------

记得要执行:

gclient sync --with_branch_heads --jobs 16

不然gclient runhook也会报错。

5.Install additional build dependencies

进入src目录,执行

$ build/install-build-deps.sh

6.然后执行gclient runhook从Google上下载一些东西

过程有遇到:

Running hooks:   7% ( 4/53) nacltools
________ running 'vpython src/build/download_nacl_toolchains.py --mode nacl_core_sdk sync --extract' in '/home/test/chromium_linux'
INFO: --Syncing nacl_arm_glibc to revision 053185d68ed3b96640f15c4ae457b1ff373c6cac--
INFO: Downloading package archive: binutils_arm_x86_64_linux.tgz (1/6)
package_version: Could not download URL (https://storage.googleapis.com/nativeclient-once/object/binutils_arm_x86_64_linux_475b45f35de7eb128a94a1ff45c84700ce39498b.tgz): <urlopen error unknown url type: https>
Error: Command 'vpython src/build/download_nacl_toolchains.py --mode nacl_core_sdk sync --extract' returned non-zero exit status 1 in /home/test/chromium_linux

这个应该是depot_tools中vpython工具不支持代理,现解决方案时将上述代码无法执行的命令用系统默认的python执行:

python src/build/download_nacl_toolchains.py --mode nacl_core_sdk sync --extract

即可正常下载。

如果遇到以下错误

Running hooks:  15% ( 8/53) binutils     
________ running '/home/huangyuzhu/bin/python src/third_party/binutils/download.py' in '/home/huangyuzhu/chromium_linux'
Failed to fetch file gs://chromium-binutils/5230f6066998df2f4d61d5fa586152ab20cca300 for /home/huangyuzhu/chromium_linux/src/third_party/binutils/Linux_x64/binutils.tar.bz2. [Err: Traceback (most recent call last):
  File "/home/huangyuzhu/chromium_linux/depot_tools/gsutil.py", line 182, in <module>
    sys.exit(main())

可参考
http://blog.csdn.net/m0_37826678/article/details/73862929

如遇到下面错误:

Running hooks:   7% ( 5/64) sysroot  
________ running '/home/test/bin/python src/build/linux/sysroot_scripts/install-sysroot.py --running-as-hook' in '/home/huangyuzhu/chromium_linux'
Installing Debian Jessie amd64 root image: /home/test/chromium_linux/src/build/linux/debian_jessie_amd64-sysroot
Downloading [https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/823bd3badb80d935f8029a06218d88dcf380ca82/debian_jessie_amd64_sysroot.tar.xz](https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/823bd3badb80d935f8029a06218d88dcf380ca82/debian_jessie_amd64_sysroot.tar.xz)
Failed to download [https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/823bd3badb80d935f8029a06218d88dcf380ca82/debian_jessie_amd64_sysroot.tar.xz](https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/823bd3badb80d935f8029a06218d88dcf380ca82/debian_jessie_amd64_sysroot.tar.xz)
Error: Command '/home/test/bin/python src/build/linux/sysroot_scripts/install-sysroot.py --running-as-hook' returned non-zero exit status 1 in /home/huangyuzhu/chromium_linux

请在install-sysroot.py文件InstallSysroot函数中的"“中手动添加如下代码:

sys.stderr.flush()
# added test {
subprocess.check_call(['curl', '-x', '192.168.0.149:10808', '--fail', '--retry', '3', '-L', url, '-o', tarball])
#}
for _ in range(3):

如果遇到以下错误:

Running hooks:  37% (24/64) msan_chained_origins
________ running '/usr/bin/python src/third_party/depot_tools/download_from_google_storage.py --no_resume --no_auth --bucket chromium-instrumented-libraries -s src/third_party/instrumented_libraries/binaries/msan-chained-origins-trusty.tgz.sha1' in '/home/android/chromium_linux'
NOTICE: You have PROXY values set in your environment, but gsutil in depot_tools does not (yet) obey them.
Also, --no_auth prevents the normal BOTO_CONFIG environment variable from being used.
To use a proxy in this situation, please supply those settings in a .boto file pointed to by the NO_AUTH_BOTO_CONFIG environment var.

可以新建一个.boto文件,内容为:

proxy=http://http.you_proxy.com
proxy_port=you_proxy_port

正常除代理的环境变量没设好导致的连接失败问题外,不应该出现上述错误的,出现了基本都是gclient sync 后面未加参数导致,如果出错就得修改depots_tool中的py脚本,那真够喝几壶的了。

7、接着切换到代码目录src中,执行命令:

$ gn gen out/Default

生成.ninja文件。

也可用

$gn args out/Default

配置参数。

8、编译

$ninja -C out/Default chrome

9、运行

直接在终端执行:

$out/Default/chrome

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容