Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building with AWS SDK for C++ support #1

Closed
0mp opened this issue Nov 25, 2019 · 4 comments
Closed

Building with AWS SDK for C++ support #1

0mp opened this issue Nov 25, 2019 · 4 comments
Labels
bug Something isn't working

Comments

@0mp
Copy link
Owner

0mp commented Nov 25, 2019

Adding aws-sdk-cpp>0:devel/aws-sdk-cpp to BUILD_DEPENDS results in the following compilation errors:

  CXX    src/libstore/s3-binary-cache-store.o
src/libstore/s3-binary-cache-store.cc:57:26: error: no matching function for call to 'chomp'
        debug("AWS: %s", chomp(statement));
                         ^~~~~
src/libutil/logging.hh:157:43: note: expanded from macro 'debug'
#define debug(args...) printMsg(lvlDebug, args)
                                          ^~~~
src/libutil/logging.hh:150:36: note: expanded from macro 'printMsg'
            logger->log(level, fmt(args)); \
                                   ^~~~
src/libutil/util.hh:353:8: note: candidate function not viable: no known conversion from 'basic_string<[2 * ...],
      Aws::Allocator<char>>' to 'const basic_string<[2 * ...], allocator<char>>' for 1st argument
string chomp(const string & s);
       ^
src/libstore/s3-binary-cache-store.cc:142:10: error: no matching member function for call to 'WithBucket'
        .WithBucket(bucketName)
        ~^~~~~~~~~~
/usr/local/include/aws/s3/model/GetObjectRequest.h:84:30: note: candidate function not viable: no known conversion
      from 'const basic_string<[2 * ...], allocator<char>>' to 'const basic_string<[2 * ...],
      Aws::Allocator<char>>' for 1st argument
    inline GetObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
                             ^
/usr/local/include/aws/s3/model/GetObjectRequest.h:89:30: note: candidate function not viable: no known conversion
      from 'const basic_string<[2 * ...], allocator<char>>' to
      'basic_string<[2 * ...], Aws::Allocator<char>>' for 1st argument
    inline GetObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
                             ^
/usr/local/include/aws/s3/model/GetObjectRequest.h:94:30: note: candidate function not viable: no known conversion
      from 'const std::string' (aka 'const basic_string<char, char_traits<char>, allocator<char> >') to
      'const char *' for 1st argument
    inline GetObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
                             ^
src/libstore/s3-binary-cache-store.cc:241:14: error: no matching member function for call to 'WithBucket'
            .WithBucket(bucketName)
            ~^~~~~~~~~~
/usr/local/include/aws/s3/model/HeadObjectRequest.h:84:31: note: candidate function not viable: no known conversion
      from 'basic_string<[2 * ...], allocator<char>>' to
      'const basic_string<[2 * ...], Aws::Allocator<char>>' for 1st argument
    inline HeadObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
                              ^
/usr/local/include/aws/s3/model/HeadObjectRequest.h:89:31: note: candidate function not viable: no known conversion
      from 'basic_string<[2 * ...], allocator<char>>' to 'basic_string<[2 * ...], Aws::Allocator<char>>' for
      1st argument
    inline HeadObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
                              ^
/usr/local/include/aws/s3/model/HeadObjectRequest.h:94:31: note: candidate function not viable: no known conversion
      from 'std::string' (aka 'basic_string<char, char_traits<char>, allocator<char> >') to 'const char *' for 1st
      argument
    inline HeadObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
                              ^
