Re: [Maria-discuss] Cross compile error
On this error I'm not sure. Looks to be some sort of inheritance hierarchy that is different in musl from glibc et al. I'd chase them up to see who is violating the C++ spec. Have you tried using buildroot? It has a stable 10.1 version that is kept up to date and it has the one outstanding uclibc patch (that is waiting in jira https://jira.mariadb.org/browse/MDEV-10841) On 26/03/17 02:52, Lucian Cristian wrote:
Hi
I'm trying to cross compile (any 10.* versions) using musl and uClibc++ for a LEDE/Openwrt system and I have problems with these errors:
staging_dir/target-x86_64_musl/usr/include/uClibc++/associative_base:444:8: error: 'void std::__base_associative<Key, ValueType, Compare, Allocator>::swap(std::__base_associative<Key, ValueType, Compare, Allocator>&) [with Key = dict_foreign_t*; ValueType = dict_foreign_t*; Compare = dict_foreign_compare; Allocator = ut_allocator<dict_foreign_t*>]' is protected void __base_associative<Key, ValueType, Compare, Allocator>::swap(__base_associative<Key, ValueType, Compare, Allocator>& m) ^ build_dir/target-x86_64_musl/mariadb-10.2.4/storage/innobase/dict/dict0dict.cc:1996:32: error: within this context table->foreign_set.swap(fk_set); ^ storage/innobase/CMakeFiles/innobase.dir/build.make:542: recipe for target 'storage/innobase/CMakeFiles/innobase.dir/dict/dict0dict.cc.o' failed
staging_dir/target-x86_64_musl/usr/include/uClibc++/map: In instantiation of 'std::map<Key, T, Compare, Allocator>::reference std::map<Key, T, Compare, Allocator>::operator[](const key_type&) [with Key = const char*; T = dict_index_t*; Compare = ut_strcmp_functor; Allocator = ut_allocator<std::pair<const char*, dict_index_t*> >; std::map<Key, T, Compare, Allocator>::reference = std::pair<const char*, dict_index_t*>&; std::map<Key, T, Compare, Allocator>::key_type = const char*]': build_dir/target-x86_64_musl/mariadb-10.2.4/storage/innobase/dict/dict0stats.cc:2518:22: required from here staging_dir/target-x86_64_musl/usr/include/uClibc++/map:143:13: error: invalid initialization of reference of type 'std::map<const char*, dict_index_t*, ut_strcmp_functor, ut_allocator<std::pair<const char*, dict_index_t*> > >::reference {aka std::pair<const char*, dict_index_t*>&}' from expression of type 'dict_index_t*' return i->second; ^ storage/innobase/CMakeFiles/innobase.dir/build.make:614: recipe for target 'storage/innobase/CMakeFiles/innobase.dir/dict/dict0stats.cc.o' failed
build_dir/target-x86_64_musl/mariadb-10.2.4/plugin/handler_socket/handlersocket/hstcpsvr.cpp: In constructor 'dena::hstcpsvr::hstcpsvr(const dena::config&)': build_dir/target-x86_64_musl/mariadb-10.2.4/plugin/handler_socket/handlersocket/hstcpsvr.cpp:92:37: error: invalid initialization of non-const reference of type 'std::auto_ptr<volatile dena::database_i>&' from an rvalue of type 'dena::database_ptr {aka std::auto_ptr<volatile dena::database_i>}' cshared.dbptr = database_i::create(c); ^ In file included from staging_dir/target-x86_64_musl/usr/include/uClibc++/vector:22:0, from build_dir/target-x86_64_musl/mariadb-10.2.4/plugin/handler_socket/handlersocket/hstcpsvr.cpp:12:
staging_dir/target-x86_64_musl/usr/include/uClibc++/memory:137:12: note: initializing argument 1 of 'std::auto_ptr<T>& std::auto_ptr<T>::operator=(std::auto_ptr<T>&) [with T = volatile dena::database_i]' auto_ptr& operator=(auto_ptr& p) throw(){ ^ plugin/handler_socket/CMakeFiles/handlersocket.dir/build.make:134: recipe for target 'plugin/handler_socket/CMakeFiles/handlersocket.dir/handlersocket/hstcpsvr.cpp.o' failed make[5]: *** [plugin/handler_socket/CMakeFiles/handlersocket.dir/handlersocket/hstcpsvr.cpp.o] Error 1
this is the command line
(cd /build_dir/target-x86_64_musl/mariadb-10.2.4; CFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -iremap/build_dir/target-x86_64_musl/mariadb-10.2.4:mariadb-10.2.4 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -fpic " CXXFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -iremap/build_dir/target-x86_64_musl/mariadb-10.2.4:mariadb-10.2.4 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -fpic " LDFLAGS="-L/staging_dir/target-x86_64_musl/usr/lib -L/staging_dir/target-x86_64_musl/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/usr/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/lib -znow -zrelro " cmake -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" -DCMAKE_C_COMPILER="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc" -DCMAKE_C_COMPILER_ARG1="" -DCMAKE_CXX_COMPILER="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/g++-uc" -DCMAKE_CXX_COMPILER_ARG1="" -DCMAKE_ASM_COMPILER="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc" -DCMAKE_ASM_COMPILER_ARG1="" -DCMAKE_EXE_LINKER_FLAGS:STRING="-L/staging_dir/target-x86_64_musl/usr/lib -L/staging_dir/target-x86_64_musl/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/usr/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/lib -znow -zrelro" -DCMAKE_MODULE_LINKER_FLAGS:STRING="-L/staging_dir/target-x86_64_musl/usr/lib -L/staging_dir/target-x86_64_musl/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/usr/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/lib -znow -zrelro -Wl,-Bsymbolic-functions" -DCMAKE_SHARED_LINKER_FLAGS:STRING="-L/staging_dir/target-x86_64_musl/usr/lib -L/staging_dir/target-x86_64_musl/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/usr/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/lib -znow -zrelro -Wl,-Bsymbolic-functions" -DCMAKE_AR="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc-ar" -DCMAKE_NM="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc-nm" -DCMAKE_RANLIB="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc-ranlib" -DCMAKE_FIND_ROOT_PATH="/staging_dir/target-x86_64_musl/usr;/staging_dir/toolchain-x86_64_gcc-5.4.0_musl" -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_STRIP=: -DCMAKE_INSTALL_PREFIX=/usr -DDL_LIBRARY=/staging_dir/target-x86_64_musl -DCMAKE_PREFIX_PATH=/staging_dir/target-x86_64_musl -DCMAKE_SKIP_RPATH=TRUE -DCMAKE_SYSTEM_NAME=Linux -DSTACK_DIRECTION=-1 -DWITH_WSREP=ON -DWITH_INNODB_DISALLOW_WRITES=1 -DCONNECT_WITH_JDBC=OFF -DWITHOUT_TOKUDB=1 -DIMPORT_EXECUTABLES=/build_dir/hostpkg/mariadb-10.2.4/host/import_executables.cmake /build_dir/target-x86_64_musl/mariadb-10.2.4 )
can someone give me an advice ?
Regards
_______________________________________________ Mailing list: https://launchpad.net/~maria-discuss Post to : maria-discuss@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-discuss More help : https://help.launchpad.net/ListHelp
On 28.03.2017 01:40, Daniel Black wrote:
On this error I'm not sure. Looks to be some sort of inheritance hierarchy that is different in musl from glibc et al. I'd chase them up to see who is violating the C++ spec.
Have you tried using buildroot? It has a stable 10.1 version that is kept up to date and it has the one outstanding uclibc patch (that is waiting in jira https://jira.mariadb.org/browse/MDEV-10841)
On 26/03/17 02:52, Lucian Cristian wrote:
Hi
I'm trying to cross compile (any 10.* versions) using musl and uClibc++ for a LEDE/Openwrt system and I have problems with these errors:
staging_dir/target-x86_64_musl/usr/include/uClibc++/associative_base:444:8: error: 'void std::__base_associative<Key, ValueType, Compare, Allocator>::swap(std::__base_associative<Key, ValueType, Compare, Allocator>&) [with Key = dict_foreign_t*; ValueType = dict_foreign_t*; Compare = dict_foreign_compare; Allocator = ut_allocator<dict_foreign_t*>]' is protected void __base_associative<Key, ValueType, Compare, Allocator>::swap(__base_associative<Key, ValueType, Compare, Allocator>& m) ^ build_dir/target-x86_64_musl/mariadb-10.2.4/storage/innobase/dict/dict0dict.cc:1996:32: error: within this context table->foreign_set.swap(fk_set); ^ storage/innobase/CMakeFiles/innobase.dir/build.make:542: recipe for target 'storage/innobase/CMakeFiles/innobase.dir/dict/dict0dict.cc.o' failed
staging_dir/target-x86_64_musl/usr/include/uClibc++/map: In instantiation of 'std::map<Key, T, Compare, Allocator>::reference std::map<Key, T, Compare, Allocator>::operator[](const key_type&) [with Key = const char*; T = dict_index_t*; Compare = ut_strcmp_functor; Allocator = ut_allocator<std::pair<const char*, dict_index_t*> >; std::map<Key, T, Compare, Allocator>::reference = std::pair<const char*, dict_index_t*>&; std::map<Key, T, Compare, Allocator>::key_type = const char*]': build_dir/target-x86_64_musl/mariadb-10.2.4/storage/innobase/dict/dict0stats.cc:2518:22: required from here staging_dir/target-x86_64_musl/usr/include/uClibc++/map:143:13: error: invalid initialization of reference of type 'std::map<const char*, dict_index_t*, ut_strcmp_functor, ut_allocator<std::pair<const char*, dict_index_t*> > >::reference {aka std::pair<const char*, dict_index_t*>&}' from expression of type 'dict_index_t*' return i->second; ^ storage/innobase/CMakeFiles/innobase.dir/build.make:614: recipe for target 'storage/innobase/CMakeFiles/innobase.dir/dict/dict0stats.cc.o' failed
build_dir/target-x86_64_musl/mariadb-10.2.4/plugin/handler_socket/handlersocket/hstcpsvr.cpp: In constructor 'dena::hstcpsvr::hstcpsvr(const dena::config&)': build_dir/target-x86_64_musl/mariadb-10.2.4/plugin/handler_socket/handlersocket/hstcpsvr.cpp:92:37: error: invalid initialization of non-const reference of type 'std::auto_ptr<volatile dena::database_i>&' from an rvalue of type 'dena::database_ptr {aka std::auto_ptr<volatile dena::database_i>}' cshared.dbptr = database_i::create(c); ^ In file included from staging_dir/target-x86_64_musl/usr/include/uClibc++/vector:22:0, from build_dir/target-x86_64_musl/mariadb-10.2.4/plugin/handler_socket/handlersocket/hstcpsvr.cpp:12:
staging_dir/target-x86_64_musl/usr/include/uClibc++/memory:137:12: note: initializing argument 1 of 'std::auto_ptr<T>& std::auto_ptr<T>::operator=(std::auto_ptr<T>&) [with T = volatile dena::database_i]' auto_ptr& operator=(auto_ptr& p) throw(){ ^ plugin/handler_socket/CMakeFiles/handlersocket.dir/build.make:134: recipe for target 'plugin/handler_socket/CMakeFiles/handlersocket.dir/handlersocket/hstcpsvr.cpp.o' failed make[5]: *** [plugin/handler_socket/CMakeFiles/handlersocket.dir/handlersocket/hstcpsvr.cpp.o] Error 1
this is the command line
(cd /build_dir/target-x86_64_musl/mariadb-10.2.4; CFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -iremap/build_dir/target-x86_64_musl/mariadb-10.2.4:mariadb-10.2.4 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -fpic " CXXFLAGS="-Os -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -iremap/build_dir/target-x86_64_musl/mariadb-10.2.4:mariadb-10.2.4 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -fpic " LDFLAGS="-L/staging_dir/target-x86_64_musl/usr/lib -L/staging_dir/target-x86_64_musl/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/usr/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/lib -znow -zrelro " cmake -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" -DCMAKE_C_COMPILER="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc" -DCMAKE_C_COMPILER_ARG1="" -DCMAKE_CXX_COMPILER="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/g++-uc" -DCMAKE_CXX_COMPILER_ARG1="" -DCMAKE_ASM_COMPILER="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc" -DCMAKE_ASM_COMPILER_ARG1="" -DCMAKE_EXE_LINKER_FLAGS:STRING="-L/staging_dir/target-x86_64_musl/usr/lib -L/staging_dir/target-x86_64_musl/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/usr/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/lib -znow -zrelro" -DCMAKE_MODULE_LINKER_FLAGS:STRING="-L/staging_dir/target-x86_64_musl/usr/lib -L/staging_dir/target-x86_64_musl/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/usr/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/lib -znow -zrelro -Wl,-Bsymbolic-functions" -DCMAKE_SHARED_LINKER_FLAGS:STRING="-L/staging_dir/target-x86_64_musl/usr/lib -L/staging_dir/target-x86_64_musl/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/usr/lib -L/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/lib -znow -zrelro -Wl,-Bsymbolic-functions" -DCMAKE_AR="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc-ar" -DCMAKE_NM="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc-nm" -DCMAKE_RANLIB="/staging_dir/toolchain-x86_64_gcc-5.4.0_musl/bin/x86_64-openwrt-linux-musl-gcc-ranlib" -DCMAKE_FIND_ROOT_PATH="/staging_dir/target-x86_64_musl/usr;/staging_dir/toolchain-x86_64_gcc-5.4.0_musl" -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_STRIP=: -DCMAKE_INSTALL_PREFIX=/usr -DDL_LIBRARY=/staging_dir/target-x86_64_musl -DCMAKE_PREFIX_PATH=/staging_dir/target-x86_64_musl -DCMAKE_SKIP_RPATH=TRUE -DCMAKE_SYSTEM_NAME=Linux -DSTACK_DIRECTION=-1 -DWITH_WSREP=ON -DWITH_INNODB_DISALLOW_WRITES=1 -DCONNECT_WITH_JDBC=OFF -DWITHOUT_TOKUDB=1 -DIMPORT_EXECUTABLES=/build_dir/hostpkg/mariadb-10.2.4/host/import_executables.cmake /build_dir/target-x86_64_musl/mariadb-10.2.4 )
can someone give me an advice ?
Regards
_______________________________________________ Mailing list: https://launchpad.net/~maria-discuss Post to : maria-discuss@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-discuss More help : https://help.launchpad.net/ListHelp
Thanks but it didn't work
The 5.5.54 version is not failing at innodb but is failing at handler_socket so I just deleted the CMakeList.txt from it so it wouldn't compile, should I expect to have problems without it ? Regards
participants (2)
-
Daniel Black
-
Lucian Cristian