Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build Issue with DataDog Dependency #33797

Closed
miroswan opened this issue Apr 25, 2024 · 5 comments
Closed

Build Issue with DataDog Dependency #33797

miroswan opened this issue Apr 25, 2024 · 5 comments

Comments

@miroswan
Copy link
Contributor

Title: Build on main fails due to datadog dependency

Description:

Executing bazelisk build //source/exe:envoy causes a build failure on main.

Repro steps:

Execute bazelisk build //source/exe:envoy

Logs:

bazelisk build //source/exe:envoy
INFO: Analyzed target //source/exe:envoy (766 packages loaded, 21765 targets configured).
INFO: Found 1 target...
ERROR: /usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6c384122ec61c2f53d1cc5de96a17c50/external/com_github_datadog_dd_trace_cpp/BUILD.bazel:1:11: Compiling src/datadog/parse_util.cpp failed: (Exit 1): gcc failed: error executing command (from target @com_github_datadog_dd_trace_cpp//:dd_trace_cpp) /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer '-std=c++14' -MD -MF ... (remaining 34 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
In file included from external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.cpp:1:
external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.h:21:15: error: 'uint64_t' is not a member of 'std'; did you mean 'wint_t'?
   21 | Expected<std::uint64_t> parse_uint64(StringView input, int base);
      |               ^~~~~~~~
      |               wint_t
external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.h:21:23: error: template argument 1 is invalid
   21 | Expected<std::uint64_t> parse_uint64(StringView input, int base);
      |                       ^
external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.cpp:53:25: error: ambiguating new declaration of 'datadog::tracing::Expected<long unsigned int> datadog::tracing::parse_uint64(StringView, int)'
   53 | Expected<std::uint64_t> parse_uint64(StringView input, int base) {
      |                         ^~~~~~~~~~~~
external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.h:21:25: note: old declaration 'int datadog::tracing::parse_uint64(StringView, int)'
   21 | Expected<std::uint64_t> parse_uint64(StringView input, int base);
      |                         ^~~~~~~~~~~~
Target //source/exe:envoy-static failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 2.647s, Critical Path: 1.33s
INFO: 62 processes: 49 internal, 13 linux-sandbox.
FAILED: Build did NOT complete successfully
@miroswan miroswan added bug triage Issue requires triage labels Apr 25, 2024
@wbpcode wbpcode added area/build and removed triage Issue requires triage labels Apr 26, 2024
@wbpcode
Copy link
Member

wbpcode commented Apr 26, 2024

cc @keith

@miroswan
Copy link
Contributor Author

I created a new development VM and checked out a fresh copy of the repo and received this issue:

  • Command: bazelisk build envoy
  • Output:
+ /usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-recursive
make[1]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir'
Making all in glib
make[2]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-recursive
make[3]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
Making all in .
make[4]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
make[4]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
Making all in m4macros
make[4]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/m4macros'
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-am
make[5]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/m4macros'
make[5]: Nothing to be done for 'all-am'.
make[5]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/m4macros'
make[4]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/m4macros'
Making all in glib
make[4]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
  GEN      glibconfig-stamp
config.status: executing glib/glibconfig.h commands
config.status: glib/glibconfig.h is unchanged
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-recursive
make[5]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
Making all in libcharset
make[6]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/libcharset'
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-am
make[7]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/libcharset'
  CC       libcharset_la-localcharset.lo
  CCLD     libcharset.la
ar: `u' modifier ignored since `D' is the default (see `U')
  GEN      ref-add.sed
  GEN      ref-del.sed
  GEN      charset.alias
make[7]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/libcharset'
make[6]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/libcharset'
Making all in gnulib
make[6]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/gnulib'
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-am
make[7]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/gnulib'
  CC       libgnulib_la-asnprintf.lo
  CC       libgnulib_la-printf-args.lo
  CC       libgnulib_la-printf-parse.lo
  CC       libgnulib_la-vasnprintf.lo
  CC       libgnulib_la-printf.lo
  CCLD     libgnulib.la
ar: `u' modifier ignored since `D' is the default (see `U')
make[7]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/gnulib'
make[6]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/gnulib'
Making all in .
make[6]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
  CC       libglib_2_0_la-gallocator.lo
  CC       libglib_2_0_la-gcache.lo
  CC       libglib_2_0_la-gcompletion.lo
  CC       libglib_2_0_la-grel.lo
  CC       libglib_2_0_la-gthread-deprecated.lo
  CC       libglib_2_0_la-garray.lo
  CC       libglib_2_0_la-gasyncqueue.lo
  CC       libglib_2_0_la-gatomic.lo
