Search code examples
ubuntuv8

Building v8 on ubuntu (docker)


I try to build v8 on ubuntu (using docker because I don't have root access on my dev environment).

I try to follow the instruction here https://github.com/v8mips/v8mips/wiki/Get-the-code

I can get the depot_tools but when I run fetch v8, I get the following error:

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

Do anyone know what could be the issue? Here is my 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"

I then run the docker with docker run -it v8build (name of the docker image) and run fetch v8

Edit (adding version info):

  • Ubuntu: 16.04
  • git: 2.7.4
  • python: 2.7.12

Solution

  • I've figured out what was the issue and here is the answer. Hopefully, someone would be able to benefit from it.

    It turns out you can run fetch -n v8 to see all the commands that will be run. And the commands are as follow:

    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
    

    The error occurs at gclient sync --with_branch_heads as described by the error output.

    I ran the commands one by one to replicate the process manually so it can print out messages that were hidden by running fetch v8. And the error turns out to be that the ubuntu:latest docker image does not have lbzip2.

    Installing that solves the issue.

    Updated 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
    

    The journey continues...