Skip to content

Commit

Permalink
[bazel] Patch rules_foreign_cc to clean build logs
Browse files Browse the repository at this point in the history
Move rules_foreign_cc from the root MODULE.bazel to its own
`third_party/foreign_cc` directory so that we can patch it to fix an
issue that has not yet been supported upstream yet, in the same way as
we do for e.g. `rules_rust`.

When `rules_foreign_cc` builds using tools such as e.g. Configure+Make,
output files Configure.log and BootstrapGNUMake.log are generated and
emitted which contain references to the absolute path. When building
inside Bazel's sandbox, this produces a non-determinstic output which
changes between each run, preventing builds of openocd from being
cached. The OpenOCD binary defined as an execution environment
attribute, and so will be built when running tests, stopping FPGA test
results from being cached when they should be.

To fix this, this PR introduces a simple patch to completely remove this
logging output, as it is not needed by any later steps as part of the
build.

Signed-off-by: Alex Jones <[email protected]>
  • Loading branch information
AlexJones0 committed Jan 9, 2025
1 parent 20c4fb3 commit 184e3b4
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 1 deletion.
3 changes: 2 additions & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
bazel_dep(name = "platforms", version = "0.0.10")
bazel_dep(name = "rules_cc", version = "0.0.14")
bazel_dep(name = "rules_foreign_cc", version = "0.9.0")
bazel_dep(name = "rules_fuzzing", version = "0.5.2")
bazel_dep(name = "rules_pkg", version = "1.0.1")

Expand All @@ -35,6 +34,8 @@ include("//third_party/rust:rust.MODULE.bazel")

include("//third_party/python:python.MODULE.bazel")

include("//third_party/foreign_cc:foreign_cc.MODULE.bazel")

# Repository rules:
bitstreams_repo = use_repo_rule("//rules:bitstreams.bzl", "bitstreams_repo")

Expand Down
5 changes: 5 additions & 0 deletions third_party/foreign_cc/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright lowRISC contributors (OpenTitan project).
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

package(default_visibility = ["//visibility:public"])
15 changes: 15 additions & 0 deletions third_party/foreign_cc/foreign_cc.MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright lowRISC contributors (OpenTitan project).
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Dependencies:
bazel_dep(name = "rules_foreign_cc", version = "0.9.0")

# Overrides and patches:
single_version_override(
module_name = "rules_foreign_cc",
patches = [
"//third_party/foreign_cc/patches:rules_foreign_cc.remove_log_output.patch",
],
version = "0.9.0",
)
5 changes: 5 additions & 0 deletions third_party/foreign_cc/patches/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright lowRISC contributors (OpenTitan project).
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

package(default_visibility = ["//visibility:public"])
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git foreign_cc/private/framework.bzl foreign_cc/private/framework.bzl
index c84c217..f43da2c 100644
--- foreign_cc/private/framework.bzl
+++ foreign_cc/private/framework.bzl
@@ -561,7 +561,7 @@ def wrap_outputs(ctx, lib_name, configure_name, script_text, build_script_file =
cleanup_on_success_function = create_function(
ctx,
"cleanup_on_success",
- "rm -rf $BUILD_TMPDIR $EXT_BUILD_DEPS",
+ "rm -rf $BUILD_TMPDIR $EXT_BUILD_DEPS && echo > $BUILD_LOG",
)
cleanup_on_failure_function = create_function(
ctx,

0 comments on commit 184e3b4

Please sign in to comment.