Build fails against recent external aws-sdk-cpp fails
In Alpine Linux the version of aws-sdk-cpp had to be upgraded from 1.11.215 to 1.11.400, as the old version does not build with GCC 14. Building tiledb against asw-sdk-cpp 1.11.400 on Alpine Linux gives me:
Build log:
[183/389] Building CXX object tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/api/c_api/dimension/dimension_api.cc.o
ninja: job failed: /usr/bin/g++ -DAWS_AUTH_USE_IMPORT_EXPORT -DAWS_CAL_USE_IMPORT_EXPORT -DAWS_CHECKSUMS_USE_IMPORT_EXPORT -DAWS_COMMON_USE_IMPORT_EXPORT -DAWS_COMPRESSION_USE_IMPORT_EXPORT -DAWS_CRT_CPP_USE_IMPORT_EXPORT -DAWS_EVENT_STREAM_USE_IMPORT_EXPORT -DAWS_HTTP_USE_IMPORT_EXPORT -DAWS_IO_USE_IMPORT_EXPORT -DAWS_MQTT_USE_IMPORT_EXPORT -DAWS_S3_USE_IMPORT_EXPORT -DAWS_SDKUTILS_USE_IMPORT_EXPORT -DAWS_SDK_VERSION_MAJOR=1 -DAWS_SDK_VERSION_MINOR=11 -DAWS_SDK_VERSION_PATCH=400 -DAWS_USE_EPOLL -DFMT_SHARED -DHAVE_GCS -DHAVE_S3 -DKJ_USE_FIBERS -DNDEBUG -DSPDLOG_COMPILED_LIB -DSPDLOG_FMT_EXTERNAL -DSPDLOG_SHARED_LIB -DTILEDB_SERIALIZATION -DTILEDB_STATS -DUSE_IMPORT_EXPORT=1 -D_FILE_OFFSET_BITS=64 -Dtiledb_EXPORTS -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/.. -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../tiledb/sm/c_api -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../external/include -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../external/include/bitshuffle -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../external/include/blosc -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/external/blosc/include -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/build/tiledb/.. -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../tiledb/sm/cpp_api -I/home/builder/package/community/tiledb/src/TileDB-2.26.2/build/tiledb -Os -fstack-clash-protection -Wformat -Werror=format-security -D_GLIBCXX_ASSERTIONS=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -D_LIBCPP_ENABLE_HARDENED_MODE=1 -Wno-deprecated-declarations -std=c++20 -fPIC -fvisibility=hidden -Wall -Wextra -MD -MT tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/api/c_api_support/exception_wrapper/exception_wrapper.cc.o -MF tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/api/c_api_support/exception_wrapper/exception_wrapper.cc.o.d -o tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/api/c_api_support/exception_wrapper/exception_wrapper.cc.o -c /home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/api/c_api_support/exception_wrapper/exception_wrapper.cc
In file included from /home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../tiledb/sm/filesystem/vfs.h:67,
from /home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../tiledb/sm/storage_manager/context_resources.h:39,
from /home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../tiledb/sm/storage_manager/context.h:41,
from /home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../tiledb/api/c_api/context/context_api_internal.h:40,
from /home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/api/c_api_support/exception_wrapper/exception_wrapper.h:40,
from /home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/api/c_api_support/exception_wrapper/exception_wrapper.cc:33:
/home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../tiledb/sm/filesystem/s3.h: In function 'std::string tiledb::sm::{anonymous}::outcome_error_message(const Aws::Utils::Outcome<R, E>&)':
/home/builder/package/community/tiledb/src/TileDB-2.26.2/tiledb/../tiledb/sm/filesystem/s3.h:150:16: error: could not convert 'ss.std::__cxx11::basic_stringstream<char, std::char_traits<char>, Aws::Allocator<char> >::str()' from 'basic_string<[...],[...],Aws::Allocator<char>>' to 'basic_string<[...],[...],std::allocator<char>>'
150 | return ss.str();
| ~~~~~~^~
| |
| basic_string<[...],[...],Aws::Allocator<char>>
full build.log
Apparently the string constructor that can change the allocator is explicit (see constructor 16). I am working on a fix.
Hi, is there any plan to fix this issue?
Opened #5545. I would appreciate if you can verify that it compiles in your environment.
I tried with TileDB main and aws-sdk-cpp 1.11.584 on Alpine Linux Edge. I get the following error when I compile:
Build error message
[190/413] Building CXX object tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/api/c_api/domain/domain_api.cc.o
ninja: job failed: /usr/bin/c++ -DAWS_AUTH_USE_IMPORT_EXPORT -DAWS_CAL_USE_IMPORT_EXPORT -DAWS_CHECKSUMS_USE_IMPORT_EXPORT -DAWS_COMMON_USE_IMPORT_EXPORT -DAWS_COMPRESSION_USE_IMPORT_EXPORT -DAWS_CRT_CPP_USE_IMPORT_EXPORT -DAWS_ENABLE_EPOLL -DAWS_EVENT_STREAM_USE_IMPORT_EXPORT -DAWS_HTTP_USE_IMPORT_EXPORT -DAWS_IO_USE_IMPORT_EXPORT -DAWS_MQTT_USE_IMPORT_EXPORT -DAWS_S3_USE_IMPORT_EXPORT -DAWS_SDKUTILS_USE_IMPORT_EXPORT -DAWS_SDK_VERSION_MAJOR=1 -DAWS_SDK_VERSION_MINOR=11 -DAWS_SDK_VERSION_PATCH=584 -DFMT_SHARED -DHAVE_GCS -DHAVE_S3 -DKJ_USE_FIBERS -DNDEBUG -DSPDLOG_COMPILED_LIB -DSPDLOG_FMT_EXTERNAL -DSPDLOG_SHARED_LIB -DTILEDB_SERIALIZATION -DTILEDB_STATS -DUSE_IMPORT_EXPORT=1 -D_FILE_OFFSET_BITS=64 -Dtiledb_EXPORTS -I/home/builder/package/community/tiledb/src/TileDB-main/tiledb/.. -I/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/c_api -I/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../external/include -I/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../external/include/bitshuffle -I/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../external/include/blosc -I/home/builder/package/community/tiledb/src/TileDB-main/external/blosc/include -I/home/builder/package/community/tiledb/src/TileDB-main/build/tiledb/.. -I/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/cpp_api -I/home/builder/package/community/tiledb/src/TileDB-main/build/tiledb -Os -fstack-clash-protection -Wformat -Werror=format-security -D_GLIBCXX_ASSERTIONS=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -D_LIBCPP_ENABLE_HARDENED_MODE=1 -Wno-deprecated-declarations -std=c++20 -fPIC -fvisibility=hidden -Wall -Wextra -MD -MT tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/api/c_api/vfs/vfs_api.cc.o -MF tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/api/c_api/vfs/vfs_api.cc.o.d -o tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/api/c_api/vfs/vfs_api.cc.o -c /home/builder/package/community/tiledb/src/TileDB-main/tiledb/api/c_api/vfs/vfs_api.cc
In file included from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/vfs.h:68,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/storage_manager/context_resources.h:39,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/storage_manager/context.h:41,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/api/c_api/context/context_api_internal.h:40,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/api/c_api_support/exception_wrapper/exception_wrapper.h:40,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/api/c_api_support/c_api_support.h:42,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/api/c_api/vfs/vfs_api.cc:33:
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h: In instantiation of 'typename tiledb::sm::S3Scanner<F, D>::Iterator::pointer tiledb::sm::S3Scanner<F, D>::fetch_results() [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>; typename Iterator::pointer = std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> >::const_iterator; Iterator = tiledb::sm::LsScanIterator<tiledb::sm::S3Scanner<tiledb::sm::CallbackWrapperCAPI, std::function<bool(const std::basic_string_view<char>&)> >, Aws::S3::Model::Object>]':
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h:1663:3: required from 'tiledb::sm::S3Scanner<F, D>::S3Scanner(const std::shared_ptr<tiledb::sm::TileDBS3Client>&, const tiledb::sm::URI&, F, D, bool, int) [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>]'
1663 | fetch_results();
| ^~~~~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h:914:21: required from 'tiledb::sm::LsObjects tiledb::sm::S3::ls_filtered(const tiledb::sm::URI&, F, D, bool) const [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>; tiledb::sm::LsObjects = std::vector<std::pair<std::__cxx11::basic_string<char>, long unsigned int> >]'
914 | S3Scanner<F, D> s3_scanner(client_, parent, f, d, recursive);
| ^~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/vfs.h:619:35: required from 'tiledb::sm::LsObjects tiledb::sm::VFS::ls_filtered(const tiledb::sm::URI&, F, D, bool) const [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>; tiledb::sm::LsObjects = std::vector<std::pair<std::__cxx11::basic_string<char>, long unsigned int> >]'
619 | results = s3().ls_filtered(parent, f, d, recursive);
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/vfs.h:669:23: required from 'tiledb::sm::LsObjects tiledb::sm::VFS::ls_recursive(const tiledb::sm::URI&, F, D) const [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>; tiledb::sm::LsObjects = std::vector<std::pair<std::__cxx11::basic_string<char>, long unsigned int> >]'
669 | return ls_filtered(parent, f, d, true);
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/api/c_api/vfs/vfs_api_internal.h:156:22: required from here
156 | vfs_.ls_recursive(parent, wrapper);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h:528:12: error: no match for 'operator=' (operand types are 'tiledb::sm::LsScanIterator<tiledb::sm::S3Scanner<tiledb::sm::CallbackWrapperCAPI, std::function<bool(const std::basic_string_view<char>&)> >, Aws::S3::Model::Object>::pointer' {aka 'std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> >::const_iterator'} and 'std::vector<Aws::S3::Model::Object, Aws::Allocator<Aws::S3::Model::Object> >::const_iterator')
528 | begin_ = list_objects_outcome_.GetResult().GetContents().begin();
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14.3.0/string:48,
from /usr/include/c++/14.3.0/stdexcept:39,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/common/exception/exception.h:32,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/api/c_api_support/argument_validation.h:37,
from /home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/api/c_api_support/c_api_support.h:39:
/usr/include/c++/14.3.0/bits/stl_iterator.h:1038:11: note: candidate: 'constexpr __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >& __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >::operator=(const __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >&)'
1038 | class __normal_iterator
| ^~~~~~~~~~~~~~~~~
/usr/include/c++/14.3.0/bits/stl_iterator.h:1038:11: note: no known conversion for argument 1 from 'std::vector<Aws::S3::Model::Object, Aws::Allocator<Aws::S3::Model::Object> >::const_iterator' to 'const __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >&'
/usr/include/c++/14.3.0/bits/stl_iterator.h:1038:11: note: candidate: 'constexpr __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >& __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >::operator=(__gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >&&)'
/usr/include/c++/14.3.0/bits/stl_iterator.h:1038:11: note: no known conversion for argument 1 from 'std::vector<Aws::S3::Model::Object, Aws::Allocator<Aws::S3::Model::Object> >::const_iterator' to '__gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >&&'
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h:529:10: error: no match for 'operator=' (operand types are 'tiledb::sm::LsScanIterator<tiledb::sm::S3Scanner<tiledb::sm::CallbackWrapperCAPI, std::function<bool(const std::basic_string_view<char>&)> >, Aws::S3::Model::Object>::pointer' {aka 'std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> >::const_iterator'} and 'std::vector<Aws::S3::Model::Object, Aws::Allocator<Aws::S3::Model::Object> >::const_iterator')
529 | end_ = list_objects_outcome_.GetResult().GetContents().end();
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14.3.0/bits/stl_iterator.h:1038:11: note: candidate: 'constexpr __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >& __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >::operator=(const __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >&)'
1038 | class __normal_iterator
| ^~~~~~~~~~~~~~~~~
/usr/include/c++/14.3.0/bits/stl_iterator.h:1038:11: note: no known conversion for argument 1 from 'std::vector<Aws::S3::Model::Object, Aws::Allocator<Aws::S3::Model::Object> >::const_iterator' to 'const __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >&'
/usr/include/c++/14.3.0/bits/stl_iterator.h:1038:11: note: candidate: 'constexpr __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >& __gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >::operator=(__gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >&&)'
/usr/include/c++/14.3.0/bits/stl_iterator.h:1038:11: note: no known conversion for argument 1 from 'std::vector<Aws::S3::Model::Object, Aws::Allocator<Aws::S3::Model::Object> >::const_iterator' to '__gnu_cxx::__normal_iterator<const Aws::S3::Model::Object*, std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> > >&&'
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h: In instantiation of 'void tiledb::sm::S3Scanner<F, D>::next(typename Iterator::pointer&) [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>; typename Iterator::pointer = std::vector<Aws::S3::Model::Object, std::allocator<Aws::S3::Model::Object> >::const_iterator; Iterator = tiledb::sm::LsScanIterator<tiledb::sm::S3Scanner<tiledb::sm::CallbackWrapperCAPI, std::function<bool(const std::basic_string_view<char>&)> >, Aws::S3::Model::Object>]':
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h:1664:3: required from 'tiledb::sm::S3Scanner<F, D>::S3Scanner(const std::shared_ptr<tiledb::sm::TileDBS3Client>&, const tiledb::sm::URI&, F, D, bool, int) [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>]'
1664 | next(begin_);
| ^~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h:914:21: required from 'tiledb::sm::LsObjects tiledb::sm::S3::ls_filtered(const tiledb::sm::URI&, F, D, bool) const [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>; tiledb::sm::LsObjects = std::vector<std::pair<std::__cxx11::basic_string<char>, long unsigned int> >]'
914 | S3Scanner<F, D> s3_scanner(client_, parent, f, d, recursive);
| ^~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/vfs.h:619:35: required from 'tiledb::sm::LsObjects tiledb::sm::VFS::ls_filtered(const tiledb::sm::URI&, F, D, bool) const [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>; tiledb::sm::LsObjects = std::vector<std::pair<std::__cxx11::basic_string<char>, long unsigned int> >]'
619 | results = s3().ls_filtered(parent, f, d, recursive);
| ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/vfs.h:669:23: required from 'tiledb::sm::LsObjects tiledb::sm::VFS::ls_recursive(const tiledb::sm::URI&, F, D) const [with F = tiledb::sm::CallbackWrapperCAPI; D = std::function<bool(const std::basic_string_view<char>&)>; tiledb::sm::LsObjects = std::vector<std::pair<std::__cxx11::basic_string<char>, long unsigned int> >]'
669 | return ls_filtered(parent, f, d, true);
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/api/c_api/vfs/vfs_api_internal.h:156:22: required from here
156 | vfs_.ls_recursive(parent, wrapper);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h:1677:43: error: cannot convert 'const Aws::String' {aka 'const std::__cxx11::basic_string<char, std::char_traits<char>, Aws::Allocator<char> >'} to 'const std::string&' {aka 'const std::__cxx11::basic_string<char>&'}
1677 | S3::add_front_slash(object.GetKey());
| ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/home/builder/package/community/tiledb/src/TileDB-main/tiledb/../tiledb/sm/filesystem/s3.h:1028:57: note: initializing argument 1 of 'static std::string tiledb::sm::S3::add_front_slash(const std::string&)'
1028 | static std::string add_front_slash(const std::string& path);
| ~~~~~~~~~~~~~~~~~~~^~~~
ninja: subcommand failed