Google 多源码管理工具 gclient

windows Chrome源码编译之代码同步 第二步:同步Chrome代码 执行本操作之前请先执行环境的配置 http://blog.youkuaiyun.com/benbenzhou007/article/details/17962979 1、     布局本地目录 我设置的目录是 E:\google\chromium ,注意这个路径不能还有空格,可能会导致后面编译不通过 2、     我没有使用下载代码包的方式,而是直接使用gclie 阅读详情

本文根据gclient帮助整理。


google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将git和svn代码放在一起。


gclient的sync,update等命令很容易学习和使用,不再多说,重点说明下和gclient密切相关的两类文件.gclient和DEPS。


.gclient文件是gclient的控制文件,该文件放在工作目录的最上层。".gclient"文件是一个Python的脚本(google真是对python情有独钟啊),定义了一组"solutions",格式类似如下

    solutions = [
      { "name"        : "src",
        "url"         : "svn://svnserver/component/trunk/src",
        "custom_deps" : {
          # To use the trunk of a component instead of what's in DEPS:
          #"component": "https://svnserver/component/trunk/",
          # To exclude a component from your working copy:
          #"data/really_large_component": None,
        }
      },
    ]

  • name : checkout出源码的名字
  • url : 源码所在的目录,gclient希望checkout出的源码中包括一个DEPS的文件,这个文件包含了必须checkout到工作目录的源码的信息;
  • deps_file 这是一个文件名(不包括路径),指在工程目录中包含依赖列表的文件,该项为可选,默认值为"DEPS"
  • custom_deps 这是一个可选的字典对象,会覆盖工程的"DEPS"文件定义的条目。一般它用作本地目录中,那些不用checkout的代码,如

  "custom_deps": {
    "src/content/test/data/layout_tests/LayoutTests": None,
    "src/chrome/tools/test/reference_build/chrome_win": None,
    "src/chrome_frame/tools/test/reference_build/chrome_win": None,
    "src/chrome/tools/test/reference_build/chrome_linux": None,
    "src/chrome/tools/test/reference_build/chrome_mac": None,
    "src/third_party/hunspell_dictionaries": None,
  },

         或者让本地目录从不同位置checkout一个新的代码出来,或者checkout不同的分支、版本等。也可以用于增加在DEPS中不存在的新的项 目

  • target_os : 这个可选的条目可以指出特殊的平台,根据平台来checkout出不同代码,如

target_os = ['android']
如果target_os_only值为True的化,那么,仅仅checkout出对应的代码,如

   target_os = [ "ios" ]
   target_os_only = True


在每个checkout出的工程中,gclient期望发现一个DEPS文件(由deps_file来给定),它定义了工程不同部分都是如何checkout出来。

“DEPS”也是一个python脚本,最简单的,如下:

    deps = {
      "src/outside" : "http://outside-server/trunk@1234",
      "src/component" : "svn://svnserver/component/trunk/src@77829",
      "src/relative" : "/trunk/src@77829",
    }

deps的每个条目都包含一个key-value对,key是被checkout的本地目录,而value就是对应的远程URL。

如果路径是以'/'开头的,那么它是一个相对URL,相对与.gclient中URL地址。


URL通常包含一个版本号,以便锁定源码在特定版本上。当然,这是可选的。如果没有,那么它将获取指定分支上最新的版本。


DEPS还可以包含其他类型的数据,如vars, 

vars = {
  'pymox':
    'http://pymox.googlecode.com/svn',
  'sfntly':
    'http://sfntly.googlecode.com/svn',
  'eyes-free':
    'http://eyes-free.googlecode.com/svn',
  'rlz':
    'http://rlz.googlecode.com/svn',
  'smhasher':
    'http://smhasher.googlecode.com/svn',
...
}

vars定义了一组变量,在后面,可以通过Var(xxx)来访问。Var(xxx)返回一个字符串,故此,也可以进行操作,如

      'src/third_party/cros_dbus_cplusplus/source':
      Var("git.chromium.org") + '/chromiumos/third_party/dbus-cplusplus.git@5e8f6d9db5c2abfb91d91f751184f25bb5cd0900',
    'src/third_party/WebKit':
      Var("webkit_trunk")[:-6] + '/branches/chromium/1548@153044',
