aws/aws-sdk-cpp

Missing includes

Opened this issue · 3 comments

Describe the bug

I am working on bazel build rules for some aws sdk libraries; bazel is more strict about includes than cmake.
These files are missing includes, which causes errors.

  • aws-cpp-sdk-core/include/aws/core/NoResult.h
  • aws-cpp-sdk-core/include/aws/core/utils/stream/StreamBufProtectedWriter.h
  • aws-cpp-sdk-core/include/aws/core/monitoring/MonitoringFactory.h
  • aws-cpp-sdk-core/include/aws/core/Globals.h
  • aws-cpp-sdk-core/include/aws/core/utils/event/EventStreamEncoder.h

Expected Behavior

No errors.

Current Behavior

Errors on missing includes.

Reproduction Steps

Add BUILD.bazel rules and build.

Possible Solution

  • aws-cpp-sdk-core/include/aws/core/NoResult.h
#include <aws/core/AmazonWebServiceResult.h>
  • aws-cpp-sdk-core/include/aws/core/utils/stream/StreamBufProtectedWriter.h
#include <cstdint>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/logging/LogMacros.h>
  • aws-cpp-sdk-core/include/aws/core/monitoring/MonitoringFactory.h
include <aws/core/utils/memory/AWSMemory.h>
  • aws-cpp-sdk-core/include/aws/core/Globals.h
#include <memory>
  • aws-cpp-sdk-core/include/aws/core/utils/event/EventStreamEncoder.h
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/core/utils/event/EventMessage.h>

Additional Information/Context

No response

AWS CPP SDK version used

67f1aae

Compiler and Version used

clang

Operating System and version

linux

Hi @laramiel,

I made a PR with your suggested changes here. If this passes all of the tests then we can merge it. We currently don't have any integration tests for bazel and we don't have any plans to add them anytime soon. That being said if you run into any other missing includes please let us know.

How are you trying to build this sdk within bazel? Can you share a minimal bazel build files that reproduce the missing includes?

Sure, I'll try and get that available at some point. For now, this is a variant of a pull request that we received in tensorstore, but updated to use repositories at github head: google/tensorstore#149

My current attempt includes these repositories:

https://github.com/awslabs/aws-c-sdkutils
https://github.com/awslabs/aws-checksums
https://github.com/awslabs/aws-c-cal
https://github.com/awslabs/aws-c-compression
https://github.com/aws/s2n-tls
https://github.com/awslabs/aws-c-common
https://github.com/awslabs/aws-c-event-stream
https://github.com/awslabs/aws-c-http
https://github.com/awslabs/aws-c-s3
https://github.com/awslabs/aws-c-auth
https://github.com/awslabs/aws-c-mqtt
https://github.com/awslabs/aws-c-io
https://github.com/awslabs/aws-crt-cpp
https://github.com/aws/aws-sdk-cpp

Only a subset of the aws-sdk-cpp repositories are included in the build, and ,ost of the BAZEL.build files are pretty simple, something like:

cc_library(
    name = "aws_c_compression",
    srcs = glob(
        include = [
            "source/*.c",
        ],
        exclude = ["source/huffman_testing.c"],
    ),
    hdrs = glob([
        "include/aws/compression/*.h",
    ]),
    includes = ["include/"],
    deps = [ "@aws_c_common//:aws_c_common" ],
)