gatomic.c:392:10: error: incompatible integer to pointer conversion passing 'gssize' (aka 'long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
  return g_atomic_pointer_add ((volatile gpointer *) atomic, val);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:170:46: note: expanded from macro 'g_atomic_pointer_add'
    (gssize) __sync_fetch_and_add ((atomic), (val));                         \
                                             ^~~~~
gatomic.c:416:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
  return g_atomic_pointer_and ((volatile gpointer *) atomic, val);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:177:45: note: expanded from macro 'g_atomic_pointer_and'
    (gsize) __sync_fetch_and_and ((atomic), (val));                          \
                                            ^~~~~
gatomic.c:440:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
  return g_atomic_pointer_or ((volatile gpointer *) atomic, val);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:184:44: note: expanded from macro 'g_atomic_pointer_or'
    (gsize) __sync_fetch_and_or ((atomic), (val));                           \
                                           ^~~~~
gatomic.c:464:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
  return g_atomic_pointer_xor ((volatile gpointer *) atomic, val);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:191:45: note: expanded from macro 'g_atomic_pointer_xor'
    (gsize) __sync_fetch_and_xor ((atomic), (val));                          \
                                            ^~~~~
4 errors generated.
make[6]: *** [Makefile:1317: libglib_2_0_la-gatomic.lo] Error 1
make[6]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
make[5]: *** [Makefile:1934: all-recursive] Error 1
make[5]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
make[4]: *** [Makefile:953: all] Error 2
make[4]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
make[3]: *** [Makefile:1046: all-recursive] Error 1
make[3]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
make[2]: *** [Makefile:770: all] Error 2
make[2]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
make[1]: *** [Makefile:707: all-recursive] Error 1
make[1]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir'
make: *** [Makefile:463: all] Error 2
_____ END BUILD LOGS _____
rules_foreign_cc: Build wrapper script location: bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig_tool_default_foreign_cc/wrapper_build_script.sh
rules_foreign_cc: Build script location: bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig_tool_default_foreign_cc/build_script.sh
rules_foreign_cc: Build log location: bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig_tool_default_foreign_cc/BootstrapPkgConfig.log

Target //source/exe:envoy-static failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 70.430s, Critical Path: 62.77s
INFO: 2422 processes: 1826 internal, 596 linux-sandbox.
FAILED: Build did NOT complete successfully

@miroswan
Copy link
Contributor Author

I believe these build issues might be coming from the fact that I am building via bazel directly and not through the Docker container. I've tried executing via Docker using the instructions in DEVELOPER.md (docker is running as root) and I got the issue:

WARNING: The following configs were expanded more than once: [libc++, clang]. For repeatable flags, repeats are counted twice and may lead to unexpected behavior.
INFO: Repository python3_11_x86_64-unknown-linux-gnu instantiated at:
  /source/WORKSPACE:17:25: in <toplevel>
  /source/bazel/repositories_extra.bzl:26:31: in envoy_dependencies_extra
  /build/bazel_root/base/external/rules_python/python/repositories.bzl:581:26: in python_register_toolchains
Repository rule python_repository defined at:
  /build/bazel_root/base/external/rules_python/python/repositories.bzl:402:36: in <toplevel>
INFO: repository @python3_11_x86_64-unknown-linux-gnu' used the following cache hits instead of downloading the corresponding file.
 * Hash 'da50b87d1ec42b3cb577dfd22a3655e43a53150f4f98a4bfb40757c9d7839ab5' for https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.11.3+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz
If the definition of 'repository @python3_11_x86_64-unknown-linux-gnu' was updated, verify that the hashes were also updated.
ERROR: An error occurred during the fetch of repository 'python3_11_x86_64-unknown-linux-gnu':
   Traceback (most recent call last):
        File "/build/bazel_root/base/external/rules_python/python/repositories.bzl", line 205, column 25, in _python_repository_impl
                fail("The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.")
Error in fail: The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.
ERROR: /source/WORKSPACE:17:25: fetching python_repository rule //external:python3_11_x86_64-unknown-linux-gnu: Traceback (most recent call last):
        File "/build/bazel_root/base/external/rules_python/python/repositories.bzl", line 205, column 25, in _python_repository_impl
                fail("The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.")
Error in fail: The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.
ERROR: Error computing the main repository mapping: at /source/bazel/dependency_imports.bzl:2:6: Encountered error while reading extension file 'requirements.bzl': no such package '@base_pip3//': no such package '@python3_11_x86_64-unknown-linux-gnu//': The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.

Setting the following in WORKSPACE fixes the issue for me:

envoy_dependencies_extra(ignore_root_user_error=True)

It would be nice if we can set an environment variable that allows us to thread this value through.

@phlax
Copy link
Member

phlax commented Apr 29, 2024

It would be nice if we can set an environment variable that allows us to thread this value through.

im not sure that is possible - but happy to be wrong about that

the change to disallow using root happened upstream - while it wasnt entirely welcome, its also true that you should avoid using root when running code unless absolutely necessary - so we have kept the default for that

this topic comes up from time to time, and ive not seen/found any workaround other than editing the bzl file/s

at the end of the day - its generally easier and definitely much preferred to fix your env to not run as root

@miroswan
Copy link
Contributor Author

miroswan commented Apr 30, 2024

Just in case anyone else runs into this issue, I installing clang 14 specifically instead of using clang16 that was the default on my system and setting the appropriate environment variables in my .bashrc did the trick for building with bazel directly without Docker.

export CLANG_TOOLCHAIN=/path/to/clang14/installation
export CC=$CLANG_TOOLCHAIN/bin/clang
export CXX=$CLANG_TOOLCHAIN/bin/clang++
export CLANG_FORMAT=$CLANG_TOOLCHAIN/bin/clang-format
export PATH=$CLANG_TOOLCHAIN/bin:$PATH

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants