0mp / freebsd-ports-nix

Nix package manager port for the FreeBSD Ports Collection
https://www.freshports.org/sysutils/nix/
48 stars 3 forks source link

Building with AWS SDK for C++ support #1

Closed 0mp closed 4 years ago

0mp commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

Fixed in 603396fe40fe50ac5e1f74390c73e6f025acebf6.