google-cloud-cpp icon indicating copy to clipboard operation
google-cloud-cpp copied to clipboard

Make top-level rules usable with Bazel's `layering_check`

Open coryan opened this issue 2 years ago • 3 comments

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 filegroup defined for the headers.
  • [x] It might be desirable to remove anything with /internal/ in the name from this filegroup too.
  • [ ] We should enable layering_check in the package once this is working
  • [ ] We should verify the quickstart programs compile with layering_check once this is working

coryan avatar Sep 28 '23 22:09 coryan

We need to wait until gRPC compiles clean with layering_check enabled before turning this on in our package.

coryan avatar Sep 29 '23 18:09 coryan

Still waiting on our dependencies to function with layering_check enabled.

scotthart avatar Mar 27 '24 19:03 scotthart

See if https://github.com/grpc/grpc/issues/34482 being closed has made grpc work with layering_check

scotthart avatar Sep 19 '24 18:09 scotthart