google-deepmind/lab

Build fails with message about C++14 being required even with a C++14-capable compiler

gspr opened this issue · 2 comments

gspr commented

I don't know if the latest git head is supposed to work at any time, but the tagged releases are unusable due to broken checksums(!), so git head it is (2e17923). GCC 10.2 should be plenty C++-14 capable, but the build attempts fail with

ERROR: /home/user/.cache/bazel/_bazel_user/40a2381252150da40396219c05ce7670/external/com_google_absl/absl/hash/BUILD.bazel:150:11: Compiling absl/hash/internal/low_level_hash.cc failed: (Exit 1): gcc failed: error executing command (from target @com_google_absl//absl/hash:low_level_hash) 
  (cd /home/user/.cache/bazel/_bazel_user/40a2381252150da40396219c05ce7670/sandbox/processwrapper-sandbox/415/execroot/org_deepmind_lab && \
  exec env - \
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
    PWD=/proc/self/cwd \
  /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG -ffunction-sections -fdata-sections '-std=c++0x' -MD -MF bazel-out/k8-opt/bin/external/com_google_absl/absl/hash/_objs/low_level_hash/low_level_hash.pic.d '-frandom-seed=bazel-out/k8-opt/bin/external/com_google_absl/absl/hash/_objs/low_level_hash/low_level_hash.pic.o' -fPIC -iquote external/com_google_absl -iquote bazel-out/k8-opt/bin/external/com_google_absl -Wall -Wextra -Wcast-qual -Wconversion-null -Wformat-security -Wmissing-declarations -Woverlength-strings -Wpointer-arith -Wundef -Wunused-local-typedefs -Wunused-result -Wvarargs -Wvla -Wwrite-strings -DNOMINMAX -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -c external/com_google_absl/absl/hash/internal/low_level_hash.cc -o bazel-out/k8-opt/bin/external/com_google_absl/absl/hash/_objs/low_level_hash/low_level_hash.pic.o)
# Configuration: 9c8d3e90f17daf8d5c6ed4cdca7ecedb3c834be8857725de5836a6c054b593db
# Execution platform: @local_config_platform//:host

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
In file included from external/com_google_absl/absl/base/config.h:86,
                 from external/com_google_absl/absl/hash/internal/low_level_hash.h:31,
                 from external/com_google_absl/absl/hash/internal/low_level_hash.cc:15:
external/com_google_absl/absl/base/policy_checks.h:79:2: error: #error "C++ versions less than C++14 are not supported."
   79 | #error "C++ versions less than C++14 are not supported."
      |  ^~~~~
Target //:deepmind_lab.so failed to build

As we can see, something somewhere sets the -std=c++0x compiler flag, but I'm unable to find where due to not knowing Bazel.

DeepMind Lab was made to require only C++11. But Abseil has since dropped support for C++11. We aren't setting any language flags explicitly, but you can add your own .bazelrc file yourself if you like, similar to https://github.com/deepmind/lab/blob/2e17923bb2fd727cc179dd4a23f9781ec7a6f363/.precommit.bazelrc#L6 or to https://github.com/deepmind/lab2d/blob/main/.bazelrc (but set --std=c++14 or c++17).

(We should probably update the precommit-bazelrc file here so that the GitHub tests continue working.)

gspr commented

Thanks, that's most helpful.