aws / aws-sdk-cpp

AWS SDK for C++
Apache License 2.0
1.91k stars 1.04k forks source link

Missing includes #3002

Open laramiel opened 2 weeks ago

laramiel commented 2 weeks ago

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.

Expected Behavior

No errors.

Current Behavior

Errors on missing includes.

Reproduction Steps

Add BUILD.bazel rules and build.

Possible Solution

#include <aws/core/AmazonWebServiceResult.h>
#include <cstdint>
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
#include <aws/core/utils/logging/LogMacros.h>
include <aws/core/utils/memory/AWSMemory.h>

Additional Information/Context

No response

AWS CPP SDK version used

67f1aae9c821f8ed061a89423741a16a4723d018

Compiler and Version used

clang

Operating System and version

linux

jmklix commented 1 week ago

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.

jmklix commented 1 week ago

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

laramiel commented 1 week ago

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: https://github.com/google/tensorstore/pull/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" ],
)