chromium下载toolchain时同步失败

在执行gclient runhooks时会下载两个文件一个是toolchain_win_x86.tar.bz2,一个是naclsdk_win_x86.tgz,存放在src\native_client\toolchain\.tars\目录下,对应的url为

http://commondatastorage.googleleapis.com/nativeclient-archive2/x86_toolchain/r8169/toolchain_win_x86.tar.bz2

http://commondatastorage.googleleapis.com/nativeclient-archive2/toolchain/8169/naclsdk_win_x86.tgz

或者通过修改src\native_client\build\download_toolchains.py来获得,在102行(可能会变)

if not download_utils.SyncURL(url, filepath, stamp_dir=stamp_dir,
                                min_time=min_time, hash=hash,
                               keep=keep, verbose=verbose):
    return False

在此处可以通过print url来查看。

,然后再次运行,便能在控制台上看到输出的信息。为了方便我直接用浏览器把那两个文件下了下来,放到src\native_client\toolchain\.tars\下面,然后注释了上面那条下载文件的语句。

接着往下面走,gclient runhooks会在src\native_client\toolchain\下创建一个临时文件夹,把下载的文件解压到这个文件夹中,然后把解压后的第二级目录移动到src\native_client\toolchain\下,总之就是把toolchain_win_x86.tar.bz2中的toolchain\win_x86移动到src\native_client\toolchain\下,把naclsdk_win_x86.tgz中的sdk\nacl-sdk移动到src\native_client\toolchain\下,并重命名为win_x86_newlib。

 过程了解清楚了,然后就能模拟程序的动作了,先把toolchain_win_x86.tar.bz2解压出来(windows下不知道为什么不能解压成功,我用linux解压的)取出toolchain\win_x86到src\native_client\toolchain\tmp(随便建的文件夹),然后用7Zip解压naclsdk_win_x86.tgz,取出sdk\nacl-sdk动到src\native_client\toolchain\tmp,并重命名为win_x86_newlib。然后开始修改程序,具体修改如下:

 为了节省时间,去掉下载文件的代码chromium\src\native_client\build\download_toolchains.py 102行

#if not download_utils.SyncURL(url, filepath, stamp_dir=stamp_dir,

  #                              min_time=min_time, hash=hash,
  #                              keep=keep, verbose=verbose):
  #  return False

去掉解压相关的代码chromium\src\native_client\build\download_toolchains.py 115行

try:

   #修改解压目录,自己指定上面两个解压后的路径
    untar_dir = 'I:\\Projects\\OpenSource\\Chrome\\svn_src\\home\\chrome-svn\\tarball\\chromium\\src\\native_client\\toolchain\\tmp'
    #print untar_dir
    tar = cygtar.CygTar(filepath, 'r:*')
    curdir = os.getcwd()
    os.chdir(untar_dir)
    try:
      #tar.Extract()//不再解压了
      tar.Close()
    finally:
      os.chdir(curdir)


    if not keep:
      os.remove(filepath)


    # TODO(bradnelson_): get rid of this when toolchain tarballs flattened.
    if 'arm' in flavor or 'pnacl' in flavor:
      src = os.path.join(untar_dir)
    elif 'newlib' in flavor:
      src = os.path.join(untar_dir, 'sdk', 'nacl-sdk')
    else:
      src = os.path.join(untar_dir, 'toolchain', flavor)
    #download_utils.MoveDirCleanly(src, dst)//去掉移动目录的代码
  finally:
    print 'finally'//替换了下面的语句
    #download_utils.RemoveDir(untar_dir)//去掉清除文件的代码,也可以不去

然后再执行gclient runhooks就应该能生成project了。然后就开始编译了,暂时还没开始编译,先不写了。

你可能感兴趣的:(chromium下载toolchain时同步失败)