美文网首页
Ubuntu下Chromium代码下载和环境配置

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

作者: 风轻云淡宇 | 来源:发表于2018-01-10 09:49 被阅读0次
    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

    相关文章

      网友评论

          本文标题:Ubuntu下Chromium代码下载和环境配置

          本文链接:https://www.haomeiwen.com/subject/swefnxtx.html