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

refresh_compile_commands fails #226

Open
stonebrakert6 opened this issue Oct 8, 2024 · 2 comments
Open

refresh_compile_commands fails #226

stonebrakert6 opened this issue Oct 8, 2024 · 2 comments

Comments

@stonebrakert6
Copy link

Problem

make cdb
bazel run --config=dbg //:refresh_compile_commands && \
         python3 ~/tools/cc_modify.py compile_commands.json
INFO: Invocation ID: 84d29b05-0535-43b6-9a62-9e9eacfdc8c2
WARNING: Build options --features and --host_features have changed, discarding analysis cache (this can be expensive, see https://bazel.build/advanced/performance/iteration-speed).
INFO: Analyzed target //:refresh_compile_commands (0 packages loaded, 638 targets configured).
INFO: Found 1 target...
Target //:refresh_compile_commands up-to-date:
  bazel-bin/refresh_compile_commands
  bazel-bin/refresh_compile_commands.check_python_version.py
  bazel-bin/refresh_compile_commands.py
INFO: Elapsed time: 0.138s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
INFO: Running command line: bazel-bin/refresh_compile_commands
>>> Analyzing commands used in //base/...
WARNING: Build options --features and --host_features have changed, discarding analysis cache (this can be expensive, see https://bazel.build/advanced/performance/iteration-speed).
Traceback (most recent call last):
  File "/home/kartik/.cache/bazel/_bazel_kartik/2759e3591425690b59973aa47ef8b141/execroot/app0/bazel-out/k8-fastbuild-debug/bin/refresh_compile_commands.runfiles/app0/refresh_compile_commands.check_python_version.py", line 15, in <module>
    refresh_compile_commands.main()
  File "/home/kartik/.cache/bazel/_bazel_kartik/2759e3591425690b59973aa47ef8b141/execroot/app0/bazel-out/k8-fastbuild-debug/bin/refresh_compile_commands.runfiles/app0/refresh_compile_commands.py", line 1422, in main
    compile_command_entries.extend(_get_commands(target, flags))
  File "/home/kartik/.cache/bazel/_bazel_kartik/2759e3591425690b59973aa47ef8b141/execroot/app0/bazel-out/k8-fastbuild-debug/bin/refresh_compile_commands.runfiles/app0/refresh_compile_commands.py", line 1282, in _get_commands
    yield from _convert_compile_commands(parsed_aquery_output)
  File "/home/kartik/.cache/bazel/_bazel_kartik/2759e3591425690b59973aa47ef8b141/execroot/app0/bazel-out/k8-fastbuild-debug/bin/refresh_compile_commands.runfiles/app0/refresh_compile_commands.py", line 1162, in _convert_compile_commands
    for source_files, header_files, compile_command_args in outputs:
  File "/usr/lib/python3.12/concurrent/futures/_base.py", line 619, in result_iterator
    yield _result_or_cancel(fs.pop())
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/concurrent/futures/_base.py", line 317, in _result_or_cancel
    return fut.result(timeout)
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kartik/.cache/bazel/_bazel_kartik/2759e3591425690b59973aa47ef8b141/execroot/app0/bazel-out/k8-fastbuild-debug/bin/refresh_compile_commands.runfiles/app0/refresh_compile_commands.py", line 1126, in _get_cpp_command_for_files
    source_files, header_files = _get_files(compile_action)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kartik/.cache/bazel/_bazel_kartik/2759e3591425690b59973aa47ef8b141/execroot/app0/bazel-out/k8-fastbuild-debug/bin/refresh_compile_commands.runfiles/app0/refresh_compile_commands.py", line 630, in _get_files
    assert source_file_candidates, f"No source files found in compile args: {compile_action.arguments}.\nPlease file an issue with this information!"
           ^^^^^^^^^^^^^^^^^^^^^^
AssertionError: No source files found in compile args: ['external/local_config_cc/cc_wrapper.sh', '-xc++-header', '-fsyntax-only', '-U_FORTIFY_SOURCE', '-fstack-protector', '-Wall', '-Wthread-safety', '-Wself-assign', '-Wunused-but-set-parameter', '-Wno-free-nonheap-object', '-fcolor-diagnostics', '-fno-omit-frame-pointer', '-std=c++14', '-MD', '-MF', 'bazel-out/k8-fastbuild-debug/bin/external/com_google_absl/absl/strings/_objs/strings/ascii.h.d', '-iquote', 'external/com_google_absl', '-iquote', 'bazel-out/k8-fastbuild-debug/bin/external/com_google_absl', '-mcrc32', '-g', '-fno-omit-frame-pointer', '-DLOG_ACTIVE_LEVEL=0', '-std=c++20', '-stdlib=libc++', '-fnew-alignment=8', '-fno-rtti', '-fno-exceptions', '-fsized-deallocation', '-Wall', '-Wextra', '-Wc++98-compat-extra-semi', '-Wcast-qual', '-Wconversion', '-Wdead-code-aggressive', '-Wfloat-overflow-conversion', '-Wfloat-zero-conversion', '-Wfor-loop-analysis', '-Wformat-security', '-Wgnu-redeclared-enum', '-Winfinite-recursion', '-Winvalid-constexpr', '-Wliteral-conversion', '-Wmissing-declarations', '-Woverlength-strings', '-Wpointer-arith', '-Wself-assign', '-Wshadow-all', '-Wshorten-64-to-32', '-Wsign-conversion', '-Wstring-conversion', '-Wtautological-overlap-compare', '-Wtautological-unsigned-zero-compare', '-Wundef', '-Wuninitialized', '-Wunreachable-code', '-Wunused-comparison', '-Wunused-local-typedefs', '-Wunused-result', '-Wvla', '-Wwrite-strings', '-Wno-float-conversion', '-Wno-implicit-float-conversion', '-Wno-implicit-int-float-conversion', '-Wno-unknown-warning-option', '-DNOMINMAX', '-no-canonical-prefixes', '-Wno-builtin-macro-redefined', '-D__DATE__="redacted"', '-D__TIMESTAMP__="redacted"', '-D__TIME__="redacted"', '-c', 'external/com_google_absl/absl/strings/ascii.h', '-o', 'bazel-out/k8-fastbuild-debug/bin/external/com_google_absl/absl/strings/_objs/strings/ascii.h.processed'].
Please file an issue with this information!
make: *** [Makefile:37: cdb] Error 1

Bazel Version

bazel version
Bazelisk version: development
INFO: Invocation ID: a6f50428-5a46-4b06-99b2-1975b99791c1
Build label: 7.3.2
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Tue Oct 1 17:46:05 2024 (1727804765)
Build timestamp: 1727804765
Build timestamp as int: 1727804765

OS Details

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.1 LTS"

WORKSPACE file (stripped)

workspace(name = "app0")

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

# Hedron's Compile Commands Extractor for Bazel
# https://github.com/hedronvision/bazel-compile-commands-extractor
http_archive(
    name = "hedron_compile_commands",
    sha256 = "c8029e92da302f0a32fd0d4059358c8657b5cb82628000b7b5e259c73f91882d",
    strip_prefix = "bazel-compile-commands-extractor-4f28899228fb3ad0126897876f147ca15026151e",

    # Replace the commit hash in both places (below) with the latest, rather than using the stale one here.
    # Even better, set up Renovate and let it do the work for you (see "Suggestion: Updates" in the README).
    url = "https://github.com/hedronvision/bazel-compile-commands-extractor/archive/4f28899228fb3ad0126897876f147ca15026151e.zip",
    # When you first run this tool, it'll recommend a sha256 hash to put here with a message like: "DEBUG: Rule 'hedron_compile_commands' indicated that a canonical reproducible form can be obtained by modifying arguments sha256 = ..."
)

load("@hedron_compile_commands//:workspace_setup.bzl", "hedron_compile_commands_setup")

hedron_compile_commands_setup()

load("@hedron_compile_commands//:workspace_setup_transitive.bzl", "hedron_compile_commands_setup_transitive")

hedron_compile_commands_setup_transitive()

load("@hedron_compile_commands//:workspace_setup_transitive_transitive.bzl", "hedron_compile_commands_setup_transitive_transitive")

hedron_compile_commands_setup_transitive_transitive()

load("@hedron_compile_commands//:workspace_setup_transitive_transitive_transitive.bzl", "hedron_compile_commands_setup_transitive_transitive_transitive")

hedron_compile_commands_setup_transitive_transitive_transitive()

base/BUILD.bazel file

load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
load("//bazel:copts.bzl", "APP0_DEFAULT_COPTS")

cc_library(
    name = "base",
    srcs = [
        "factorial.cc",
        "logger.cc",
    ],
    hdrs = [
        "factorial.h",
        "fuzztest_wrapper.h",
        "logger.h",
    ],
    copts = APP0_DEFAULT_COPTS,
    linkstatic = True,
    visibility = ["//visibility:public"],
    deps = [
        "@com_github_gabime_spdlog//:spdlog",
    ],
)

filegroup(
    name = "data_test",
    srcs = glob(["test_data/*.txt"]),
)

cc_test(
    name = "factorial.t",
    size = "small",
    srcs = ["factorial_test.cc"],
    copts = APP0_DEFAULT_COPTS,
    data = [
        ":data_test",
    ],
    linkstatic = True,
    tags = [
        "small",
        "smoke",
    ],
    deps = [
        ":base",
        "@bazel_tools//tools/cpp/runfiles",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_binary(
    name = "factorial.bm",
    srcs = ["factorial_benchmark.cc"],
    copts = APP0_DEFAULT_COPTS,
    deps = [
        ":base",
        "@com_github_google_benchmark//:benchmark",
    ],
)

cc_test(
    name = "factorial.fuzz",
    size = "small",
    srcs = ["factorial_fuzz.cc"],
    copts = APP0_DEFAULT_COPTS,
    linkstatic = True,
    tags = [
        "filesystem",
        "small",
        "smoke",
    ],
    deps = [
        ":base",
        "@com_google_fuzztest//fuzztest",
        "@com_google_fuzztest//fuzztest:fuzztest_gtest_main",
        "@com_google_googletest//:gtest",
    ],
)

BUILD.bazel in repository root

load("@com_github_bazelbuild_buildtools//buildifier:def.bzl", "buildifier")
load("@hedron_compile_commands//:refresh_compile_commands.bzl", "refresh_compile_commands")

buildifier(
    name = "buildifier",
)

refresh_compile_commands(
    name = "refresh_compile_commands",

    # Specify the targets of interest.
    # For example, specify a dict of targets and any flags required to build.
    targets = {
        "//base/...": "--config=dbg",
        "//main/...": "--config=dbg",
        "//workset_cache/...": "--config=dbg",
    },
    # No need to add flags already in .bazelrc. They're automatically picked up.
    # If you don't need flags, a list of targets is also okay, as is a single target string.
    # Wildcard patterns, like //... for everything, *are* allowed here, just like a build.
    # As are additional targets (+) and subtractions (-), like in bazel query https://docs.bazel.build/versions/main/query.html#expressions
    # And if you're working on a header-only library, specify a test or binary target that compiles it.
)

Any ideas how to fix this? It was working last time I checked in March 2024

@stonebrakert6
Copy link
Author

stonebrakert6 commented Oct 8, 2024

Since it was working 6 months ago, I thought may be upgrading bazel caused this(bazelisk automatically upgrades bazel)
Hence
Fixed this by downgrading bazel(to a random value - no binary search was done) by adding a file .bazelversion in the repo with the following content

7.1.0
# NOTE: 8 Oct 2024, refresh_compile_commands are failing, hence downgrading bazel

This fixed the problem. Don't know what to make of it.
[UPDATE]
I did some binary search and seems like 7.1.2 is the last working version. Issue started with 7.2.0rc1
I believe the issue was reported #199 and may be fixed by #219

@xFile3160
Copy link

@stonebrakert6 I confirm #219 fixes the issue with gtest #218

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

No branches or pull requests

2 participants