第二个自立,Var("webkit_trunk")[:-6]是一个python表达式,表示取得"webkit_trunk"表示的字符串的最后6个


Hooks:DEPS包含可选的内容 hooks,也有重要的作用,它表示在sync, update或者recert后,执行一个hook操作。

如果使用 --nohooks选项(hook默认执行),那么在gclient sync或者其他操作后,不会执行hook。你可以通过gclient runhooks来单独执行; 如果有 gclient sync --force,那么,无论sync是否成功,都会执行hook。

hook在DEPS中的写法,一般是:

    hooks = [
      { "pattern": "\\.(gif|jpe?g|pr0n|png)$",
        "action":  ["python", "image_indexer.py", "--all"]},
      { "pattern": ".",
        "name": "gyp",
        "action":  ["python", "src/build/gyp_chromium"]},
    ]

hooks包含一组hook,每个hook有几个重要项:

  • pattern 是一个正则表达式,用来匹配工程目录下的文件,一旦匹配成功,action项就会执行
  • action 描述一个根据特定参数运行的命令行。这个命令在每次gclient时,无论多少文件匹配,至多运行一次。这个命令和.gclient在同一目录下运行。如果第一个参数是"python",那么,当前的python解释器将被使用。如果包含字符串 "$matching_files",它将该字符串扩展为匹配出的文件列表。
  • name 可选,标记出hook所属的组,可以被用来覆盖和重新组织。

deps_os: DEPS中定义不同平台依赖关系的项目,如

deps_os = {
  "win": {
    "src/chrome/tools/test/reference_build/chrome_win":
      "/trunk/deps/reference_builds/chrome_win@197743",

    "src/third_party/cygwin":
      "/trunk/deps/third_party/cygwin@133786",

.....
  },

  "ios": {
    "src/third_party/GTM":
      (Var("googlecode_url") % "google-toolbox-for-mac") + "/trunk@" +
      Var("gtm_revision"),

    "src/third_party/nss":
      "/trunk/deps/third_party/nss@" + Var("nss_revision"),
....
   },
...
}
deps_os指定不同平台的依赖,它可以包含多种平台,和.gclient中的target_os对应。这种对应关系如下:

  DEPS_OS_CHOICES = {
    "win32": "win",
    "win": "win",
    "cygwin": "win",
    "darwin": "mac",
    "mac": "mac",
    "unix": "unix",
    "linux": "unix",
    "linux2": "unix",
    "linux3": "unix",
    "android": "android",
  }




windows下载编译chromium源码 前言 chromium 源码的下载编译,真的就是如各位前辈说的一样,参考再完整的教程,还是会遇到各种各样的问题。因为每个人的开发环境是不一样的,网络环境也不一样。 一路参考各路大神的教程开始踩坑填坑的我,今天总算一点点进展,在此做个记录,也算是一个经历了。 如果能帮助到你,那就更好了~ 系统要求 1.系统要求:win7以后的版本, 处理器要求x86或x64; 2.window下, 起码要8G的空余内存, 硬盘最好是固态的, chromium整个项目需要个10G的硬盘空间; 3.使用 Visual Stu 阅读详情

相关推荐

WebRTC 解决 gclient sync 失败

然而,有时在使用 WebRTC 进行开发时,可能会遇到 gclient sync 失败的问题。在本文中,我们将介绍如何解决这个问题,并提供相应的源代码示例。总结起来,当遇到 gclient sync 失败时,首先需要检查网络连接、依赖项、本地环境配置和存储空间等方面的问题。根据具体情况采取相应的解决方法,可以帮助您成功解决 gclient sync 失败的问题,确保顺利进行 WebRTC 开发。在执行 gclient sync 之前,确保已正确安装所有必需的依赖项,并按照官方文档的要求进行配置。

UnhcTransforms的博客 1522

【学习笔记】git 笔记、gclient笔记、VS code git 相关插件

git 笔记、gclient笔记、VS code git 相关插件

多丰富下自己呀 2252

