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.