Skip to content

Commit

Permalink
Switch to hedronvision/bazel-compile-commands for compilation db.
Browse files Browse the repository at this point in the history
The grailbio/bazel-compilation-database only works for non-bzlmod
while hedronvision works for old and new bazel.

It is slower and more invasive (creating unwanted links and adds
things to .git), so mostly reluctant change for now.
  • Loading branch information
hzeller committed Sep 28, 2024
1 parent d7bc159 commit 76ec1a0
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 46 deletions.
14 changes: 1 addition & 13 deletions .github/bin/make-compilation-db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.

set -u
set -e

readonly OUTPUT_BASE="$(bazel info output_base)"

readonly COMPDB_SCRIPT="${OUTPUT_BASE}/external/rules_compdb/generate.py"
[ -r "${COMPDB_SCRIPT}" ] || bazel fetch ...

python3 "${COMPDB_SCRIPT}"

# Remove a flags observed in the wild that clang-tidy doesn't understand.
sed -i -e 's/-fno-canonical-system-headers//g; s/DEBUG_PREFIX_MAP_PWD=.//g' \
compile_commands.json
bazel run @hedron_compile_commands//:refresh_all
2 changes: 1 addition & 1 deletion .github/bin/run-clang-format.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ find . -name "*.h" -o -name "*.cc" \
# If we have buildifier installed, use that on BUILD files
if command -v ${BUILDIFIER} >/dev/null; then
echo "Run $(buildifier --version)"
${BUILDIFIER} -lint=fix WORKSPACE $(find . -name BUILD -o -name "*.bzl")
${BUILDIFIER} -lint=fix WORKSPACE* MODULE.bazel $(find . -name BUILD -o -name "*.bzl")
fi

# Check if we got any diff
Expand Down
15 changes: 13 additions & 2 deletions .github/workflows/verible-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,19 @@ jobs:
path: |
/root/.cache/clang-tidy
/root/.cache/bazel
key: clang-tidy-${{ steps.cache_timestamp.outputs.time }}
restore-keys: clang-tidy-
key: clang-tidy-2-${{ steps.cache_timestamp.outputs.time }}
restore-keys: clang-tidy-2-

- name: Build generated files
run: |
bazel build //common/lsp:jcxxgen-testfile-gen \
//common/lsp:lsp-protocol-gen \
//common/util:version-header \
//verilog/CST:verilog-nonterminals-foreach-gen \
//verilog/parser:verilog-parse-interface \
//verilog/parser:gen-verilog-token-enum \
//third_party/proto/kythe:storage_cc_proto \
//third_party/proto/kythe:analysis_cc_proto
- name: Run clang tidy
run: |
Expand Down
33 changes: 23 additions & 10 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -4,74 +4,87 @@ module(

bazel_dep(name = "platforms", version = "0.0.8")
bazel_dep(name = "bazel_skylib", version = "1.5.0")

bazel_dep(name = "rules_license", version = "0.0.8")
bazel_dep(name = "rules_proto", version = "6.0.0-rc2")
bazel_dep(name = "rules_cc", version = "0.0.9")

# Register m4 rules and toolchain.
bazel_dep(name = "rules_m4", version = "0.2.3")

m4 = use_extension(
"@rules_m4//m4/extensions:m4_repository_ext.bzl",
"m4_repository_ext",
)
m4.repository(
name = "m4",
version = "1.4.18",
extra_copts = ["-O3"],
version = "1.4.18",
)
use_repo(m4, "m4")

register_toolchains("@m4//:toolchain")

# Register bison rules and toolchain.
bazel_dep(name = "rules_bison", version = "0.2.2")

bison = use_extension(
"@rules_bison//bison/extensions:bison_repository_ext.bzl",
"bison_repository_ext",
)
bison.repository(
name = "bison",
version = "3.3.2",
extra_copts = ["-O3"],
version = "3.3.2",
)
use_repo(bison, "bison")

register_toolchains("@bison//:toolchain")

# Register flex rules and toolchain.
bazel_dep(name = "rules_flex", version = "0.2.1")

flex = use_extension(
"@rules_flex//flex/extensions:flex_repository_ext.bzl",
"flex_repository_ext",
)
flex.repository(
name = "flex",
version = "2.6.4",
extra_copts = ["-O3"],
version = "2.6.4",
)
use_repo(flex, "flex")

register_toolchains("@flex//:toolchain")

# abseil-cpp can not be updated beyond the following curringly, as newer
# ones use googletest that is not compatible with bazel 6 anymore.
bazel_dep(name = "abseil-cpp", version = "20240116.2", repo_name="com_google_absl")
bazel_dep(name = "abseil-cpp", version = "20240116.2", repo_name = "com_google_absl")
single_version_override(
module_name = "abseil-cpp",
patch_strip = 1,
version = "20240116.2",
patches = ["//bazel:absl.patch"],
version = "20240116.2",
)

# Json module only provide the multi-header target, but that will
# make misc-inlude-cleaner complain about not direct includes.
bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name="jsonhpp")
bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "jsonhpp")
single_version_override(
module_name = "nlohmann_json",
patches = ["//bazel:nlohmann_module.patch"],
)

