Make top-level rules usable with Bazel's `layering_check`
Bazel enforces "Header inclusion rules": https://bazel.build/reference/be/c-cpp#hdrs
When the layering_check feature is enabled, none of the top-level targets are usable. They have no hdrs value:
https://github.com/googleapis/google-cloud-cpp/blob/8ecdff6cd9ad79e2b2b847edd83205fb8ae65071/BUILD.bazel#L79-L87
- [x] I think we need to change the code to something like:
[cc_library(
name = "{library}".format(library = library),
hdrs = ["//google/cloud/{dir}:hdrs".format(dir=google_cloud_cpp_library_dir_name(library)],
deps = [
"//google/cloud/{library_dir}:google_cloud_cpp_{library}".format(
library = library,
library_dir = google_cloud_cpp_library_dir_name(library),
),
],
) for library in GA_LIBRARIES + TRANSITION_LIBRARIES]
- [x] Verify all libraries, specially the hand-crafted libraries, have a
filegroupdefined for the headers. - [x] It might be desirable to remove anything with
/internal/in the name from thisfilegrouptoo. - [ ] We should enable
layering_checkin the package once this is working - [ ] We should verify the
quickstartprograms compile withlayering_checkonce this is working
We need to wait until gRPC compiles clean with layering_check enabled before turning this on in our package.
Still waiting on our dependencies to function with layering_check enabled.
See if https://github.com/grpc/grpc/issues/34482 being closed has made grpc work with layering_check