最近准备在工作之余研究下v8,下班时间鼓捣了2天,现在终于能下载,能gclient sync了。
刚开始的目的就是跑一个hello world,按照wiki上的例子来: https://github.com/v8/v8/wiki/Getting%20Started%20with%20Embedding
开始之前,先得拉取代码并安装其他依赖工具,按: https://github.com/v8/v8/wiki/Using%20Git 来,主要是这几个步骤:
1. 获取depot_tools
2. 执行命令:
gclient
fetch v8
cd v8
切换分支
gclient sync
其中可能出现问题,当初也知道,在天朝做技术,肯定要开代理的,于是开了系统的socks代理,发现git不会自动采用系统的代理,所以还得设置:
git config --global http.proxy 'socks5://127.0.0.1:7070'
git config --global https.proxy 'socks5://127.0.0.1:7070'
然后就算是开了代理,最后执行的gclient sync命令也不会成功,block一段时间后可能报这种错误吧(摘抄自网络):
________ running 'download_from_google_storage --no_resume --platform=linux* --no_auth --bucket chromium-gn -s src/buildtools/linux32/gn.sha1' in '/home/halton/work/projects/chromium/android' File gs://chromium-gn/1088992877b3a13f25b61c8fc18e25296d8cab33 for src/buildtools/linux32/gn does not exist. 0> File gs://chromium-gn/1088992877b3a13f25b61c8fc18e25296d8cab33 for src/buildtools/linux32/gn does not exist, skipping. Error: Command download_from_google_storage --no_resume --platform=linux* --no_auth --bucket chromium-gn -s src/buildtools/linux32/gn.sha1 returned non-zero exit status 1 in /home/halton/work/projects/chromium/android
找了一些时间,终于知道原来gclient内部跑download_from_google_storage时,是用不了socks的,只能用http代理,于是需要下载brew install polipo,用它将socks转换为一个http代理,另外gclient内部好像用的boto吧,需要配置boto来采用此HTTP代理,于是需要:
1. 在$HOME/.boto文件中写入:
proxy = 127.0.0.1
proxy_port = 8132
2. export NO_AUTH_BOTO_CONFIG=$HOME/.boto
3. 再次执行gclient sync
由于gclient sync执行时,他不会立即报错,会一直block直到无法解决的问题,才最终结束,所以会浪费很多时间(两晚上我都通宵等他执行),所以后面如果运行此命令,如果等待时间比较长,而还没有动静,就应该立即CTRL+C让他结束,再看是否有打印报错。
以上全靠回忆步骤,在此记录一下。