comsol移动网格_comsol模拟移动的纳秒脉冲激光烧蚀材料,温度场分布,结果总不理想,求助大佬!!...

本人comsol新手一枚,希望大家多多指点研究课题:纳秒脉冲激光刻蚀材料表面想用comsol模拟刻蚀过程中的温度场分布,脉宽为300ns,重复频率100kHz,光斑移动速度为5000mm/s,光斑直径50um,激光功率10W,材料种类为:有机涂层,属性如下目前,采用的是一个移动的高斯面光源x脉冲函数,脉冲函数我用的是一个周期性方波:周期性拓展后,画出来的脉冲图,不知道为什么在0~1s的区间内只有1...

weixin_33288893的博客 4740

linux下使用gclient工具报错的问题处理

Your PATH contains a literal "~", which works in some shells but will break when python tries to run subprocesses. Replace the "~" with $HOME. 如果出现如上的错误,说明在 exportdepot_tools的路径时,使用了~符号来表示用户文件夹,而p...

jwybobo2007的博客 1661

HA集群 执行 hdfs haadmin -transitionToActive 失败

最近把一个单NameNode集群变更为HA集群,过程中都很顺利,nn1和nn2两个NameNode都显示standby状态,但是把nn1或者nn2切换到active状态时就会报错抛异常。 查看master上namenode启动日志,如下: Incompatible clusterID for journal Storage Directory /home/hadoop-zero/bigdat...

qq_34727158的博客 1763

用Python实现四叉树(quad tree)

import numpy as np #正方形类 class square: #lx、ly为左上角坐标(x对应行号,y对应列号),rx、ry为右下角坐标 def __init__(self,lx,ly,rx,ry): self.lx=lx self.ly=ly self.rx=rx self.ry=ry #检查该矩阵中是否满足条件 #参数:原矩阵,阈值 #返回值:布尔类型 def check(s

weixin_44164489的博客 5868

gclient-Google 多源码管理工具

本文根据gclient帮助整理。 google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将Git和svn代码放在一起。 gclient的sync,update等命令很容易学习和使用,不再多说,重点说明下和gclient密切相关的两类文件...

zhizhuodewo6的博客 2659

DSP TMS320FF28335程序从FLASH中拷贝到RAM中的两种方法及FLASH烧写方法

程序从FLASH中拷贝到RAM中执行的方法 DSP的程序下载执行方式有两种:一种是下载到RAM中在线执行,一种是下载到FLASH中执行。在RAM中执行时,具有执行速度快,可以无限次下载的特点,但是RAM的特点是掉电丢失数据。FLASH具有掉电不丢失数据的特点,但是同时存在执行速度慢和擦写次数有限的缺点。因此综合两者的特点,在DSP的开发过程中一般会结合使用两者。在前期程序调试过程,由于需要频繁的

AEECREN的博客 1万+

Google 多源码管理工具 gclient .

2013-07-10 11:12 1372人阅读 评论(0) 收藏 举报 本文根据gclient帮助整理。 google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将git和svn代码放在一起。 gclie

dong_mingyi的专栏 906

173、LLC谐振变换器的PCB设计实战(布线)

LLC谐振变换器PCB设计实战要点 LLC谐振变换器的PCB设计核心在于控制寄生参数,避免高频振铃和EMI问题。功率回路需确保电流路径最短且紧耦合,谐振电容焊盘需加宽以减少发热。驱动走线应独立于功率回路,避免干扰,并合理控制宽度和长度。变压器绕组结构影响共模噪声,建议原边在外层并加屏蔽铜箔。地平面设计需根据功率等级选择整块或分割,大功率下功率地与信号地应单点连接。谐振电流采样推荐四端开尔文电阻以减少电感干扰。散热需优化铜皮和过孔布局,功率器件优先放置顶层。布局应先确定谐振腔,再排布控制电路。经验上需实测寄生

Jack010169的博客 46

【Codecs系列】x265编码器(十二):子像素运动搜索

