chore: ensure we don't try to compile any C++ code (#16)
* chore: ensure we don't try to compile any C++ code
We don't have any C++ code in this repo, and want to make sure that our examples don't transitively depend on building protoc from source.
* Update MODULE.bazel
Co-authored-by: Fabian Meumertzheim <fabian@meumertzhe.im>
* Disable CGo (#17)
* chore: buildifier
---------
Co-authored-by: Fabian Meumertzheim <fabian@meumertzhe.im>
diff --git a/.bazelrc b/.bazelrc
index 23cb3d5..3c13c42 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -14,6 +14,9 @@
# https://bazelbuild.slack.com/archives/C014RARENH0/p1691158021917459?thread_ts=1691156601.420349&cid=C014RARENH0
common --check_direct_dependencies=off
+# Force rules_go to disable CGO even though we have a (fake) C++ toolchain registered.
+common --host_platform=//:no_cgo_host_platform
+
# Load any settings specific to the current user.
# .bazelrc.user should appear in .gitignore so that settings are not shared with team members
# This needs to be last statement in this
diff --git a/BUILD.bazel b/BUILD.bazel
index e69de29..60d5013 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -0,0 +1,8 @@
+load("@platforms//host:constraints.bzl", "HOST_CONSTRAINTS")
+
+platform(
+ name = "no_cgo_host_platform",
+ constraint_values = HOST_CONSTRAINTS + [
+ "@rules_go//go/toolchain:cgo_off",
+ ],
+)
diff --git a/MODULE.bazel b/MODULE.bazel
index fe07dfa..a269d64 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -9,7 +9,7 @@
bazel_dep(name = "bazel_features", version = "1.9.0")
bazel_dep(name = "bazel_skylib", version = "1.4.1")
bazel_dep(name = "rules_proto", version = "6.0.0")
-bazel_dep(name = "platforms", version = "0.0.8")
+bazel_dep(name = "platforms", version = "0.0.10")
protoc = use_extension("//protoc:extensions.bzl", "protoc")
protoc.toolchain(
@@ -20,6 +20,12 @@
register_toolchains("@toolchains_protoc_hub//:all")
+# Assert no CC compilation occurs
+register_toolchains(
+ "//tools/toolchains:all",
+ dev_dependency = True,
+)
+
bazel_dep(name = "aspect_bazel_lib", version = "1.32.1", dev_dependency = True)
bazel_dep(name = "buildifier_prebuilt", version = "6.1.2", dev_dependency = True)
bazel_dep(name = "aspect_rules_py", version = "0.7.1", dev_dependency = True)
diff --git a/tools/toolchains/BUILD.bazel b/tools/toolchains/BUILD.bazel
new file mode 100644
index 0000000..eecadd0
--- /dev/null
+++ b/tools/toolchains/BUILD.bazel
@@ -0,0 +1,31 @@
+"""Define a non-functional cc toolchain.
+
+To fail-fast in cases where we are forced to compile third-party C++ code,
+define a cc toolchain that doesn't work, by using 'false' as the compiler.
+See https://bazel.build/tutorials/ccp-toolchain-config
+"""
+
+load("defs.bzl", "cc_toolchain_config")
+
+filegroup(name = "empty")
+
+cc_toolchain_config(name = "noop_toolchain_config")
+
+cc_toolchain(
+ name = "noop_toolchain",
+ all_files = ":empty",
+ compiler_files = ":empty",
+ dwp_files = ":empty",
+ linker_files = ":empty",
+ objcopy_files = ":empty",
+ strip_files = ":empty",
+ supports_param_files = 0,
+ toolchain_config = ":noop_toolchain_config",
+ toolchain_identifier = "noop-toolchain",
+)
+
+toolchain(
+ name = "cc_toolchain",
+ toolchain = ":noop_toolchain",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
diff --git a/tools/toolchains/defs.bzl b/tools/toolchains/defs.bzl
new file mode 100644
index 0000000..4aeee59
--- /dev/null
+++ b/tools/toolchains/defs.bzl
@@ -0,0 +1,20 @@
+"Configure a cc toolchain to call 'false' if used."
+
+def _impl(ctx):
+ return cc_common.create_cc_toolchain_config_info(
+ ctx = ctx,
+ toolchain_identifier = "noop-toolchain",
+ host_system_name = "local",
+ target_system_name = "local",
+ target_cpu = "k8",
+ target_libc = "unknown",
+ compiler = "false",
+ abi_version = "unknown",
+ abi_libc_version = "unknown",
+ )
+
+cc_toolchain_config = rule(
+ implementation = _impl,
+ attrs = {},
+ provides = [CcToolchainConfigInfo],
+)