aws / aws-sdk-cpp

AWS SDK for C++
Apache License 2.0
1.97k stars 1.06k forks source link

CodeDeployClient.h: No such file or directory while bulilding on Ubuntu 14.10 #3

Closed hemantmits closed 9 years ago

hemantmits commented 9 years ago

I am getting following error while building on Ubuntu 14.10.

aws-sdk-cpp/aws-cpp-sdk-codedeploy/source/codedeployClient.cpp:26:45: fatal error: aws/codedeploy/CodeDeployClient.h: No such file or directory

I cant find CodeDeployClient.h anywhere. Am I missing some build dependency ? I think its related to issue https://github.com/awslabs/aws-sdk-cpp/issues/1

JonathanHenson commented 9 years ago

It looks like a bug I had thought we had fixed is still there. If you look at the source you'll see that the file is there but the capitilization is wrong. This certainly breaks case-sensitive unix builds. I'll get a fix in asap. Sorry for the inconvenience. In the meantime, you can exclude that directory from your build or change the #include statement to point to the correct file.

On Wed, Sep 2, 2015 at 10:41 PM, Hemant Jain notifications@github.com wrote:

I am getting following error while building on Ubuntu 14.10.

aws-sdk-cpp/aws-cpp-sdk-codedeploy/source/codedeployClient.cpp:26:45: fatal error: aws/codedeploy/CodeDeployClient.h: No such file or directory

I cant find CodeDeployClient.h anywhere. Am I missing some build dependency ?

— Reply to this email directly or view it on GitHub https://github.com/awslabs/aws-sdk-cpp/issues/3.

"The poet only asks to get his head into the heavens. It is the logician who seeks to get the heavens into his head. And it is his head that splits" --G. K. Chesterton-- "Orthodoxy"

hemantmits commented 9 years ago

I am able to build it after disabling few more targets.

diff --git a/CMakeLists.txt b/CMakeLists.txt index 61ddf90..cecbbb6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt

@@ -379,9 +379,9 @@ add_subdirectory(aws-cpp-sdk-elasticloadbalancing) add_subdirectory(aws-cpp-sdk-opsworks) add_subdirectory(aws-cpp-sdk-cloudfront) add_subdirectory(aws-cpp-sdk-kms) -add_subdirectory(aws-cpp-sdk-codedeploy) +#add_subdirectory(aws-cpp-sdk-codedeploy) add_subdirectory(aws-cpp-sdk-redshift) -add_subdirectory(aws-cpp-sdk-iam) +#add_subdirectory(aws-cpp-sdk-iam) add_subdirectory(aws-cpp-sdk-ecs) add_subdirectory(aws-cpp-sdk-datapipeline) add_subdirectory(aws-cpp-sdk-glacier) @@ -398,7 +398,7 @@ add_subdirectory(aws-cpp-sdk-sns) add_subdirectory(aws-cpp-sdk-autoscaling) add_subdirectory(aws-cpp-sdk-cloudformation) add_subdirectory(aws-cpp-sdk-rds) -add_subdirectory(aws-cpp-sdk-access-management) +#add_subdirectory(aws-cpp-sdk-access-management) add_subdirectory(aws-cpp-sdk-transfer) add_subdirectory(aws-cpp-sdk-queues)

@@ -414,9 +414,9 @@ if(PLATFORM_ANDROID) else() add_subdirectory(aws-cpp-sdk-core-tests) add_subdirectory(aws-cpp-sdk-dynamodb-integration-tests) -add_subdirectory(aws-cpp-sdk-cognitoidentity-integration-tests) -add_subdirectory(aws-cpp-sdk-sqs-integration-tests) -add_subdirectory(aws-cpp-sdk-lambda-integration-tests) +#add_subdirectory(aws-cpp-sdk-cognitoidentity-integration-tests) +#add_subdirectory(aws-cpp-sdk-sqs-integration-tests) +#add_subdirectory(aws-cpp-sdk-lambda-integration-tests) add_subdirectory(aws-cpp-sdk-s3-integration-tests) add_subdirectory(aws-cpp-sdk-identity-management-tests) add_subdirectory(aws-cpp-sdk-cloudfront-integration-tests)