src/libstore/s3-binary-cache-store.cc:304:34: error: no matching member function for call to 'UploadFile'
                transferManager->UploadFile(
                ~~~~~~~~~~~~~~~~~^~~~~~~~~~
/usr/local/include/aws/transfer/TransferManager.h:150:45: note: candidate function not viable: no known conversion
      from 'basic_string<[2 * ...], allocator<char>>' to
      'const basic_string<[2 * ...], Aws::Allocator<char>>' for 2nd argument
            std::shared_ptr<TransferHandle> UploadFile(const std::shared_ptr<Aws::IOStream>& stream,
                                            ^
/usr/local/include/aws/transfer/TransferManager.h:139:45: note: candidate function not viable: no known conversion
      from 'std::__1::shared_ptr<basic_istringstream_nocopy<char, std::__1::char_traits<char>,
      std::__1::allocator<char> > >' to 'const Aws::String' (aka 'const basic_string<char, std::char_traits<char>,
      Aws::Allocator<char> >') for 1st argument
            std::shared_ptr<TransferHandle> UploadFile(const Aws::String& fileName,
                                            ^
src/libstore/s3-binary-cache-store.cc:323:18: error: no matching member function for call to 'WithBucket'
                .WithBucket(bucketName)
                ~^~~~~~~~~~
/usr/local/include/aws/s3/model/PutObjectRequest.h:119:30: note: candidate function not viable: no known conversion
      from 'basic_string<[2 * ...], allocator<char>>' to
      'const basic_string<[2 * ...], Aws::Allocator<char>>' for 1st argument
    inline PutObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
                             ^
/usr/local/include/aws/s3/model/PutObjectRequest.h:124:30: note: candidate function not viable: no known conversion
      from 'basic_string<[2 * ...], allocator<char>>' to 'basic_string<[2 * ...], Aws::Allocator<char>>' for
      1st argument
    inline PutObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
                             ^
/usr/local/include/aws/s3/model/PutObjectRequest.h:129:30: note: candidate function not viable: no known conversion
      from 'std::string' (aka 'basic_string<char, char_traits<char>, allocator<char> >') to 'const char *' for 1st
      argument
    inline PutObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
                             ^
src/libstore/s3-binary-cache-store.cc:396:22: error: no matching member function for call to 'WithBucket'
                    .WithBucket(bucketName)
                    ~^~~~~~~~~~
/usr/local/include/aws/s3/model/ListObjectsRequest.h:84:32: note: candidate function not viable: no known
      conversion from 'basic_string<[2 * ...], allocator<char>>' to 'const basic_string<[2 * ...],
      Aws::Allocator<char>>' for 1st argument
    inline ListObjectsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
                               ^
/usr/local/include/aws/s3/model/ListObjectsRequest.h:89:32: note: candidate function not viable: no known
      conversion from 'basic_string<[2 * ...], allocator<char>>' to 'basic_string<[2 * ...],
      Aws::Allocator<char>>' for 1st argument
    inline ListObjectsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
                               ^
/usr/local/include/aws/s3/model/ListObjectsRequest.h:94:32: note: candidate function not viable: no known
      conversion from 'std::string' (aka 'basic_string<char, char_traits<char>, allocator<char> >') to
      'const char *' for 1st argument
    inline ListObjectsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
                               ^
  CXX    src/libmain/shared.o
In file included from src/libstore/s3-binary-cache-store.cc:3:
In file included from src/libstore/s3.hh:5:
In file included from src/libutil/ref.hh:3:
/usr/include/c++/v1/memory:4325:5: error: static_assert failed due to requirement 'is_constructible<nix::AwsLogger,
      const Aws::Utils::Logging::LogLevel &>::value' "Can't construct object in make_shared"
    static_assert( is_constructible<_Tp, _Args...>::value, "Can't construct object in make_shared" );
    ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/v1/memory:4710:29: note: in instantiation of function template specialization
      'std::__1::shared_ptr<nix::AwsLogger>::make_shared<const Aws::Utils::Logging::LogLevel &>' requested here
    return shared_ptr<_Tp>::make_shared(_VSTD::forward<_Args>(__args)...);
                            ^
src/libstore/s3-binary-cache-store.cc:77:29: note: in instantiation of function template specialization
      'std::__1::make_shared<nix::AwsLogger, const Aws::Utils::Logging::LogLevel &>' requested here
                return std::make_shared<AwsLogger>(options.loggingOptions.logLevel);
                            ^
In file included from src/libstore/s3-binary-cache-store.cc:3:
In file included from src/libstore/s3.hh:5:
In file included from src/libutil/ref.hh:3:
/usr/include/c++/v1/memory:2168:7: error: field type 'nix::AwsLogger' is an abstract class
  _Tp __value_;
      ^
/usr/include/c++/v1/memory:2212:35: note: in instantiation of template class
      'std::__1::__compressed_pair_elem<nix::AwsLogger, 1, false>' requested here
                          private __compressed_pair_elem<_T2, 1> {
                                  ^
/usr/include/c++/v1/memory:3661:36: note: in instantiation of template class
      'std::__1::__compressed_pair<std::__1::allocator<nix::AwsLogger>, nix::AwsLogger>' requested here
    __compressed_pair<_Alloc, _Tp> __data_;
                                   ^
/usr/include/c++/v1/memory:4331:26: note: in instantiation of template class
      'std::__1::__shared_ptr_emplace<nix::AwsLogger, std::__1::allocator<nix::AwsLogger> >' requested here
    ::new(__hold2.get()) _CntrlBlk(__a2, _VSTD::forward<_Args>(__args)...);
                         ^
/usr/include/c++/v1/memory:4710:29: note: in instantiation of function template specialization
      'std::__1::shared_ptr<nix::AwsLogger>::make_shared<const Aws::Utils::Logging::LogLevel &>' requested here
    return shared_ptr<_Tp>::make_shared(_VSTD::forward<_Args>(__args)...);
                            ^
src/libstore/s3-binary-cache-store.cc:77:29: note: in instantiation of function template specialization
      'std::__1::make_shared<nix::AwsLogger, const Aws::Utils::Logging::LogLevel &>' requested here
                return std::make_shared<AwsLogger>(options.loggingOptions.logLevel);
                            ^
/usr/local/include/aws/core/utils/logging/LogSystemInterface.h:56:30: note: unimplemented pure virtual method
      'Flush' in 'AwsLogger'
                virtual void Flush() = 0;
                             ^
In file included from src/libstore/s3-binary-cache-store.cc:3:
In file included from src/libstore/s3.hh:5:
In file included from src/libutil/ref.hh:3:
/usr/include/c++/v1/memory:4334:28: error: assigning to 'std::__1::__shared_weak_count *' from incompatible type
      'std::__1::unique_ptr<std::__1::__shared_ptr_emplace<nix::AwsLogger, std::__1::allocator<nix::AwsLogger> >,
      std::__1::__allocator_destructor<std::__1::allocator<std::__1::__shared_ptr_emplace<nix::AwsLogger,
      std::__1::allocator<nix::AwsLogger> > > > >::pointer' (aka 'std::__1::__shared_ptr_emplace<nix::AwsLogger,
      std::__1::allocator<nix::AwsLogger> > *')
    __r.__cntrl_ = __hold2.release();
                   ~~~~~~~~^~~~~~~~~
/usr/include/c++/v1/memory:4710:29: note: in instantiation of function template specialization
      'std::__1::shared_ptr<nix::AwsLogger>::make_shared<const Aws::Utils::Logging::LogLevel &>' requested here
    return shared_ptr<_Tp>::make_shared(_VSTD::forward<_Args>(__args)...);
                            ^
src/libstore/s3-binary-cache-store.cc:77:29: note: in instantiation of function template specialization
      'std::__1::make_shared<nix::AwsLogger, const Aws::Utils::Logging::LogLevel &>' requested here
                return std::make_shared<AwsLogger>(options.loggingOptions.logLevel);
                            ^
  CXX    src/libmain/stack.o
9 errors generated.
gmake[1]: *** [mk/patterns.mk:3: src/libstore/s3-binary-cache-store.o] Error 1
gmake[1]: *** Waiting for unfinished jobs....
gmake[1]: Leaving directory '/wrkdirs/usr/ports/sysutils/nix/work/nix-2.3.1'
===> Compilation failed unexpectedly.

@0mp 0mp added the bug Something isn't working label Nov 25, 2019
@0mp
Copy link
Owner Author

0mp commented Nov 25, 2019

Logs when building with GCC:

  CXX    src/libstore/s3-binary-cache-store.o
In file included from src/libutil/util.hh:4,
                 from src/libutil/serialise.hh:6,
                 from src/libutil/hash.hh:4,
                 from src/libstore/store-api.hh:3,
                 from src/libstore/binary-cache-store.hh:4,
                 from src/libstore/s3-binary-cache-store.hh:3,
                 from src/libstore/s3-binary-cache-store.cc:4:
src/libstore/s3-binary-cache-store.cc: In member function 'virtual void nix::AwsLogger::ProcessFormattedStatement(Aws::String&&)':
src/libstore/s3-binary-cache-store.cc:57:32: error: invalid initialization of reference of type 'const string&' {aka 'const std::__cxx11::basic_string<char>&'} from expression of type 'Aws::String' {aka 'std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >'}
   57 |         debug("AWS: %s", chomp(statement));
      |                                ^~~~~~~~~
src/libutil/logging.hh:150:36: note: in definition of macro 'printMsg'
  150 |             logger->log(level, fmt(args)); \
      |                                    ^~~~
src/libstore/s3-binary-cache-store.cc:57:9: note: in expansion of macro 'debug'
   57 |         debug("AWS: %s", chomp(statement));
      |         ^~~~~
In file included from src/libutil/serialise.hh:6,
                 from src/libutil/hash.hh:4,
                 from src/libstore/store-api.hh:3,
                 from src/libstore/binary-cache-store.hh:4,
                 from src/libstore/s3-binary-cache-store.hh:3,
                 from src/libstore/s3-binary-cache-store.cc:4:
src/libutil/util.hh:353:29: note: in passing argument 1 of 'std::string nix::chomp(const string&)'
  353 | string chomp(const string & s);
      |              ~~~~~~~~~~~~~~~^
src/libstore/s3-binary-cache-store.cc: In member function 'nix::S3Helper::DownloadResult nix::S3Helper::getObject(const string&, const string&)':
src/libstore/s3-binary-cache-store.cc:142:31: error: no matching function for call to 'Aws::S3::Model::GetObjectRequest::WithBucket(const string&)'
  142 |         .WithBucket(bucketName)
      |                               ^
In file included from src/libstore/s3-binary-cache-store.cc:22:
/usr/local/include/aws/s3/model/GetObjectRequest.h:84:30: note: candidate: 'Aws::S3::Model::GetObjectRequest& Aws::S3::Model::GetObjectRequest::WithBucket(const String&)'
   84 |     inline GetObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
      |                              ^~~~~~~~~~
/usr/local/include/aws/s3/model/GetObjectRequest.h:84:60: note:   no known conversion for argument 1 from 'const string' {aka 'const std::__cxx11::basic_string<char>'} to 'const String&' {aka 'const std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&'}
   84 |     inline GetObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
      |                                         ~~~~~~~~~~~~~~~~~~~^~~~~
/usr/local/include/aws/s3/model/GetObjectRequest.h:89:30: note: candidate: 'Aws::S3::Model::GetObjectRequest& Aws::S3::Model::GetObjectRequest::WithBucket(Aws::String&&)'
   89 |     inline GetObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
      |                              ^~~~~~~~~~
/usr/local/include/aws/s3/model/GetObjectRequest.h:89:55: note:   no known conversion for argument 1 from 'const string' {aka 'const std::__cxx11::basic_string<char>'} to 'Aws::String&&' {aka 'std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&&'}
   89 |     inline GetObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
      |                                         ~~~~~~~~~~~~~~^~~~~
/usr/local/include/aws/s3/model/GetObjectRequest.h:94:30: note: candidate: 'Aws::S3::Model::GetObjectRequest& Aws::S3::Model::GetObjectRequest::WithBucket(const char*)'
   94 |     inline GetObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
      |                              ^~~~~~~~~~
/usr/local/include/aws/s3/model/GetObjectRequest.h:94:53: note:   no known conversion for argument 1 from 'const string' {aka 'const std::__cxx11::basic_string<char>'} to 'const char*'
   94 |     inline GetObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
      |                                         ~~~~~~~~~~~~^~~~~
src/libstore/s3-binary-cache-store.cc: In member function 'virtual bool nix::S3BinaryCacheStoreImpl::fileExists(const string&)':
src/libstore/s3-binary-cache-store.cc:241:35: error: no matching function for call to 'Aws::S3::Model::HeadObjectRequest::WithBucket(std::string&)'
  241 |             .WithBucket(bucketName)
      |                                   ^
In file included from src/libstore/s3-binary-cache-store.cc:23:
/usr/local/include/aws/s3/model/HeadObjectRequest.h:84:31: note: candidate: 'Aws::S3::Model::HeadObjectRequest& Aws::S3::Model::HeadObjectRequest::WithBucket(const String&)'
   84 |     inline HeadObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
      |                               ^~~~~~~~~~
/usr/local/include/aws/s3/model/HeadObjectRequest.h:84:61: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const String&' {aka 'const std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&'}
   84 |     inline HeadObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
      |                                          ~~~~~~~~~~~~~~~~~~~^~~~~
/usr/local/include/aws/s3/model/HeadObjectRequest.h:89:31: note: candidate: 'Aws::S3::Model::HeadObjectRequest& Aws::S3::Model::HeadObjectRequest::WithBucket(Aws::String&&)'
   89 |     inline HeadObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
      |                               ^~~~~~~~~~
/usr/local/include/aws/s3/model/HeadObjectRequest.h:89:56: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'Aws::String&&' {aka 'std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&&'}
   89 |     inline HeadObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
      |                                          ~~~~~~~~~~~~~~^~~~~
/usr/local/include/aws/s3/model/HeadObjectRequest.h:94:31: note: candidate: 'Aws::S3::Model::HeadObjectRequest& Aws::S3::Model::HeadObjectRequest::WithBucket(const char*)'
   94 |     inline HeadObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
      |                               ^~~~~~~~~~
/usr/local/include/aws/s3/model/HeadObjectRequest.h:94:54: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const char*'
   94 |     inline HeadObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
      |                                          ~~~~~~~~~~~~^~~~~
src/libstore/s3-binary-cache-store.cc: In member function 'void nix::S3BinaryCacheStoreImpl::uploadFile(const string&, const string&, const string&, const string&)':
src/libstore/s3-binary-cache-store.cc:307:51: error: no matching function for call to 'Aws::Transfer::TransferManager::UploadFile(std::shared_ptr<basic_istringstream_nocopy<char> >&, std::string&, const string&, const string&, Aws::Map<std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> > >, std::nullptr_t)'
  307 |                     nullptr /*, contentEncoding */);
      |                                                   ^
In file included from src/libstore/s3-binary-cache-store.cc:26:
/usr/local/include/aws/transfer/TransferManager.h:139:45: note: candidate: 'std::shared_ptr<Aws::Transfer::TransferHandle> Aws::Transfer::TransferManager::UploadFile(const String&, const String&, const String&, const String&, Aws::Map<std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> > >&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&)'
  139 |             std::shared_ptr<TransferHandle> UploadFile(const Aws::String& fileName,
      |                                             ^~~~~~~~~~
/usr/local/include/aws/transfer/TransferManager.h:139:75: note:   no known conversion for argument 1 from 'std::shared_ptr<basic_istringstream_nocopy<char> >' to 'const String&' {aka 'const std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&'}
  139 |             std::shared_ptr<TransferHandle> UploadFile(const Aws::String& fileName,
      |                                                        ~~~~~~~~~~~~~~~~~~~^~~~~~~~
/usr/local/include/aws/transfer/TransferManager.h:150:45: note: candidate: 'std::shared_ptr<Aws::Transfer::TransferHandle> Aws::Transfer::TransferManager::UploadFile(const std::shared_ptr<std::basic_iostream<char> >&, const String&, const String&, const String&, Aws::Map<std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> > >&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&)'
  150 |             std::shared_ptr<TransferHandle> UploadFile(const std::shared_ptr<Aws::IOStream>& stream,
      |                                             ^~~~~~~~~~
/usr/local/include/aws/transfer/TransferManager.h:151:75: note:   no known conversion for argument 2 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const String&' {aka 'const std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&'}
  151 |                                                        const Aws::String& bucketName,
      |                                                        ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
src/libstore/s3-binary-cache-store.cc:323:39: error: no matching function for call to 'Aws::S3::Model::PutObjectRequest::WithBucket(std::string&)'
  323 |                 .WithBucket(bucketName)
      |                                       ^
In file included from src/libstore/s3-binary-cache-store.cc:25:
/usr/local/include/aws/s3/model/PutObjectRequest.h:119:30: note: candidate: 'Aws::S3::Model::PutObjectRequest& Aws::S3::Model::PutObjectRequest::WithBucket(const String&)'
  119 |     inline PutObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
      |                              ^~~~~~~~~~
/usr/local/include/aws/s3/model/PutObjectRequest.h:119:60: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const String&' {aka 'const std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&'}
  119 |     inline PutObjectRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
      |                                         ~~~~~~~~~~~~~~~~~~~^~~~~
/usr/local/include/aws/s3/model/PutObjectRequest.h:124:30: note: candidate: 'Aws::S3::Model::PutObjectRequest& Aws::S3::Model::PutObjectRequest::WithBucket(Aws::String&&)'
  124 |     inline PutObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
      |                              ^~~~~~~~~~
/usr/local/include/aws/s3/model/PutObjectRequest.h:124:55: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'Aws::String&&' {aka 'std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&&'}
  124 |     inline PutObjectRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
      |                                         ~~~~~~~~~~~~~~^~~~~
/usr/local/include/aws/s3/model/PutObjectRequest.h:129:30: note: candidate: 'Aws::S3::Model::PutObjectRequest& Aws::S3::Model::PutObjectRequest::WithBucket(const char*)'
  129 |     inline PutObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
      |                              ^~~~~~~~~~
/usr/local/include/aws/s3/model/PutObjectRequest.h:129:53: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const char*'
  129 |     inline PutObjectRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
      |                                         ~~~~~~~~~~~~^~~~~
src/libstore/s3-binary-cache-store.cc: In member function 'virtual nix::PathSet nix::S3BinaryCacheStoreImpl::queryAllValidPaths()':
src/libstore/s3-binary-cache-store.cc:396:43: error: no matching function for call to 'Aws::S3::Model::ListObjectsRequest::WithBucket(std::string&)'
  396 |                     .WithBucket(bucketName)
      |                                           ^
In file included from src/libstore/s3-binary-cache-store.cc:24:
/usr/local/include/aws/s3/model/ListObjectsRequest.h:84:32: note: candidate: 'Aws::S3::Model::ListObjectsRequest& Aws::S3::Model::ListObjectsRequest::WithBucket(const String&)'
   84 |     inline ListObjectsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
      |                                ^~~~~~~~~~
/usr/local/include/aws/s3/model/ListObjectsRequest.h:84:62: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const String&' {aka 'const std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&'}
   84 |     inline ListObjectsRequest& WithBucket(const Aws::String& value) { SetBucket(value); return *this;}
      |                                           ~~~~~~~~~~~~~~~~~~~^~~~~
/usr/local/include/aws/s3/model/ListObjectsRequest.h:89:32: note: candidate: 'Aws::S3::Model::ListObjectsRequest& Aws::S3::Model::ListObjectsRequest::WithBucket(Aws::String&&)'
   89 |     inline ListObjectsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
      |                                ^~~~~~~~~~
/usr/local/include/aws/s3/model/ListObjectsRequest.h:89:57: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'Aws::String&&' {aka 'std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >&&'}
   89 |     inline ListObjectsRequest& WithBucket(Aws::String&& value) { SetBucket(std::move(value)); return *this;}
      |                                           ~~~~~~~~~~~~~~^~~~~
/usr/local/include/aws/s3/model/ListObjectsRequest.h:94:32: note: candidate: 'Aws::S3::Model::ListObjectsRequest& Aws::S3::Model::ListObjectsRequest::WithBucket(const char*)'
   94 |     inline ListObjectsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
      |                                ^~~~~~~~~~
/usr/local/include/aws/s3/model/ListObjectsRequest.h:94:55: note:   no known conversion for argument 1 from 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'const char*'
   94 |     inline ListObjectsRequest& WithBucket(const char* value) { SetBucket(value); return *this;}
      |                                           ~~~~~~~~~~~~^~~~~
src/libstore/s3-binary-cache-store.cc:405:32: error: unable to deduce 'auto&&' from 'contents'
  405 |             for (auto object : contents) {
      |                                ^~~~~~~~
In file included from /usr/local/lib/gcc9/include/c++/x86_64-portbld-freebsd12.1/bits/c++allocator.h:33,
                 from /usr/local/lib/gcc9/include/c++/bits/allocator.h:46,
                 from /usr/local/lib/gcc9/include/c++/memory:63,
                 from src/libutil/ref.hh:3,
                 from src/libstore/s3.hh:5,
                 from src/libstore/s3-binary-cache-store.cc:3:
/usr/local/lib/gcc9/include/c++/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = nix::AwsLogger; _Args = {const Aws::Utils::Logging::LogLevel&}; _Tp = nix::AwsLogger]':
/usr/local/lib/gcc9/include/c++/bits/alloc_traits.h:482:2:   required from 'static void std::allocator_traits<std::allocator<_Tp1> >::construct(std::allocator_traits<std::allocator<_Tp1> >::allocator_type&, _Up*, _Args&& ...) [with _Up = nix::AwsLogger; _Args = {const Aws::Utils::Logging::LogLevel&}; _Tp = nix::AwsLogger; std::allocator_traits<std::allocator<_Tp1> >::allocator_type = std::allocator<nix::AwsLogger>]'
/usr/local/lib/gcc9/include/c++/bits/shared_ptr_base.h:548:39:   required from 'std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args&& ...) [with _Args = {const Aws::Utils::Logging::LogLevel&}; _Tp = nix::AwsLogger; _Alloc = std::allocator<nix::AwsLogger>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]'
/usr/local/lib/gcc9/include/c++/bits/shared_ptr_base.h:679:16:   required from 'std::__shared_count<_Lp>::__shared_count(_Tp*&, std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = nix::AwsLogger; _Alloc = std::allocator<nix::AwsLogger>; _Args = {const Aws::Utils::Logging::LogLevel&}; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]'
/usr/local/lib/gcc9/include/c++/bits/shared_ptr_base.h:1344:71:   required from 'std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<nix::AwsLogger>; _Args = {const Aws::Utils::Logging::LogLevel&}; _Tp = nix::AwsLogger; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]'
/usr/local/lib/gcc9/include/c++/bits/shared_ptr.h:359:59:   required from 'std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<nix::AwsLogger>; _Args = {const Aws::Utils::Logging::LogLevel&}; _Tp = nix::AwsLogger]'
/usr/local/lib/gcc9/include/c++/bits/shared_ptr.h:701:14:   required from 'std::shared_ptr<_Tp> std::allocate_shared(const _Alloc&, _Args&& ...) [with _Tp = nix::AwsLogger; _Alloc = std::allocator<nix::AwsLogger>; _Args = {const Aws::Utils::Logging::LogLevel&}]'
/usr/local/lib/gcc9/include/c++/bits/shared_ptr.h:717:39:   required from 'std::shared_ptr<_Tp> std::make_shared(_Args&& ...) [with _Tp = nix::AwsLogger; _Args = {const Aws::Utils::Logging::LogLevel&}]'
src/libstore/s3-binary-cache-store.cc:77:83:   required from here
/usr/local/lib/gcc9/include/c++/ext/new_allocator.h:145:20: error: invalid new-expression of abstract class type 'nix::AwsLogger'
  145 |  noexcept(noexcept(::new((void *)__p)
      |                    ^~~~~~~~~~~~~~~~~~
  146 |        _Up(std::forward<_Args>(__args)...)))
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/libstore/s3-binary-cache-store.cc:51:7: note:   because the following virtual functions are pure within 'nix::AwsLogger':
   51 | class AwsLogger : public Aws::Utils::Logging::FormattedLogSystem
      |       ^~~~~~~~~
In file included from /usr/local/include/aws/core/Aws.h:18,
                 from src/libstore/s3-binary-cache-store.cc:12:
/usr/local/include/aws/core/utils/logging/LogSystemInterface.h:56:30: note:     'virtual void Aws::Utils::Logging::LogSystemInterface::Flush()'
   56 |                 virtual void Flush() = 0;
      |                              ^~~~~
gmake[1]: *** [mk/patterns.mk:3: src/libstore/s3-binary-cache-store.o] Error 1
gmake[1]: Leaving directory '/wrkdirs/usr/ports/sysutils/nix/work/nix-2.3.1'
*** Error code 1

Stop.

@0mp
Copy link
Owner Author

0mp commented Nov 25, 2019

Patching src/libutil/logging.hh with

--- src/libutil/logging.hh.orig 2019-11-25 18:38:58 UTC
+++ src/libutil/logging.hh
@@ -147,7 +147,7 @@ extern Verbosity verbosity; /* suppress msgs > this */
 #define printMsg(level, args...) \
     do { \
         if (level <= nix::verbosity) { \
-            logger->log(level, fmt(args)); \
+            logger->log(level, fmt((const std::string &)args)); \
         } \
     } while (0)

results in

  CXX    src/libutil/serialise.o
src/libutil/archive.cc:93:21: error: C-style cast from rvalue to reference type 'const std::string &' (aka
      'const basic_string<char, char_traits<char>, allocator<char> > &')
                    debug(format("removing case hack suffix from '%1%'") % (path + "/" + i.name));
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/libutil/logging.hh:157:24: note: expanded from macro 'debug'
#define debug(args...) printMsg(lvlDebug, args)
                       ^~~~~~~~~~~~~~~~~~~~~~~~
src/libutil/logging.hh:150:36: note: expanded from macro 'printMsg'
            logger->log(level, fmt((const std::string &)args)); \
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
src/libutil/archive.cc:257:29: error: C-style cast from rvalue to reference type 'const std::string &'
      (aka 'const basic_string<char, char_traits<char>, allocator<char> > &')
                            debug(format("case collision between '%1%' and '%2%'") % i->first % name);
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/libutil/logging.hh:157:24: note: expanded from macro 'debug'
#define debug(args...) printMsg(lvlDebug, args)
                       ^~~~~~~~~~~~~~~~~~~~~~~~
src/libutil/logging.hh:150:36: note: expanded from macro 'printMsg'
            logger->log(level, fmt((const std::string &)args)); \
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
  CXX    src/libutil/thread-pool.o
2 errors generated.
gmake[1]: *** [mk/patterns.mk:3: src/libutil/archive.o] Error 1
gmake[1]: *** Waiting for unfinished jobs....
gmake[1]: Leaving directory '/wrkdirs/usr/ports/sysutils/nix/work/nix-2.3.1'
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop.
make: stopped in /usr/ports/sysutils/nix

@0mp
Copy link
Owner Author

0mp commented Nov 25, 2019

I've address many of those compilation erros by helping C++ to convert strings to char pointers with c_str().

Here are the remaining errors:

  CXX    src/libmain/common-args.o
In file included from src/libstore/s3-binary-cache-store.cc:3:
In file included from src/libstore/s3.hh:5:
In file included from src/libutil/ref.hh:3:
/usr/include/c++/v1/memory:4325:5: error: static_assert failed due to requirement 'is_constructible<nix::AwsLogger, const
      Aws::Utils::Logging::LogLevel &>::value' "Can't construct object in make_shared"
    static_assert( is_constructible<_Tp, _Args...>::value, "Can't construct object in make_shared" );
    ^              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/v1/memory:4710:29: note: in instantiation of function template specialization
      'std::__1::shared_ptr<nix::AwsLogger>::make_shared<const Aws::Utils::Logging::LogLevel &>' requested here
    return shared_ptr<_Tp>::make_shared(_VSTD::forward<_Args>(__args)...);
                            ^
src/libstore/s3-binary-cache-store.cc:77:29: note: in instantiation of function template specialization
      'std::__1::make_shared<nix::AwsLogger, const Aws::Utils::Logging::LogLevel &>' requested here
                return std::make_shared<AwsLogger>(options.loggingOptions.logLevel);
                            ^
In file included from src/libstore/s3-binary-cache-store.cc:3:
In file included from src/libstore/s3.hh:5:
In file included from src/libutil/ref.hh:3:
/usr/include/c++/v1/memory:2168:7: error: field type 'nix::AwsLogger' is an abstract class
  _Tp __value_;
      ^
/usr/include/c++/v1/memory:2212:35: note: in instantiation of template class 'std::__1::__compressed_pair_elem<nix::AwsLogger,
      1, false>' requested here
                          private __compressed_pair_elem<_T2, 1> {
                                  ^
/usr/include/c++/v1/memory:3661:36: note: in instantiation of template class
      'std::__1::__compressed_pair<std::__1::allocator<nix::AwsLogger>, nix::AwsLogger>' requested here
    __compressed_pair<_Alloc, _Tp> __data_;
                                   ^
/usr/include/c++/v1/memory:4331:26: note: in instantiation of template class 'std::__1::__shared_ptr_emplace<nix::AwsLogger,
      std::__1::allocator<nix::AwsLogger> >' requested here
    ::new(__hold2.get()) _CntrlBlk(__a2, _VSTD::forward<_Args>(__args)...);
                         ^
/usr/include/c++/v1/memory:4710:29: note: in instantiation of function template specialization
      'std::__1::shared_ptr<nix::AwsLogger>::make_shared<const Aws::Utils::Logging::LogLevel &>' requested here
    return shared_ptr<_Tp>::make_shared(_VSTD::forward<_Args>(__args)...);
                            ^
src/libstore/s3-binary-cache-store.cc:77:29: note: in instantiation of function template specialization
      'std::__1::make_shared<nix::AwsLogger, const Aws::Utils::Logging::LogLevel &>' requested here
                return std::make_shared<AwsLogger>(options.loggingOptions.logLevel);
                            ^
/usr/local/include/aws/core/utils/logging/LogSystemInterface.h:56:30: note: unimplemented pure virtual method 'Flush' in
      'AwsLogger'
                virtual void Flush() = 0;
                             ^
In file included from src/libstore/s3-binary-cache-store.cc:3:
In file included from src/libstore/s3.hh:5:
In file included from src/libutil/ref.hh:3:
/usr/include/c++/v1/memory:4334:28: error: assigning to 'std::__1::__shared_weak_count *' from incompatible type
      'std::__1::unique_ptr<std::__1::__shared_ptr_emplace<nix::AwsLogger, std::__1::allocator<nix::AwsLogger> >,
      std::__1::__allocator_destructor<std::__1::allocator<std::__1::__shared_ptr_emplace<nix::AwsLogger,
      std::__1::allocator<nix::AwsLogger> > > > >::pointer' (aka 'std::__1::__shared_ptr_emplace<nix::AwsLogger,
      std::__1::allocator<nix::AwsLogger> > *')
    __r.__cntrl_ = __hold2.release();
                   ~~~~~~~~^~~~~~~~~
/usr/include/c++/v1/memory:4710:29: note: in instantiation of function template specialization
      'std::__1::shared_ptr<nix::AwsLogger>::make_shared<const Aws::Utils::Logging::LogLevel &>' requested here
    return shared_ptr<_Tp>::make_shared(_VSTD::forward<_Args>(__args)...);
                            ^
src/libstore/s3-binary-cache-store.cc:77:29: note: in instantiation of function template specialization
      'std::__1::make_shared<nix::AwsLogger, const Aws::Utils::Logging::LogLevel &>' requested here
                return std::make_shared<AwsLogger>(options.loggingOptions.logLevel);
                            ^
  CXX    src/libmain/shared.o
3 errors generated.
gmake[1]: *** [mk/patterns.mk:3: src/libstore/s3-binary-cache-store.o] Error 1
gmake[1]: *** Waiting for unfinished jobs....
1 warning generated.
gmake[1]: Leaving directory '/wrkdirs/usr/ports/sysutils/nix/work/nix-2.3.1'

@0mp
Copy link
Owner Author

0mp commented Nov 28, 2019

Fixed in 603396f.

@0mp 0mp closed this as completed Nov 28, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant