使用代理同步Chromium程式碼的心得
轉自:http://blog.sina.com.cn/s/blog_496be0db0102voit.html(侵刪)
先參看 http://www.chromium.org/developers/how-tos/build-instructions-windows
非常坑爹,谷歌獲取chromium原始碼的方式又變了!!!
從chromium39.0.2313.2之後的原始碼不能通過之前那種 gclient config http://* 的方式獲取了,因為之後的chromium的程式碼剛好全部遷移到了git管理了!
可以看這裡瞭解一下點選開啟連結(https://chromium.googlesource.com/chromium/src/+refs
所以這篇文章又要改版了:D
一、概況
chromium現在分為四個大分支:
canary:最前沿的版本,每日釋出,bug一堆,不適合新人。
dev:每2星期釋出,比較穩定,可以體驗新功能和新特性。
beta:每週小版本更新,6周大版本更新。比dev穩定,比同期dev版小1個版本號,基本上是stable的待發版本。
stable:比同期dev小2個版本號,2到3周次版本更新一次,每6周主版本更新。這是正式的釋出版本,推薦用這個來學習,特別是新人。
具體的英文介紹可以看這裡:點選開啟連結(http://www.chromium.org/getting-involved/dev-channel
點選這個網址(http://dev.chromium.org/developers/calendar)可以瞭解最近的Chromium版本情況。
二、Master分支程式碼下載(Windows)
下面簡單說說下載過程:
1、先瀏覽器翻牆;
2、通過瀏覽器下載depot_tools.zip;
下載地址:https://src.chromium.org/svn/trunk/tools/depot_tools.zip
3、將depot_tools.zip解壓後,將depot_tools目錄路徑新增到系統的PATH環境變數開始處;
如PATH=c:\depot_tools;…….
4、建立一個目錄用於下載chromium程式碼,比如D:\chromium,在此目錄中在建立一個目錄master;
D:\chromium\master就是我們將要簽出程式碼的主目錄
5、開啟CMD,更新剛才的depot_tools,命令如下
x:>gclient
注意:gclient後面不帶任何引數!!
此時,將會依次下載安裝python和git,其中安裝git比較奇葩。第一次執行gclient命令,下載的msysgit是git-1.9.0.chromium.5_bin!!!!
所以成功後,你需要再次執行x:>gclient
這時才會下載到最新的git版本git-1.9.0.chromium.6_bin
gclient完成後,檢視下版本號,看看有無錯誤提示,命令如下:
x:>gclient –version
成功後可以執行一次gclient –version看看版本號,並注意一下有沒有錯誤提示。
6、如果之前從未使用過git,那麼需要進行一下全球的git配置
x:>git config –global user.name “yourname” #yourname改為你希望的使用者名稱
x:>git config –global user.email “[email protected]” #輸入你自己的郵箱
x:>git config –global core.autocrlf false
x:>git config –global core.filemode false
7、在CMD中,切換到剛才建立的D:\chromium\master目錄中(這個目錄你自己隨便找個空間足夠的盤建立了,名字隨意)
然後執行fetch chromium命令,此時原始碼下載就開始了。
D:\chromium\master>fetch chromium
注意:這是在下master分支下的最新原始碼,其中最開始的3G左右是在後臺下載的,我們在CMD視窗只看到不斷出現的
[0:06:10] Still working on:
[0:06:10] src
在整個原始碼下載過程中,最好不要關閉CMD視窗!!!!原始碼全部下載下來超過10G,所以是拼網速的時候了。
如果萬不得已希望暫停,請在CMD視窗按 Ctrl+C鍵中斷
如果異常中斷,請重新開啟CMD視窗,然後執行步驟7的fetch chromium命令!不過有個例外,如果原始碼已經下載完畢了(100%)的情況,但fetch chroumium提示了失敗,
則如果要繼續下載請輸入gclient sync命令!!!!
D:\chromium\master>gclient sync
以上操作參看官方文章((抱歉,下面的url含有敏感詞,以圖代替))
使用代理同步Chromium程式碼的心得(V2.0)
構建相關參看官方文章
(http://dev.chromium.org/developers/how-tos/get-the-code)
三、關於翻牆的問題
由於眾所周知的原因,在執行步驟6時,很可能無法下載git和python,此時我們需要翻牆。如果你有VPN,那麼在步驟1之前直接撥VPN,後面的內容就不用看了;否則,請繼續看:
首先,你必須找到一個HTTP/HTTPS/SOCKS5代理伺服器(找不到的話神仙也幫不了你了)
然後,我們為CMD設定HTTP/HTTPS/SOCKS5代理
為完成步驟2)的gclient命令,我們需要設定系統http/https代理,這裡需要用到netsh winhttp裡的命令(假設http代理地址是http.proxy.com:12345)
開啟一個具有管理員許可權的CMD(非常重要),在其中輸入
x:>netsh
netsh>winhttp
netsh winhttp>
netsh winhttp>
netsh winhttp>set proxy http.proxy.com:12345
設定完畢後,退出該CMD,再啟動一個普通CMD,執行gclient命令;
x:>gclient
這是就能順利下到python和git(注意:是git-1.9.0.chromium.5_bin)。
在git-1.9.0.chromium.5_bin已經能下載好後,如果再想用gclient下git-1.9.0.chromium.6_bin的話,問題就來了,下載會失敗,why?
在下載git-1.9.0.chromium.6_bin的時候,起作用的是git-1.9.0.chromium.5_bin中的git!!!!!
因此,在第二次執行gclient命令前,我們要為git設定好代理。
git支援git,http/https,ssh等協議,在這裡我們只需要設定最簡單的http/https協議就行了,設定方法如下
(假設代理伺服器地址為: http://http.proxy.com:12345, http://https.proxy.com:23456, socks5://socks.proxy.com:34567)
先設定CMD環境變數,在CMD中輸入:
x:>set http_proxy=http://http.proxy.com:12345
x:>set https_proxy=http://https.proxy.com:23456
x:>set socks5_proxy=socks5://https.proxy.com:23456
為git設定http/https代理,在CMD中輸入:
a)使用http/https代理伺服器
x:>git config –global http.proxy %http_proxy%
x:>git config –global https.proxy %https_proxy%
或者:b)使用socks5代理伺服器
x:>git config –global http.proxy %socks5_proxy%
x:>git config –global https.proxy %socks5_proxy%
設定完後,用下面命令看是否成功:
x:>git config –get http.proxy
x:>git config –get https.proxy
如果顯示代理都正確,就繼續執行步驟2)裡的第二次gclient命令
x:>gclient
等git-1.9.0.chromium.6_bin更新成功後,就可以繼續步驟6)和7)了
備註:
程式碼同步成功後,記得回覆系統設定哦
1)恢復netsh winhttp設定為直連
開啟一個具有管理員許可權的CMD,輸入下面命令
x:>netsh
netsh>winhttp
netsh winhttp>
netsh winhttp>reset proxy
輸入下面命令看清除是否成功,成功後顯示下面資訊
netsh winhttp>show proxy
Current WinHTTP proxy settings:
Direct access (no proxy server).
關於netsh部分,請到Microsoft這個頁面詳細檢視(https://technet.microsoft.com/zh-CN/library/bb430772)
2)清除git代理
開啟一個普通的CMD,輸入下面的命令
git config --global --unset http.proxy
四、download_from_google_storage錯誤處理
如果使用http代理同步chromium程式碼,在執行fetch chromium或者gclient sync的最後會提示下面的錯誤,無法生成sln檔案。
Failed download_from_google_storage –no_resume –platform=win32 –no_auth
–bucket chromium-gn -s src/buildtools/linux32/gn.sha1
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.
解決辦法,隨便找個地方生成一個文字檔案,比如 D:\boto.cfg
在該檔案中輸入下面的內容(假設代理伺服器是 http://http.proxy.com:12345):
[Boto]
proxy=http://http.proxy.com
proxy_port = 12345
然後設定環境變數
set NO_AUTH_BOTO_CONFIG=D:\boto.cfg
再執行fetch chromium或者gclient sync
附錄:
1、netsh
使用 set proxy 命令配置代理設定。您可以在鍵入此命令時加上一個問號,來檢視此命令的語法。
netsh winhttp>set proxy /?
本示例指定 HTTP 伺服器和 HTTPS 伺服器都要通過代理伺服器 proxy_server 進行訪問,但由“”引數指定的主機名不包含句點的伺服器除外。
netsh winhttp>set proxy proxy_server “”
本示例通過使用 import proxy 命令匯入 Internet Explorer 使用的代理資訊。
netsh winhttp>import proxy source=ie
本示例使用 reset proxy 命令將 WinHTTP 代理重置為 DIRECT。
netsh winhttp>reset proxy
即使您未執行代理伺服器,我們也建議您使用 Netsh.exe 檢查以前是否設定過代理。本示例通過在不帶任何引數的情形下執行該工具來顯示當前配置。
netsh winhttp>show proxy
例項:
1. netsh winhttp set proxy 127.0.0.1
2. netsh winhttp set proxy 127.0.0.1:8080
2. netsh winhttp set proxy 127.0.0.1:8080
4. netsh winhttp set proxy proxy-server=”http=myproxy:80;https=myproxy:80” bypass-list=”*.abc.com”