Also, apparently they patch it, they're using V 7.0.276.38. They also use make-v8.sh on a build machine, I'm guessing, to build it.
On 11/26/18, Ethin Probst <harlydavid...@gmail.com> wrote: > I'm now curious why no one cared to do that? It just doesn't make sense. > > On 11/26/18, Jakob Kummerow <jkumme...@chromium.org> wrote: >> 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 a topic in the >> Google Groups "v8-users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/v8-users/5H1kaLxMV04/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> v8-users+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > > -- > Signed, > Ethin D. Probst > -- Signed, Ethin D. Probst -- -- 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.