在Ubuntu(Docker)上构建v8

3
我试图在 Ubuntu 上构建 v8(使用 Docker,因为我在开发环境中没有 root 访问权限)。
我尝试按照此处的说明进行操作:https://github.com/v8mips/v8mips/wiki/Get-the-code 我可以获取depot_tools,但是当我运行fetch v8时,会出现以下错误:
Error: Command '/usr/bin/python v8/third_party/binutils/download.py' 
    returned non-zero exit status 1 in /home
Traceback (most recent call last):
  File "/home/depot_tools/fetch.py", line 300, in <module>
    sys.exit(main())
  File "/home/depot_tools/fetch.py", line 295, in main
    return run(options, spec, root)
  File "/home/depot_tools/fetch.py", line 289, in run
    return checkout.init()
  File "/home/depot_tools/fetch.py", line 132, in init
    self.run_gclient(*sync_cmd)
  File "/home/depot_tools/fetch.py", line 76, in run_gclient
    return self.run(cmd_prefix + cmd, **kwargs)
  File "/home/depot_tools/fetch.py", line 66, in run
    return subprocess.check_output(cmd, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 574, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '('gclient', 'sync', '--with_branch_heads')'
    returned non-zero exit status 2

有人知道问题可能是什么吗?这是我的Dockerfile

FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y python
WORKDIR /home
RUN git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
ENV PATH /home/depot_tools:"$PATH"

我使用 docker run -it v8build(docker镜像的名称)启动docker,然后运行fetch v8

编辑(添加版本信息):

  • Ubuntu: 16.04
  • git: 2.7.4
  • python: 2.7.12
1个回答

3
我已经找到了问题所在,以下是答案。希望有人能从中受益。
原来可以运行fetch -n v8以查看所有将要运行的命令。命令如下:
fetch -n v8
Running: gclient root
Running: gclient config --spec 'solutions = [
  {
    "url": "https://chromium.googlesource.com/v8/v8.git",
    "managed": False,
    "name": "v8",
    "deps_file": "DEPS",
    "custom_deps": {},
  },
]
'
Running: gclient sync --with_branch_heads
cd /home/x/v8
Running: git submodule foreach 'git config -f $toplevel/.git/config submodule.$name.ignore all'
Running: git config --add remote.origin.fetch '+refs/tags/*:refs/tags/*'
Running: git config diff.ignoreSubmodules all

根据错误输出所描述的,该错误出现在 gclient sync --with_branch_heads 命令上。

我逐个运行命令以手动复制过程,这样就可以打印出被 fetch v8 运行时隐藏的消息。结果发现错误是由于 ubuntu:latest docker 镜像中没有 lbzip2

安装该软件解决了这个问题。

更新的 Dockerfile

FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y git python lbzip2 && apt-get clean
WORKDIR /home
RUN git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
ENV PATH /home/depot_tools:"$PATH"
RUN cd /home && fetch v8

旅程继续进行...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接