bazel_dep(name = "re2", version = "2023-09-01", repo_name="com_googlesource_code_re2")
bazel_dep(name = "re2", version = "2023-09-01", repo_name = "com_googlesource_code_re2")

# Newer versions require bazel 7, so this is the last we can use currently.
bazel_dep(name = "googletest", version = "1.14.0.bcr.1", repo_name="com_google_googletest")
bazel_dep(name = "protobuf", version = "26.0", repo_name="com_google_protobuf")
bazel_dep(name = "googletest", version = "1.14.0.bcr.1", repo_name = "com_google_googletest")
bazel_dep(name = "protobuf", version = "26.0", repo_name = "com_google_protobuf")
bazel_dep(name = "zlib", version = "1.3.1")

# Make compilation DB
bazel_dep(name = "hedron_compile_commands", dev_dependency = True)
git_override(
module_name = "hedron_compile_commands",
commit = "1e08f8e0507b6b6b1f4416a9a22cf5c28beaba93",
remote = "https://github.com/hedronvision/bazel-compile-commands-extractor.git",
)
28 changes: 21 additions & 7 deletions WORKSPACE
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Legacy workspace for bazel5. Will go away.
workspace(name = "com_google_verible")

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
Expand Down Expand Up @@ -177,14 +178,27 @@ http_archive(
],
)

# 2024-02-06
# Hedron's Compile Commands Extractor for Bazel
# https://github.com/hedronvision/bazel-compile-commands-extractor
http_archive(
name = "rules_compdb",
sha256 = "70232adda61e89a4192be43b4719d35316ed7159466d0ab4f3da0ecb1fbf00b2",
strip_prefix = "bazel-compilation-database-fa872dd80742b3dccd79a711f52f286cbde33676",
urls = ["https://github.com/grailbio/bazel-compilation-database/archive/fa872dd80742b3dccd79a711f52f286cbde33676.tar.gz"],
name = "hedron_compile_commands",
sha256 = "044b148b111e17cee61d8c3aaeed42069f7325460382340afca4919f8265094c",
strip_prefix = "bazel-compile-commands-extractor-1e08f8e0507b6b6b1f4416a9a22cf5c28beaba93",
url = "https://github.com/hedronvision/bazel-compile-commands-extractor/archive/1e08f8e0507b6b6b1f4416a9a22cf5c28beaba93.tar.gz",
)

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

rules_compdb_deps()
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()
13 changes: 0 additions & 13 deletions WORKSPACE.bzlmod
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
workspace(name = "com_google_verible")

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

#
# External tools needed
Expand All @@ -27,15 +26,3 @@ install_rules_dependencies()
load("@com_github_google_rules_install//:setup.bzl", "install_rules_setup")

install_rules_setup()

# 2024-02-06
http_archive(
name = "rules_compdb",
sha256 = "70232adda61e89a4192be43b4719d35316ed7159466d0ab4f3da0ecb1fbf00b2",
strip_prefix = "bazel-compilation-database-fa872dd80742b3dccd79a711f52f286cbde33676",
urls = ["https://github.com/grailbio/bazel-compilation-database/archive/fa872dd80742b3dccd79a711f52f286cbde33676.tar.gz"],
)

load("@rules_compdb//:deps.bzl", "rules_compdb_deps")

rules_compdb_deps()

0 comments on commit 76ec1a0

Please sign in to comment.