在基于块运动补偿的视频编码框架中,运动搜索是最为重要的环节之一,同时也是编码端最为耗时的模块。运动搜索包括整像素运动搜索和子像素运动搜索,其中整像素运动搜索已经有很多快速算法,比如经典的三步搜索法、菱形搜索、六边形搜索以及TZSearch等等;但子像素搜索的快速算法却比较少,本文主要讲解x265编码器中的子像素搜索方法以及相关的快速搜索方法。

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 748

gclient 使用

Google 多源码管理工具 gclient http://blog.youkuaiyun.com/doon/article/details/9287693 本文根据gclient帮助整理。 google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代

蓝色角落…… 6722

小秋SLAM入门实战ubuntu所有文章汇总

ubuntu 终端如何停止快速打印的输出以及恢复命令 ubuntu 终端如何快速打开当前路径下的图形化窗口界面? killall -9用途用法 ps -xu | grep这个命令的用途 linux 下 top命令显示的是内存是堆内存吗? zip分割和合并 关闭除当前 GNOME 终端窗口以外的所有其他 GNOME 终端窗口 如何在安装系统后设置短密码 【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】 【webots安装使用教程】 Linux系统下查看当前运行的进程和线程的几种方法

小秋 AI SLAM 入门实战教程 1402

gclient多源码管理工具 DEPS文件

gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将Git和svn代码放在一起。   重点说明下和gclient密切相关的两类文件.gclient和DEPS。   .gclient文件是gclient的控制文件,该文件放在工作目录的最上层。是主文件, ".gclie...

欢迎关注我 https://x.com/Awesome_AI_News 2145

Halcon学习之一维测量(3)

带定位器的测量。首先看一下“定位”是什么意思?回答:比如我们测量一个芯片,这时候我们设置一个测量矩形,来沿着测量目标进行测量。但是下一张当芯片的位置发生变化时,测量矩形的位置就不对了,就不是沿着测量目标了。这样就不对了!芯片在转,测量矩形也要跟着一起转才行。这个时候就需要“定位”来起作用了!定位之后得到这个芯片的旋转角度之后,测量矩形可以跟着这个角度转。这就是“定位”+“测量”,这是我们工业视觉常用的一个手法,在Halcon里面也是有例子展现的。

deep_love1314的博客 788

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

webrtc代码管理工具gclient入门

gclient文件是gclient的控制文件,该文件放在工作目录的最上层(webrtc环境下与src统计目录)。deps的每个条目都包含一个key-value对,key是被checkout的本地目录,而value就是对应的远程URL。Hooks:DEPS包含可选的内容 hooks,也有重要的作用,它表示在sync, update或者recert后,执行一个hook操作。deps_os指定不同平台的依赖,它可以包含多种平台,和.gclient中的target_os对应。

轻口味的专栏 1339

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Webrtc 多源码管理工具 gclient

google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将git和svn代码放在一起。 gclient的sync,update等命令很容易学习和使用,不再多说,重点说明下和gclient密切相关的两类文件.gclient和DEPS。

ayan200112的专栏 1959

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

chromium开发工具--gclient

gclient是谷歌开发的一套跨平台git仓库管理工具,用来将多个git仓库组成一个solution进行管理。总体上,其核心功能是根据一个Solution的DEPS文件所定义的规则将多个git仓库拉取到指定目录。例如,chromium就是由80多个独立仓库组成。

顺其自然~专栏 521

深入理解 depot_tools:Chromium 源码开发全流程(fetch/gclient/git cl 使用详解与踩坑经验)

对于浏览器开发工程师来说,无论是参与 Chromium / Chrome / 360 内核开发,还是想调试学习浏览器底层机制,“源码拉取 → 依赖同步 → 构建 → 提交” 是绕不开的几件大事。这些工作在普通项目中可能只需要一个git clone就结束了,但在 Chromium 这类超大规模多仓库项目中却极其复杂——主仓库超过30GB依赖仓库多达数百个每个仓库都有自己的 commit/branch提交必须走 Gerrit、Hook、TryBot 等流程。

John_ToStr的博客 1469
上一篇: GCM入门
下一篇: C++利用不完全实例化来获得函数模板参数的返回值和参数
漂流的代码
博客等级 码龄23年 188粉丝 99原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值