JonathanHenson commented 9 years ago

this should not be necessary at all, other than the code deploy update. Please post the output of

g++ --version

JonathanHenson commented 9 years ago

The default g++ on Ubuntu 14.04 is currently 4.8.2, which will not work. You have to do a backport and upgrade to 4.9.x on ubuntu 14.04. After this, if you still have problems, could you post the compiler output?

JonathanHenson commented 9 years ago

Also, I've confirmed that the bug has been fixed in our master branch internally. I'm not sure what happened with our export process but I'll be sending that out again shortly. I'm sorry for the inconvenience and I'll hopefully get this resolved for you today.

JonathanHenson commented 9 years ago

Ok.... I've found the problem. Git on Mac OSX, the machine I do the export from, is not case sensitive, so it did not pick up the rename.

JonathanHenson commented 9 years ago

git config --local -l core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.ignorecase=true core.precomposeunicode=true remote.origin.url=https://github.com/awslabs/aws-sdk-cpp.git remote.origin.fetch=+refs/heads/:refs/remotes/origin/ branch.master.remote=origin branch.master.merge=refs/heads/master

core.ignorecase=true herein lies the problem. Whoever made this the default should be taken out back and given a good talking to. ;)

JonathanHenson commented 9 years ago

3eed2f2ec10a906b90a46d9755ec5de2989bc784

Try it now. Also my guess is that the reason you had to comment out the source that you did was because IAM wasn't compiling and most of the integration tests depend on IAM (to pull account id).

One thing I will advise though, is regex is not fully implemented until g++ 4.9.x so you will likely receive a segfault anytime you call GetAccountId() on access-management until you update your compiler.

As far as I know everything compiles properly on 4.8.2, but there are some hidden dragons in the regex implementation on that version.

hemantmits commented 9 years ago

hey Jonathan,

Thanks for your help. I am doing a build with latest code. Will update about results soon.

btw I am using g++ 4.9.1 g++ (Ubuntu 4.9.1-16ubuntu6) 4.9.1 you are right about IAM.

hemantmits commented 9 years ago

All case related errors are gone now. Just one last build issue. Following warning is causing build failure : src/aws-sdk-cpp/aws-cpp-sdk-transfer/source/transfer/UploadFileRequest.cpp: In lambda function: src/aws-sdk-cpp/aws-cpp-sdk-transfer/source/transfer/UploadFileRequest.cpp:927:263: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] auto entryIter = std::find_if(listObjectsOutcome.GetResult().GetContents().cbegin(), listObjectsOutcome.GetResult().GetContents().cend(), [&](const Aws::S3::Model::Object& thisObject) { return (thisObject.GetKey() == GetKeyName() && thisObject.GetSize() == GetFileSize()); }); ^ At global scope: cc1plus: error: unrecognized command line option "-Wno-unused-private-field" [-Werror] cc1plus: all warnings being treated as errors

changing uint64_t to long long fixed this issue( m_fileSize is of long long type in all other source files):

diff --git a/aws-cpp-sdk-transfer/include/aws/transfer/S3FileRequest.h b/aws-cpp-sdk-transfer/include/aws/transfer/S3FileRequest.h index 71fba2d..9669277 100644 --- a/aws-cpp-sdk-transfer/include/aws/transfer/S3FileRequest.h +++ b/aws-cpp-sdk-transfer/include/aws/transfer/S3FileRequest.h @@ -69,7 +69,7 @@ public: virtual bool IsReady() const = 0;

 // For uploads, look at the file on disk, for downloads, request content manifest from S3

-inline virtual uint64_t GetFileSize() const { return m_fileSize; } +inline virtual long long GetFileSize() const { return m_fileSize; }

 uint64_t GetProgressAmount() const;

protected:

hemantmits commented 9 years ago

you can close this case.