Yes, the official V8 build instructions don't work on FreeBSD. That's
because nobody cared enough to make it work. Do you?

You can look at whatever Node is doing to build V8 on FreeBSD -- I believe
they have a solution. Feel free to submit a patch to the documentation (via
GitHub PR to v8.dev <https://github.com/v8/v8.dev>) once you've figured it
out.

As for CMake/autoconf/whatever: choosing build systems is harder than most
people realize, and there are many constraints. For the time being, the
best fit for V8's needs is GN.


On Mon, Nov 26, 2018 at 3:19 PM Ethin Probst <harlydavid...@gmail.com>
wrote:

> I followed the steps on building V8 at https://v8.dev/docs/build and
> https://v8.dev/docs/source-code, but I'm using FreeBSD and so CIPD isn't
> supported on FreeBSD. That's a huge problem because i prevents me from
> building V8 at all. Not to mention it limits me to Python 2.7 when I want
> to use Python 3.7 for the build process. Ah well.
> Anyway, I run:
> git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
> Cloning into 'depot_tools'...
> remote: Sending approximately 22.24 MiB ...
> remote: Total 29246 (delta 20781), reused 29246 (delta 20781)
> Receiving objects: 100% (29246/29246), 22.18 MiB | 13.86 MiB/s, done.
> Resolving deltas: 100% (20781/20781), done.
> I then create a v8 path, set pyenv to use python 2.7.15, link v8 into my
> path, and run gclient and fetch:
> $ gclient
> CIPD not supported on freebsd
> WARNING: Your metrics.cfg file was invalid or nonexistent. A new one will
> be created.
> Usage: gclient.py <command> [options]
>
> Meta checkout dependency manager for Git.
>
> Commands are:
>   config   creates a .gclient file in the current directory
>   diff     displays local diff for every dependencies
>   fetch    fetches upstream commits for all modules
>   flatten  flattens the solutions into a single DEPS file
>   getdep   gets revision information and variable values from a DEPS file
>   grep     greps through git repos managed by gclient
>   help     prints list of commands or help for a specific command
>   metrics  reports, and optionally modifies, the status of metric
> collection
>   pack     generates a patch which can be applied at the root of the tree
>   recurse  operates [command args ...] on all the dependencies
>   revert   reverts all modifications in every dependencies
>   revinfo  outputs revision info mapping for the client and its
> dependencies
>   root     outputs the solution root (or current dir if there isn't one)
>   runhooks runs hooks for files that have been modified in the local
> working copy
>   setdep   modifies dependency revisions and variable values in a DEPS file
>   status   shows modification status for every dependencies
>   sync     checkout/update all modules
>   validate validates the .gclient and DEPS syntax
>   verify   verifies the DEPS file deps are only from allowed_hosts
>
> Options:
>   --version             show program's version number and exit
>   -h, --help            show this help message and exit
>   -j JOBS, --jobs=JOBS  Specify how many SCM commands can run in parallel;
>                         defaults to 8 on this machine
>   -v, --verbose         Produces additional output for diagnostics. Can be
>                         used up to three times for more logging info.
>   --gclientfile=CONFIG_FILENAME
>                         Specify an alternate .gclient file
>   --spec=SPEC           create a gclient file containing the provided
> string.
>                         Due to Cygwin/Python brokenness, it can't contain
> any
>                         newlines.
>   --no-nag-max          Ignored for backwards compatibility.
> $ ../depot_tools/fetch v8
> Running: gclient root
> CIPD not supported on freebsd
> Running: gclient config --spec 'solutions = [
>   {
>     "url": "https://chromium.googlesource.com/v8/v8.git";,
>     "managed": False,
>     "name": "v8",
>     "deps_file": "DEPS",
>     "custom_deps": {},
>   },
> ]
> '
> CIPD not supported on freebsd
> Running: gclient sync --with_branch_heads
> CIPD not supported on freebsd
>
> ________ running 'git -c core.deltaBaseCacheLimit=2g clone --no-checkout
> --progress https://chromium.googlesource.com/v8/v8.git
> /usr/home/ethin/v8/_gclient_v8_chIH7X' in '/usr/home/ethin/v8'
> Cloning into '/usr/home/ethin/v8/_gclient_v8_chIH7X'...
> remote: Sending approximately 430.94 MiB ...
> remote: Counting objects: 7660, done
>
> [0:01:00] Still working on:
> [0:01:00]   v8
> remote: Total 618180 (delta 518023), reused 618180 (delta 518023)
> Receiving objects: 100% (618180/618180), 430.12 MiB | 8.00 MiB/s, done.
>
> [0:01:10] Still working on:
> [0:01:10]   v8
>
> [0:01:20] Still working on:
> [0:01:20]   v8
>
> [0:01:30] Still working on:
> [0:01:30]   v8
>
> [0:01:40] Still working on:
> [0:01:40]   v8
>
> [0:01:50] Still working on:
> [0:01:50]   v8
>
> [0:02:00] Still working on:
> [0:02:00]   v8
>
> [0:02:10] Still working on:
> [0:02:10]   v8
>
> [0:02:20] Still working on:
> [0:02:20]   v8
>
> [0:02:30] Still working on:
> [0:02:30]   v8
>
> [0:02:40] Still working on:
> [0:02:40]   v8
>
> [0:02:50] Still working on:
> [0:02:50]   v8
>
> [0:03:00] Still working on:
> [0:03:00]   v8
> Resolving deltas: 100% (518023/518023), done.
>
> [0:03:10] Still working on:
> [0:03:10]   v8
>
> [0:03:20] Still working on:
> [0:03:20]   v8
>
> [0:03:30] Still working on:
> [0:03:30]   v8
>
> [0:03:39] Still working on:
> [0:03:39]   v8
> Syncing projects: 100% ( 1/ 1) v8
>
> v8 (ERROR)
> ----------------------------------------
> [0:00:00] Started.
> [0:00:00]
>
> ________ running 'git -c core.deltaBaseCacheLimit=2g clone --no-checkout
> --progress https://chromium.googlesource.com/v8/v8.git
> /usr/home/ethin/v8/_gclient_v8_chIH7X' in '/usr/home/ethin/v8'
> Cloning into '/usr/home/ethin/v8/_gclient_v8_chIH7X'...
> [0:00:00] Cloning into '/usr/home/ethin/v8/_gclient_v8_chIH7X'...
> remote: Sending approximately 430.94 MiB ...
> [0:00:04] remote: Sending approximately 430.94 MiB ...
> [0:00:07] remote: Counting objects: 1
> [0:00:08] remote: Counting objects: 1176
> [0:00:09] remote: Counting objects: 4527
> remote: Counting objects: 7660, done
> [0:00:10] remote: Counting objects: 7660, done
> remote: Total 618180 (delta 518023), reused 618180 (delta 518023)
> [0:01:04] remote: Total 618180 (delta 518023), reused 618180 (delta 518023)
> Receiving objects: 100% (618180/618180), 430.12 MiB | 8.00 MiB/s, done.
> [0:01:04] Receiving objects: 100% (618180/618180), 430.12 MiB | 8.00
> MiB/s, done.
> Resolving deltas: 100% (518023/518023), done.
> [0:03:08] Resolving deltas: 100% (518023/518023), done.
> [0:03:34] From https://chromium.googlesource.com/v8/v8
> [0:03:34]  * [new ref]               refs/branch-heads/0.1         ->
> branch-heads/0.1
> [0:03:34]  * [new ref]               refs/branch-heads/0.3         ->
> branch-heads/0.3
> [0:03:34]  * [new ref]               refs/branch-heads/1.1         ->
> branch-heads/1.1
> [0:03:34]  * [new ref]               refs/branch-heads/1.2         ->
> branch-heads/1.2
> [0:03:34]  * [new ref]               refs/branch-heads/1.3         ->
> branch-heads/1.3
> [0:03:34]  * [new ref]               refs/branch-heads/2.0         ->
> branch-heads/2.0
> [0:03:34]  * [new ref]               refs/branch-heads/2.1         ->
> branch-heads/2.1
> [0:03:34]  * [new ref]               refs/branch-heads/2.2         ->
> branch-heads/2.2
> [0:03:34]  * [new ref]               refs/branch-heads/2.3         ->
> branch-heads/2.3
> [0:03:34]  * [new ref]               refs/branch-heads/2.4         ->
> branch-heads/2.4
> [0:03:34]  * [new ref]               refs/branch-heads/2.5         ->
> branch-heads/2.5
> [0:03:34]  * [new ref]               refs/branch-heads/3.0         ->
> branch-heads/3.0
> [0:03:34]  * [new ref]               refs/branch-heads/3.1         ->
> branch-heads/3.1
> [0:03:34]  * [new ref]               refs/branch-heads/3.10        ->
> branch-heads/3.10
> [0:03:34]  * [new ref]               refs/branch-heads/3.11        ->
> branch-heads/3.11
> [0:03:34]  * [new ref]               refs/branch-heads/3.12        ->
> branch-heads/3.12
> [0:03:34]  * [new ref]               refs/branch-heads/3.13        ->
> branch-heads/3.13
> [0:03:34]  * [new ref]               refs/branch-heads/3.14        ->
> branch-heads/3.14
> [0:03:34]  * [new ref]               refs/branch-heads/3.15        ->
> branch-heads/3.15
> [0:03:34]  * [new ref]               refs/branch-heads/3.16        ->
> branch-heads/3.16
> [0:03:34]  * [new ref]               refs/branch-heads/3.17        ->
> branch-heads/3.17
> [0:03:34]  * [new ref]               refs/branch-heads/3.18        ->
> branch-heads/3.18
> [0:03:34]  * [new ref]               refs/branch-heads/3.19        ->
> branch-heads/3.19
> [0:03:34]  * [new ref]               refs/branch-heads/3.2         ->
> branch-heads/3.2
> [0:03:34]  * [new ref]               refs/branch-heads/3.20        ->
> branch-heads/3.20
> [0:03:34]  * [new ref]               refs/branch-heads/3.20.15.5   ->
> branch-heads/3.20.15.5
> [0:03:34]  * [new ref]               refs/branch-heads/3.21        ->
> branch-heads/3.21
> [0:03:34]  * [new ref]               refs/branch-heads/3.22        ->
> branch-heads/3.22
> [0:03:34]  * [new ref]               refs/branch-heads/3.23        ->
> branch-heads/3.23
> [0:03:34]  * [new ref]               refs/branch-heads/3.24        ->
> branch-heads/3.24
> [0:03:34]  * [new ref]               refs/branch-heads/3.25        ->
> branch-heads/3.25
> [0:03:34]  * [new ref]               refs/branch-heads/3.26        ->
> branch-heads/3.26
> [0:03:34]  * [new ref]               refs/branch-heads/3.27        ->
> branch-heads/3.27
> [0:03:34]  * [new ref]               refs/branch-heads/3.28        ->
> branch-heads/3.28
> [0:03:34]  * [new ref]               refs/branch-heads/3.29        ->
> branch-heads/3.29
> [0:03:34]  * [new ref]               refs/branch-heads/3.3         ->
> branch-heads/3.3
> [0:03:34]  * [new ref]               refs/branch-heads/3.30        ->
> branch-heads/3.30
> [0:03:34]  * [new ref]               refs/branch-heads/3.31        ->
> branch-heads/3.31
> [0:03:34]  * [new ref]               refs/branch-heads/3.4         ->
> branch-heads/3.4
> [0:03:34]  * [new ref]               refs/branch-heads/3.5         ->
> branch-heads/3.5
> [0:03:34]  * [new ref]               refs/branch-heads/3.6         ->
> branch-heads/3.6
> [0:03:34]  * [new ref]               refs/branch-heads/3.7         ->
> branch-heads/3.7
> [0:03:34]  * [new ref]               refs/branch-heads/3.8         ->
> branch-heads/3.8
> [0:03:34]  * [new ref]               refs/branch-heads/3.9         ->
> branch-heads/3.9
> [0:03:34]  * [new ref]               refs/branch-heads/4.1         ->
> branch-heads/4.1
> [0:03:34]  * [new ref]               refs/branch-heads/4.2         ->
> branch-heads/4.2
> [0:03:34]  * [new ref]               refs/branch-heads/4.2.39      ->
> branch-heads/4.2.39
> [0:03:34]  * [new ref]               refs/branch-heads/4.3         ->
> branch-heads/4.3
> [0:03:34]  * [new ref]               refs/branch-heads/4.4         ->
> branch-heads/4.4
> [0:03:34]  * [new ref]               refs/branch-heads/4.5         ->
> branch-heads/4.5
> [0:03:34]  * [new ref]               refs/branch-heads/4.6         ->
> branch-heads/4.6
> [0:03:34]  * [new ref]               refs/branch-heads/4.7         ->
> branch-heads/4.7
> [0:03:34]  * [new ref]               refs/branch-heads/4.8         ->
> branch-heads/4.8
> [0:03:34]  * [new ref]               refs/branch-heads/4.9         ->
> branch-heads/4.9
> [0:03:34]  * [new ref]               refs/branch-heads/5.0         ->
> branch-heads/5.0
> [0:03:34]  * [new ref]               refs/branch-heads/5.1         ->
> branch-heads/5.1
> [0:03:34]  * [new ref]               refs/branch-heads/5.2         ->
> branch-heads/5.2
> [0:03:34]  * [new ref]               refs/branch-heads/5.3         ->
> branch-heads/5.3
> [0:03:34]  * [new ref]               refs/branch-heads/5.4         ->
> branch-heads/5.4
> [0:03:34]  * [new ref]               refs/branch-heads/5.5         ->
> branch-heads/5.5
> [0:03:34]  * [new ref]               refs/branch-heads/5.6         ->
> branch-heads/5.6
> [0:03:34]  * [new ref]               refs/branch-heads/5.7         ->
> branch-heads/5.7
> [0:03:34]  * [new ref]               refs/branch-heads/5.8         ->
> branch-heads/5.8
> [0:03:34]  * [new ref]               refs/branch-heads/5.9         ->
> branch-heads/5.9
> [0:03:34]  * [new ref]               refs/branch-heads/6.0         ->
> branch-heads/6.0
> [0:03:34]  * [new ref]               refs/branch-heads/6.1         ->
> branch-heads/6.1
> [0:03:34]  * [new ref]               refs/branch-heads/6.2         ->
> branch-heads/6.2
> [0:03:34]  * [new ref]               refs/branch-heads/6.3         ->
> branch-heads/6.3
> [0:03:34]  * [new ref]               refs/branch-heads/6.4         ->
> branch-heads/6.4
> [0:03:34]  * [new ref]               refs/branch-heads/6.5         ->
> branch-heads/6.5
> [0:03:34]  * [new ref]               refs/branch-heads/6.6         ->
> branch-heads/6.6
> [0:03:34]  * [new ref]               refs/branch-heads/6.7         ->
> branch-heads/6.7
> [0:03:34]  * [new ref]               refs/branch-heads/6.8         ->
> branch-heads/6.8
> [0:03:34]  * [new ref]               refs/branch-heads/6.9         ->
> branch-heads/6.9
> [0:03:34]  * [new ref]               refs/branch-heads/7.0         ->
> branch-heads/7.0
> [0:03:34]  * [new ref]               refs/branch-heads/7.1         ->
> branch-heads/7.1
> [0:03:34]  * [new ref]               refs/branch-heads/experimental ->
> branch-heads/experimental
> [0:03:34]  * [new ref]               refs/branch-heads/test-gnumbd ->
> branch-heads/test-gnumbd
> [0:03:39] Checked out refs/remotes/origin/master to a detached HEAD.
> Before making any commits
> in this repo, you should use 'git checkout <branch>' to switch to
> an existing branch or use 'git checkout origin -b <branch>' to
> create a new branch for your work.
> [0:03:39]
> ----------------------------------------
> Traceback (most recent call last):
>   File "/usr/home/ethin/depot_tools/metrics.py", line 262, in
> print_notice_and_exit
>     yield
>   File "/home/ethin/depot_tools/gclient.py", line 3107, in <module>
>     sys.exit(main(sys.argv[1:]))
>   File "/home/ethin/depot_tools/gclient.py", line 3093, in main
>     return dispatcher.execute(OptionParser(), argv)
>   File "/usr/home/ethin/depot_tools/subcommand.py", line 252, in execute
>     return command(parser, args[1:])
>   File "/home/ethin/depot_tools/gclient.py", line 2672, in CMDsync
>     ret = client.RunOnDeps('update', args)
>   File "/home/ethin/depot_tools/gclient.py", line 1705, in RunOnDeps
>     patch_refs=patch_refs, target_branches=target_branches)
>   File "/usr/home/ethin/depot_tools/gclient_utils.py", line 1075, in run
>     self.item.run(*self.args, **self.kwargs)
>   File "/home/ethin/depot_tools/gclient.py", line 924, in run
>     self.ParseDepsFile()
>   File "/home/ethin/depot_tools/gclient.py", line 684, in ParseDepsFile
>     filepath, self.get_vars(), self.get_builtin_vars())
>   File "/home/ethin/depot_tools/gclient.py", line 1228, in get_vars
>     parent_vars = self.parent.get_vars()
>   File "/home/ethin/depot_tools/gclient.py", line 1231, in get_vars
>     result.update(self.get_builtin_vars())
>   File "/home/ethin/depot_tools/gclient.py", line 1204, in get_builtin_vars
>     'host_os': _detect_host_os(),
>   File "/home/ethin/depot_tools/gclient.py", line 1246, in _detect_host_os
>     return _PLATFORM_MAPPING[sys.platform]
> KeyError: 'freebsd11'
> Traceback (most recent call last):
>   File "../depot_tools/fetch.py", line 306, in <module>
>     sys.exit(main())
>   File "../depot_tools/fetch.py", line 301, in main
>     return run(options, spec, root)
>   File "../depot_tools/fetch.py", line 295, in run
>     return checkout.init()
>   File "../depot_tools/fetch.py", line 137, in init
>     self.run_gclient(*sync_cmd)
>   File "../depot_tools/fetch.py", line 82, in run_gclient
>     return self.run(cmd_prefix + cmd, **kwargs)
>   File "../depot_tools/fetch.py", line 71, in run
>     subprocess.check_call(cmd, **kwargs)
>   File "/home/ethin/.pyenv/versions/2.7.15/lib/python2.7/subprocess.py",
> line 190, in check_call
>     raise CalledProcessError(retcode, cmd)
> subprocess.CalledProcessError: Command '('gclient', 'sync',
> '--with_branch_heads')' returned non-zero exit status 1
> So, not only is CIPD unavailable for FreeBSD (and I can't find the source
> code for it), but gclient apparently doesn't support my OS. And I have no
> idea if I can build V8 anyway, even if fetch v8 fails at this point. Oh,
> and I can't forget to mention that gn doesn't work, either. So is there any
> way around this? Because I wanted to embed V8 into my project, but this is
> really starting to disappoint me. I've heard great things about it, I've
> used it in Node.JS, and yet I can't build it to embed it because the build
> system is so convoluted. What happened to the old CMake/make combo that
> works so well? What happened to autoconf? Or any of the other good build
> systems that do work on pretty much all OSes? I don't mean to be overly
> rude but this is ridiculous.
>
> --
> --
> v8-users mailing list
> v8-users@googlegroups.com
> http://groups.google.com/group/v8-users
> ---
> You received this message because you are subscribed to the Google Groups
> "v8-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to v8-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to