nodejs / node-v8

Experimental Node.js mirror on V8 lkgr :sparkles::turtle::rocket::sparkles:

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Port absl config to gyp

targos opened this issue · comments

https://github.com/nodejs/node-v8/actions/runs/1256415634

In file included from ../deps/v8/src/base/platform/mutex.h:10,
                 from ../deps/v8/src/base/platform/condition-variable.h:10,
                 from ../deps/v8/src/libplatform/default-foreground-task-runner.h:13,
                 from ../deps/v8/src/libplatform/default-foreground-task-runner.cc:5:
../deps/v8/src/base/optional.h:8:10: fatal error: absl/types/optional.h: No such file or directory
    8 | #include "absl/types/optional.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

This is an external dep to V8 that we'll have to pull.
Main BUILD.gn: https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp/+/refs/heads/main/BUILD.gn

I probably won't have time to work on this in the near future.

I disabled the canary update GitHub action. It won't work until this is done.

Is this likely to block V8 9.5 for Node.js 17?

No, this is blocking V8 9.6

I've opened node-core-utils PR to add abseil to the fetched V8 dependencies on V8 updates: nodejs/node-core-utils#565

https://github.com/nodejs/node-v8/actions/runs/1256415634

In file included from ../deps/v8/src/base/platform/mutex.h:10,
                 from ../deps/v8/src/base/platform/condition-variable.h:10,
                 from ../deps/v8/src/libplatform/default-foreground-task-runner.h:13,
                 from ../deps/v8/src/libplatform/default-foreground-task-runner.cc:5:
../deps/v8/src/base/optional.h:8:10: fatal error: absl/types/optional.h: No such file or directory
    8 | #include "absl/types/optional.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

FWIW this particular use was reverted in v8/v8@d67f060

https://github.com/nodejs/node-v8/actions/runs/1256415634

In file included from ../deps/v8/src/base/platform/mutex.h:10,
                 from ../deps/v8/src/base/platform/condition-variable.h:10,
                 from ../deps/v8/src/libplatform/default-foreground-task-runner.h:13,
                 from ../deps/v8/src/libplatform/default-foreground-task-runner.cc:5:
../deps/v8/src/base/optional.h:8:10: fatal error: absl/types/optional.h: No such file or directory
    8 | #include "absl/types/optional.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

FWIW this particular use was reverted in v8/v8@d67f060

Right. It re-enabled the job as it seems V8 doesn't use absl anywhere after this revert.

Closing as this didn't show up again after almost a year.

It's back:

In file included from ../../deps/v8/src/objects/source-text-module.h:11:
../../deps/v8/src/zone/zone-containers.h:20:10: fatal error: 'absl/container/flat_hash_map.h' file not found
#include "absl/container/flat_hash_map.h"
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[1161/3998] CC obj/tools/icu/gen/icudata.icudt73_dat.o
ninja: build stopped: subcommand failed.
make: *** [node] Error 1

I disabled https://github.com/nodejs/node-v8/actions/workflows/update-canary.yml. No point running a daily workflow that's guaranteed to fail until we fix this.

I went very manual and added a static library build for v8_abseil with the dependency tree of flat_hash_map and flat_hash_set in 1b0759c. It's probably overkill and might break in the future if V8 starts depending on other headers, but it works 🤷🏻.