saleyn / eixx Goto Github PK
View Code? Open in Web Editor NEWErlang C++ Interface
License: Apache License 2.0
Erlang C++ Interface
License: Apache License 2.0
Hello, I am using g++ 5.2.1 on x86_64 and see the following:
> ./test_eterm
Running 63 test cases...
test_eterm.cpp(351): fatal error: in "test_pid": critical check atom("abc@fc12") == et.node() has failed [abc@fc12 != abc@fc12]
test_eterm.cpp(413): fatal error: in "test_port": critical check atom("abc@fc12") == et.node() has failed [abc@fc12 != abc@fc12]
test_eterm.cpp(441): fatal error: in "test_ref": critical check atom("abc@fc12") == et.node() has failed [abc@fc12 != abc@fc12]
test_eterm_encode.cpp(162): fatal error: in "test_encode_pid": critical check eterm(pid) == t has failed [#Pid<[email protected]> != #Pid<[email protected]>]
test_eterm_encode.cpp(185): fatal error: in "test_encode_port": critical check t1 == t has failed [#Port<[email protected]> != #Port<[email protected]>]
test_eterm_encode.cpp(200): fatal error: in "test_encode_ref": critical check eterm(t1) == t has failed [#Ref<[email protected]> != #Ref<[email protected]>]
test_eterm_encode.cpp(256): fatal error: in "test_encode_trace": critical check self == t1.from() has failed
test_eterm_match.cpp(68): fatal error: in "test_match1": critical check res has failed
test_eterm_match.cpp(158): fatal error: in "test_match2": critical check m0 has failed
test_eterm_match.cpp(212): fatal error: in "test_match3": critical check atom("x12") == n->to_atom() has failed [x12 != x12]
Hello,
I am trying to compile eixx and see the following:
g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I./../include -pthread -I/usr/include -I /usr/lib/erlang/lib/erl_interface-3.7.17/include -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT test_node-test_node.o -MD -MP -MF .deps/test_node-test_node.Tpo -c -o test_node-test_node.o `test -f 'test_node.cpp' || echo './'`test_node.cpp
In file included from /usr/include/boost/spirit/home/support/detail/endian/endian.hpp:45:0,
from /usr/include/boost/spirit/home/support/detail/endian.hpp:26,
from ./../include/eixx/marshal/endian.hpp:35,
from ./../include/eixx/marshal/atom.hpp:40,
from ./../include/eixx/marshal/eterm.hpp:45,
from ./../include/eixx/eterm.hpp:37,
from ./../include/eixx/eixx.hpp:65,
from test_node.cpp:2:
./../include/eixx/eterm.hpp:57:5: error: static assertion failed: sizeof(eterm) == 2*sizeof(uint64_t)
BOOST_STATIC_ASSERT(sizeof(eterm) == 2*sizeof(uint64_t));
^
I use gcc 4.8.3, and boost 1.58, my system arch is x86 (32-bit).
This is a great project, but it's not being updated for compatibility with (currently) OTP 21/OTP 20. I have to downgrade my erlang version in order to use eixx, since my c++ node created using eixx doesn't accept UTF-8 atoms. There are probably other issues too, but this is the error I got running the example and so I stopped there. This is the best c++ to erlang connection tool I have found so far, and much better than the options on the official docs. I think it has a lot of potential if it is kept up-to-date, especially since newer companies like Discord are starting to use Erlang more. So this is simply a request that that happen. It would be nice.
Hi. On Travis CI's architecture (Ubuntu 12 LTS I believe) I get
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
./configure: line 3302: syntax error near unexpected token `noext,'
./configure: line 3302: ` AX_CXX_COMPILE_STDCXX_11(noext, optional)'
My .travis.yml file: https://github.com/fenollp/eixx/blob/6f22bbcee0ae0a2dcb591f0b00a2936ffda70a58/.travis.yml
Do I need to install something?
What is HAVE_EI_EPMD
used for? Is it important?
-- Found boost: /usr/local/Cellar/boost/1.76.0/lib
-- Looking for epmd/ei_epmd.h
-- Looking for epmd/ei_epmd.h - not found
-- Check alignment of uint64_t in cpp: 8
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
When configured with --enable-optimizer
on x86_64 platform
> gdb ./test_connect
GNU gdb (GDB; devel:gcc) 7.8.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
warning: /etc/gdbinit.d/gdb-heap.py: Нет такого файла или каталога
Reading symbols from ./test_connect...done.
(gdb) run
Starting program: /home/matwey/lab/eixx/test/.libs/test_connect
Missing separate debuginfos, use: zypper install glibc-debuginfo-2.19-16.15.1.x86_64
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Running 2 test cases...
[New Thread 0x7ffff54fd700 (LWP 14952)]
[New Thread 0x7ffff4cfc700 (LWP 14953)]
[New Thread 0x7ffff44fb700 (LWP 14954)]
[New Thread 0x7ffff3cfa700 (LWP 14955)]
[Thread 0x7ffff54fd700 (LWP 14952) exited]
[Thread 0x7ffff44fb700 (LWP 14954) exited]
[Thread 0x7ffff3cfa700 (LWP 14955) exited]
[Thread 0x7ffff4cfc700 (LWP 14953) exited]
Program received signal SIGSEGV, Segmentation fault.
0x000000000040d976 in operator() (v=<optimized out>, ec=..., __closure=0x419cd9) at test_async_queue.cpp:159
159 [&abort] (int& v, const boost::system::error_code& ec) { return !abort; },
Missing separate debuginfos, use: zypper install libgcc_s1-debuginfo-4.8.3+r212056-2.2.4.x86_64 libstdc++6-debuginfo-4.8.3+r212056-2.2.4.x86_64
(gdb) bt
#0 0x000000000040d976 in operator() (v=<optimized out>, ec=..., __closure=0x419cd9) at test_async_queue.cpp:159
#1 std::_Function_handler<bool(int&, const boost::system::error_code&), test_async_queue_concurrent::test_method()::__lambda9>::_M_invoke(const std::_Any_data &, int &, const boost::system::error_code &) (__functor=..., __args#0=@0x7fffffffd0e0: 4212224, __args#1=...)
at /usr/include/c++/4.8/functional:2057
#2 0x0000000000418fc2 in eixx::util::async_queue<int, std::allocator<char> >::process_queue(std::function<bool (int&, boost::system::error_code const&)> const&, boost::system::error_code const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int) (this=0x62d780, h=..., ec=..., repeat=...,
repeat_count=2147483647) at ./../include/eixx/util/async_queue.hpp:109
#3 0x000000000041968d in operator() (repeat_count=<optimized out>, repeat=..., ec=..., h=..., this=<optimized out>)
at ./../include/eixx/util/async_queue.hpp:132
#4 operator() (e=..., __closure=0x7fffffffd200) at ./../include/eixx/util/async_queue.hpp:222
#5 operator() (this=0x7fffffffd200) at /usr/include/boost/asio/detail/bind_handler.hpp:47
#6 asio_handler_invoke<boost::asio::detail::binder1<eixx::util::async_queue<T, Alloc>::async_dequeue(const async_handler&, std::chrono::milliseconds, int) [with T = int; Alloc = std::allocator<char>; eixx::util::async_queue<T, Alloc>::async_handler = std::function<bool(int&, const boost::system::error_code&)>; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]::__lambda3, boost::system::error_code> > (
function=...) at /usr/include/boost/asio/handler_invoke_hook.hpp:69
#7 invoke<boost::asio::detail::binder1<eixx::util::async_queue<T, Alloc>::async_dequeue(const async_handler&, std::chrono::milliseconds, int) [with T = int; Alloc = std::allocator<char>; eixx::util::async_queue<T, Alloc>::async_handler = std::function<bool(int&, const boost::system::error_code&)>; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]::__lambda3, boost::system::error_code>, eixx::util::async_queue<T, Alloc>::async_dequeue(const async_handler&, std::chrono::milliseconds, int) [with T = int; Alloc = std::allocator<char>; eixx::util::async_queue<T, Alloc>::async_handler = std::function<bool(int&, const boost::system::error_code&)>; std::chrono::milliseconds = std::chrono::duration<long int, std::ratio<1l, 1000l> >]::__lambda3> (context=..., function=...) at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#8 boost::asio::detail::wait_handler<eixx::util::async_queue<int, std::allocator<char> >::async_dequeue(std::function<bool (int&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}>::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) (
owner=<optimized out>, base=<optimized out>) at /usr/include/boost/asio/detail/wait_handler.hpp:70
#9 0x0000000000413a60 in complete (bytes_transferred=<optimized out>, ec=..., owner=..., this=<optimized out>)
at /usr/include/boost/asio/detail/task_io_service_operation.hpp:38
#10 do_run_one (ec=..., this_thread=..., lock=..., this=0x629b00) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:372
#11 boost::asio::detail::task_io_service::run (this=0x629b00, ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:149
#12 0x000000000040e4d4 in boost::asio::io_service::run (this=0x7fffffffd3c0) at /usr/include/boost/asio/impl/io_service.ipp:59
#13 0x000000000040f219 in test_async_queue_concurrent::test_method (this=this@entry=0x7fffffffd68f) at test_async_queue.cpp:174
#14 0x000000000040f59e in test_async_queue_concurrent_invoker () at test_async_queue.cpp:124
#15 0x00000000004109a7 in invoke<void (*)()> (this=<optimized out>, f=<optimized out>) at /usr/include/boost/test/utils/callback.hpp:56
#16 boost::unit_test::ut_detail::callback0_impl_t<boost::unit_test::ut_detail::unused, void (*)()>::invoke (this=<optimized out>)
at /usr/include/boost/test/utils/callback.hpp:89
#17 0x00007ffff7781c71 in boost::unit_test::ut_detail::callback0_impl_t<int, boost::unit_test::(anonymous namespace)::zero_return_wrapper_t<boost::unit_test::callback0<boost::unit_test::ut_detail::unused> > >::invoke() () from /usr/lib64/libboost_unit_test_framework.so.1.58.0
---Type <return> to continue, or q <return> to quit---
#18 0x00007ffff776c8de in boost::execution_monitor::catch_signals(boost::unit_test::callback0<int> const&) ()
from /usr/lib64/libboost_unit_test_framework.so.1.58.0
#19 0x00007ffff776d123 in boost::execution_monitor::execute(boost::unit_test::callback0<int> const&) ()
from /usr/lib64/libboost_unit_test_framework.so.1.58.0
#20 0x00007ffff7781d72 in boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::unit_test::test_case const&) ()
from /usr/lib64/libboost_unit_test_framework.so.1.58.0
#21 0x00007ffff776f1d4 in boost::unit_test::framework_impl::visit(boost::unit_test::test_case const&) ()
from /usr/lib64/libboost_unit_test_framework.so.1.58.0
#22 0x00007ffff779a833 in boost::unit_test::traverse_test_tree(boost::unit_test::test_suite const&, boost::unit_test::test_tree_visitor&) ()
from /usr/lib64/libboost_unit_test_framework.so.1.58.0
#23 0x00007ffff776e09b in boost::unit_test::framework::run(unsigned long, bool) () from /usr/lib64/libboost_unit_test_framework.so.1.58.0
#24 0x00007ffff777f954 in boost::unit_test::unit_test_main(bool (*)(), int, char**) () from /usr/lib64/libboost_unit_test_framework.so.1.58.0
#25 0x00007ffff6738b05 in __libc_start_main () from /lib64/libc.so.6
#26 0x000000000040d8a4 in _start () at ../sysdeps/x86_64/start.S:122
(gdb)
Hallo!
I try with your implementation of eixx library. When I start the Erlang node as well as the example program, all I get is:
$ erl -sname test -setcookie abc
Erlang R14B01 (erts-5.8.2) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8.2 (abort with ^G)
(test@macbook)1>
=ERROR REPORT==== 13-Jan-2011::21:42:49 ===
** Connection attempt from disallowed node eixx@macbook **
and on the test_node side:
[macbook: src (dev)]$ ./test_node -n eixx@macbook -r test@macbook -c abc -v trace
Calling connection::connection(type=1)
-> sending epmd port req for 'test': <<0,5,122,116,101,115,116>>
<- response from epmd: 0 (ok)
<- epmd returned: port=51851,ntype=77,proto=0,dist_high=5,dist_low=5
<- Connected to node: test@macbook
-> sending name 21 bytes:<<0,19,110,0,5,0,0,9,156,101,105,120,120,64,109,97,99,98,111,111,107>>
<- got auth challenge (version=5, flags=32764, remote_challenge=1199743460)
-> sending challenge reply 23 bytes:<<0,21,114,188,139,248,119,217,82,143,132,169,139,199,177,186,112,38,51,27,135,227,176>>
Error reading auth challenge ack from node 'test@macbook': Possibly bad cookie?
This leaves me helpless. Both sides make use of the same cookie. Do you have an idea, why the authentication fails?
Regards,
Ralf
I wrote a custom cmake for this project, but it errors on my Clang 3.4 compiler on OSX Mavericks.
eixx/src/../include/eixx/marshal/ref.hpp:199:84: error: invalid use of non-static data member 'u'
::memcmp(&m_blob->data()->u, &t.m_blob->data()->u, sizeof(ref_blob::u)) == 0;
~~~~~~~~~~^
eixx/src/../include/eixx/marshal/eterm.ipp:79:37: note: in instantiation of member function 'eixx::marshal::ref<std::__1::allocator<char> >::operator==' requested here
case REF: return vt.r == rhs.vt.r;
^
eixx/src/../include/eixx/marshal/visit_match.hpp:65:23: note: in instantiation of member function 'eixx::marshal::eterm<std::__1::allocator<char> >::operator==' requested here
return et == m_pattern;
^
eixx/src/../include/eixx/marshal/visit.hpp:50:23: note: in instantiation of function template specialization 'eixx::marshal::visit_eterm_match<std::__1::allocator<char> >::operator()<long>' requested here
: result( v(t1) )
^
eixx/src/../include/eixx/marshal/eterm.hpp:570:33: note: in instantiation of function template specialization 'eixx::marshal::wrap<bool, eixx::marshal::visit_eterm_match<std::__1::allocator<char> > >::wrap<long>' requested here
case LONG: return wrapper(v, vt.i);
^
eixx/src/../include/eixx/marshal/visit.hpp:66:19: note: in instantiation of function template specialization 'eixx::marshal::eterm<std::__1::allocator<char> >::visit<eixx::marshal::visit_eterm_match<std::__1::allocator<char> > >' requested here
return et.visit(*static_cast<const Derived*>(this)).result;
^
eixx/src/../include/eixx/marshal/eterm.ipp:263:22: note: in instantiation of function template specialization 'eixx::marshal::static_visitor<eixx::marshal::visit_eterm_match<std::__1::allocator<char> >, bool>::apply_visitor<std::__1::allocator<char> >' requested here
if (!visitor.apply_visitor(*this))
^
eixx/src/test_node.cpp:43:21: note: in instantiation of member function 'eixx::marshal::eterm<std::__1::allocator<char> >::match' requested here
if (s_put_chars.match(a_msg->msg(), &l_binding))
^
6 warnings and 2 errors generated.
make[2]: *** [src/CMakeFiles/test_node.dir/test_node.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/test_node.dir/all] Error 2
make: *** [all] Error 2
16:34:33: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project eixx (kit: Desktop Qt 5.2.1 clang 64bit)
When executing step "Make"
16:34:33: Elapsed time: 00:10.
Hi,
make install
installs README.md
and LICENSE
into prefix
, which is something like /usr/
or /usr/local/
. This is incorrect place for the files.
Please provide builds that are easily used so that users don't have to download and compile the code.
$ make
/Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive
Making all in src
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-am.lo -MD -MP -MF .deps/libeixx_la-am.Tpo -c -o libeixx_la-am.lo `test -f 'am.cpp' || echo './'`am.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-am.lo -MD -MP -MF .deps/libeixx_la-am.Tpo -c am.cpp -fno-common -DPIC -o .libs/libeixx_la-am.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
1 warning generated.
mv -f .deps/libeixx_la-am.Tpo .deps/libeixx_la-am.Plo
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-atom.lo -MD -MP -MF .deps/libeixx_la-atom.Tpo -c -o libeixx_la-atom.lo `test -f 'atom.cpp' || echo './'`atom.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-atom.lo -MD -MP -MF .deps/libeixx_la-atom.Tpo -c atom.cpp -fno-common -DPIC -o .libs/libeixx_la-atom.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
In file included from ../include/eixx/marshal/tuple.hpp:41:
../include/eixx/marshal/visit.hpp:41:31: warning: class template 'tuple' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class tuple;
^
../include/eixx/marshal/defaults.hpp:44:42: note: previous use is here
template <typename Alloc> struct tuple;
^
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
In file included from ../include/eixx/marshal/tuple.hpp:41:
../include/eixx/marshal/visit.hpp:42:31: warning: class template 'list' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class list;
^
../include/eixx/marshal/defaults.hpp:45:42: note: previous use is here
template <typename Alloc> struct list;
^
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
../include/eixx/marshal/tuple.hpp:48:27: warning: class template 'eterm' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class eterm;
^
../include/eixx/marshal/defaults.hpp:43:42: note: previous use is here
template <typename Alloc> struct eterm;
^
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
../include/eixx/marshal/tuple.hpp:51:1: warning: 'tuple' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class tuple {
^
../include/eixx/marshal/defaults.hpp:44:35: note: did you mean class here?
template <typename Alloc> struct tuple;
^~~~~~
class
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:52:
../include/eixx/marshal/list.hpp:52:1: warning: 'list' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class list : protected alloc_base<cons<Alloc>, Alloc> {
^
../include/eixx/marshal/defaults.hpp:45:35: note: did you mean class here?
template <typename Alloc> struct list;
^~~~~~
class
In file included from atom.cpp:25:
../include/eixx/marshal/eterm.hpp:132:1: warning: 'eterm' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class eterm {
^
../include/eixx/marshal/defaults.hpp:43:35: note: did you mean class here?
template <typename Alloc> struct eterm;
^~~~~~
class
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:606:
In file included from ../include/eixx/marshal/eterm.ipp:39:
In file included from ../include/eixx/marshal/eterm_format.hpp:70:
../include/eixx/marshal/eterm_format.ipp:108:16: warning: 'static' function
'pvariable' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static var pvariable(const char **fmt)
^
../include/eixx/marshal/eterm_format.ipp:148:17: warning: 'static' function
'patom' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static atom patom(const char **fmt)
^
../include/eixx/marshal/eterm_format.ipp:161:17: warning: 'static' function
'pquotedatom' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static atom pquotedatom(const char **fmt)
^
10 warnings generated.
mv -f .deps/libeixx_la-atom.Tpo .deps/libeixx_la-atom.Plo
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-defaults.lo -MD -MP -MF .deps/libeixx_la-defaults.Tpo -c -o libeixx_la-defaults.lo `test -f 'defaults.cpp' || echo './'`defaults.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-defaults.lo -MD -MP -MF .deps/libeixx_la-defaults.Tpo -c defaults.cpp -fno-common -DPIC -o .libs/libeixx_la-defaults.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
1 warning generated.
mv -f .deps/libeixx_la-defaults.Tpo .deps/libeixx_la-defaults.Plo
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-ref.lo -MD -MP -MF .deps/libeixx_la-ref.Tpo -c -o libeixx_la-ref.lo `test -f 'ref.cpp' || echo './'`ref.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-ref.lo -MD -MP -MF .deps/libeixx_la-ref.Tpo -c ref.cpp -fno-common -DPIC -o .libs/libeixx_la-ref.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
In file included from ../include/eixx/marshal/tuple.hpp:41:
../include/eixx/marshal/visit.hpp:41:31: warning: class template 'tuple' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class tuple;
^
../include/eixx/marshal/defaults.hpp:44:42: note: previous use is here
template <typename Alloc> struct tuple;
^
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
In file included from ../include/eixx/marshal/tuple.hpp:41:
../include/eixx/marshal/visit.hpp:42:31: warning: class template 'list' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class list;
^
../include/eixx/marshal/defaults.hpp:45:42: note: previous use is here
template <typename Alloc> struct list;
^
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
../include/eixx/marshal/tuple.hpp:48:27: warning: class template 'eterm' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class eterm;
^
../include/eixx/marshal/defaults.hpp:43:42: note: previous use is here
template <typename Alloc> struct eterm;
^
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
../include/eixx/marshal/tuple.hpp:51:1: warning: 'tuple' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class tuple {
^
../include/eixx/marshal/defaults.hpp:44:35: note: did you mean class here?
template <typename Alloc> struct tuple;
^~~~~~
class
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:52:
../include/eixx/marshal/list.hpp:52:1: warning: 'list' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class list : protected alloc_base<cons<Alloc>, Alloc> {
^
../include/eixx/marshal/defaults.hpp:45:35: note: did you mean class here?
template <typename Alloc> struct list;
^~~~~~
class
In file included from ref.cpp:25:
../include/eixx/marshal/eterm.hpp:132:1: warning: 'eterm' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class eterm {
^
../include/eixx/marshal/defaults.hpp:43:35: note: did you mean class here?
template <typename Alloc> struct eterm;
^~~~~~
class
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:606:
In file included from ../include/eixx/marshal/eterm.ipp:39:
In file included from ../include/eixx/marshal/eterm_format.hpp:70:
../include/eixx/marshal/eterm_format.ipp:108:16: warning: 'static' function
'pvariable' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static var pvariable(const char **fmt)
^
../include/eixx/marshal/eterm_format.ipp:148:17: warning: 'static' function
'patom' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static atom patom(const char **fmt)
^
../include/eixx/marshal/eterm_format.ipp:161:17: warning: 'static' function
'pquotedatom' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static atom pquotedatom(const char **fmt)
^
10 warnings generated.
mv -f .deps/libeixx_la-ref.Tpo .deps/libeixx_la-ref.Plo
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-basic_otp_node_local.lo -MD -MP -MF .deps/libeixx_la-basic_otp_node_local.Tpo -c -o libeixx_la-basic_otp_node_local.lo `test -f 'basic_otp_node_local.cpp' || echo './'`basic_otp_node_local.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-basic_otp_node_local.lo -MD -MP -MF .deps/libeixx_la-basic_otp_node_local.Tpo -c basic_otp_node_local.cpp -fno-common -DPIC -o .libs/libeixx_la-basic_otp_node_local.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
1 warning generated.
mv -f .deps/libeixx_la-basic_otp_node_local.Tpo .deps/libeixx_la-basic_otp_node_local.Plo
/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -L/usr/local/lib -lboost_system -o libeixx.la -rpath /Users/fire/Documents/eixx/install/lib libeixx_la-am.lo libeixx_la-atom.lo libeixx_la-defaults.lo libeixx_la-ref.lo libeixx_la-basic_otp_node_local.lo
libtool: link: g++ -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libeixx.0.dylib .libs/libeixx_la-am.o .libs/libeixx_la-atom.o .libs/libeixx_la-defaults.o .libs/libeixx_la-ref.o .libs/libeixx_la-basic_otp_node_local.o -L/usr/local/lib -lboost_system -O0 -pthread -pthread -install_name /Users/fire/Documents/eixx/install/lib/libeixx.0.dylib -compatibility_version 1 -current_version 1.0 -Wl,-single_module
clang: warning: argument unused during compilation: '-pthread'
clang: warning: argument unused during compilation: '-pthread'
libtool: link: (cd ".libs" && rm -f "libeixx.dylib" && ln -s "libeixx.0.dylib" "libeixx.dylib")
libtool: link: ( cd ".libs" && rm -f "libeixx.la" && ln -s "../libeixx.la" "libeixx.la" )
g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I./../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT test_node-test_node.o -MD -MP -MF .deps/test_node-test_node.Tpo -c -o test_node-test_node.o `test -f 'test_node.cpp' || echo './'`test_node.cpp
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:51:
In file included from ./../include/eixx/marshal/tuple.hpp:41:
./../include/eixx/marshal/visit.hpp:41:31: warning: class template 'tuple' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class tuple;
^
./../include/eixx/marshal/defaults.hpp:44:42: note: previous use is here
template <typename Alloc> struct tuple;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:51:
In file included from ./../include/eixx/marshal/tuple.hpp:41:
./../include/eixx/marshal/visit.hpp:42:31: warning: class template 'list' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class list;
^
./../include/eixx/marshal/defaults.hpp:45:42: note: previous use is here
template <typename Alloc> struct list;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:51:
./../include/eixx/marshal/tuple.hpp:48:27: warning: class template 'eterm' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class eterm;
^
./../include/eixx/marshal/defaults.hpp:43:42: note: previous use is here
template <typename Alloc> struct eterm;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:51:
./../include/eixx/marshal/tuple.hpp:51:1: warning: 'tuple' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class tuple {
^
./../include/eixx/marshal/defaults.hpp:44:35: note: did you mean class here?
template <typename Alloc> struct tuple;
^~~~~~
class
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:52:
./../include/eixx/marshal/list.hpp:52:1: warning: 'list' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class list : protected alloc_base<cons<Alloc>, Alloc> {
^
./../include/eixx/marshal/defaults.hpp:45:35: note: did you mean class here?
template <typename Alloc> struct list;
^~~~~~
class
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
./../include/eixx/marshal/eterm.hpp:132:1: warning: 'eterm' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class eterm {
^
./../include/eixx/marshal/defaults.hpp:43:35: note: did you mean class here?
template <typename Alloc> struct eterm;
^~~~~~
class
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:36:
./../include/eixx/connect/basic_otp_mailbox.hpp:105:45: warning: class template
'async_queue' was previously declared as a struct template
[-Wmismatched-tags]
template<typename T, typename A> friend class util::async_queue;
^
./../include/eixx/util/async_queue.hpp:57:8: note: previous use is here
struct async_queue : std::enable_shared_from_this<async_queue<T, Alloc>>
^
./../include/eixx/connect/basic_otp_mailbox.hpp:105:45: note: did you mean
struct here?
template<typename T, typename A> friend class util::async_queue;
^~~~~
struct
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:36:
In file included from ./../include/eixx/connect/basic_otp_mailbox.hpp:353:
./../include/eixx/connect/basic_otp_mailbox.ipp:93:18: warning: unused variable
'res' [-Wunused-variable]
bool res;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:694:5: warning:
'MD5' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5((unsigned char *) string, length, (unsigned char *) digest.c);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:116:16: note:
'MD5' has been explicitly marked deprecated here
unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md) ...
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:706:5: warning:
'MD5_Init' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5_Init(&c);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:113:5: note:
'MD5_Init' has been explicitly marked deprecated here
int MD5_Init(MD5_CTX *c) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:707:5: warning:
'MD5_Update' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5_Update(&c, (unsigned char *) cookie, (uint32_t) strlen(cookie));
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:114:5: note:
'MD5_Update' has been explicitly marked deprecated here
int MD5_Update(MD5_CTX *c, const void *data, size_t len) DEPRECATED_IN_M...
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:708:5: warning:
'MD5_Update' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5_Update(&c, (unsigned char *) chbuf, (uint32_t) strlen(chbuf));
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:114:5: note:
'MD5_Update' has been explicitly marked deprecated here
int MD5_Update(MD5_CTX *c, const void *data, size_t len) DEPRECATED_IN_M...
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:709:5: warning:
'MD5_Final' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5_Final(digest, &c);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:115:5: note:
'MD5_Final' has been explicitly marked deprecated here
int MD5_Final(unsigned char *md, MD5_CTX *c) DEPRECATED_IN_MAC_OS_X_VERS...
^
test_node.cpp:72:47: warning: format specifies type 'long' but the argument has
type '__darwin_suseconds_t' (aka 'int') [-Wformat]
tm.tm_hour, tm.tm_min, tm.tm_sec, tv.tv_usec);
^~~~~~~~~~
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:45:
In file included from ./../include/eixx/marshal/atom.hpp:37:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:502:5: error:
static_assert failed "Allocator::value_type must be same type as
value_type"
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./../include/eixx/marshal/eterm_format.ipp:63:32: note: in instantiation of
template class
'std::__1::vector<eixx::marshal::eterm<std::__1::allocator<char> >,
std::__1::allocator<char> >' requested here
struct vector : public std::vector<eterm<Alloc>, Alloc> {
^
./../include/eixx/marshal/eterm_format.ipp:350:23: note: in instantiation of
template class
'eixx::marshal::<anonymous>::vector<std::__1::allocator<char> >' requested
here
vector<Alloc> v(a_alloc);
^
./../include/eixx/marshal/eterm.ipp:298:16: note: in instantiation of function
template specialization 'eixx::marshal::eformat<std::__1::allocator<char>
>' requested here
return eformat<Alloc>(fmt, pap, a_alloc);
^
./../include/eixx/marshal/eterm.ipp:337:18: note: in instantiation of member
function 'eixx::marshal::eterm<std::__1::allocator<char> >::format'
requested here
try { return format(Alloc(), &fmt, &ap); } catch (...) { va_end(ap)...
^
test_node.cpp:38:45: note: in instantiation of member function
'eixx::marshal::eterm<std::__1::allocator<char> >::format' requested here
static const eterm s_put_chars = eterm::format("{io_request,_,_,{put...
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:50:
./../include/eixx/marshal/ref.hpp:199:84: error: invalid use of non-static data
member 'u'
...::memcmp(&m_blob->data()->u, &t.m_blob->data()->u, sizeof(ref_blob::u)) ...
~~~~~~~~~~^
./../include/eixx/marshal/eterm.ipp:79:37: note: in instantiation of member
function 'eixx::marshal::ref<std::__1::allocator<char> >::operator=='
requested here
case REF: return vt.r == rhs.vt.r;
^
./../include/eixx/marshal/visit_match.hpp:65:23: note: in instantiation of
member function 'eixx::marshal::eterm<std::__1::allocator<char>
>::operator==' requested here
return et == m_pattern;
^
./../include/eixx/marshal/visit.hpp:50:23: note: in instantiation of function
template specialization
'eixx::marshal::visit_eterm_match<std::__1::allocator<char>
>::operator()<long>' requested here
: result( v(t1) )
^
./../include/eixx/marshal/eterm.hpp:570:33: note: in instantiation of function
template specialization 'eixx::marshal::wrap<bool,
eixx::marshal::visit_eterm_match<std::__1::allocator<char> >
>::wrap<long>' requested here
case LONG: return wrapper(v, vt.i);
^
./../include/eixx/marshal/visit.hpp:66:19: note: in instantiation of function
template specialization 'eixx::marshal::eterm<std::__1::allocator<char>
>::visit<eixx::marshal::visit_eterm_match<std::__1::allocator<char> > >'
requested here
return et.visit(*static_cast<const Derived*>(this)).result;
^
./../include/eixx/marshal/eterm.ipp:263:22: note: in instantiation of function
template specialization
'eixx::marshal::static_visitor<eixx::marshal::visit_eterm_match<std::__1::allocator<char>
>, bool>::apply_visitor<std::__1::allocator<char> >' requested here
if (!visitor.apply_visitor(*this))
^
test_node.cpp:41:21: note: in instantiation of member function
'eixx::marshal::eterm<std::__1::allocator<char> >::match' requested here
if (s_put_chars.match(a_msg->msg(), &l_binding))
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:52:
In file included from ./../include/eixx/marshal/list.hpp:356:
./../include/eixx/marshal/list.ipp:55:9: error: 'auto' deduced as 'const
eixx::marshal::eterm<std::__1::allocator<char> > *' in declaration of 'p'
and deduced as 'const eixx::marshal::eterm<std::__1::allocator<char> >' in
declaration of 'end'
for(auto p = items, *end = items+N; p != end; ++p, ++hd) {
^ ~~~~~ ~~~~~~~
./../include/eixx/marshal/list.hpp:146:27: note: in instantiation of member
function 'eixx::marshal::list<std::__1::allocator<char> >::init' requested
here
: base_t(alloc) { init(items, a_size, alloc); }
^
./../include/eixx/marshal/list.hpp:143:11: note: in instantiation of member
function 'eixx::marshal::list<std::__1::allocator<char> >::list' requested
here
: list(items, N, alloc) {}
^
./../include/eixx/marshal/list.hpp:245:16: note: in instantiation of function
template specialization 'eixx::marshal::list<std::__1::allocator<char>
>::list<1>' requested here
return list<Alloc>(l, a);
^
test_node.cpp:94:15: note: in instantiation of function template specialization
'eixx::marshal::list<std::__1::allocator<char> >::make<const char *>'
requested here
list::make("This is a test string"), &g_io_server->self());
^
15 warnings and 3 errors generated.
make[2]: *** [test_node-test_node.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
Is there support for marshalling ATOM_UTF8_EXT
and SMALL_ATOM_UTF8_EXT
since ATOM_EXT
and SMALL_ATOM_EXT
has been officially DEPRECATED? (https://erlang.org/doc/apps/erts/erl_ext_dist.html#atom_utf8_ext)
Following my upgrade to OTP20, I began getting this error when attempting to connect.
erl -sname abc &
./inst/test/test-node -n a@localhost -r [email protected]
** 'abc@localhost': Connection attempt from node a@localhost rejected since it cannot handle ["UTF8_ATOMS"].**
From the OTP20 Release notes
In the OTP 20 release candidates the function erlang:term_to_binary/1 changed the encoding of all atoms from ATOM_EXT to ATOM_UTF8_EXT and SMALL_ATOM_UTF8_EXT. This is now changed so that only atoms actually containing unicode characters are encoded with the UTF8 tags while other atoms are encoded ATOM_EXT just as before.
and
Atoms can now contain arbitrary unicode characters which means that the DFLAG_UTF8_ATOMS capability in the distribution protocol must be supported if an OTP 20 node should accept the connection with another node or library. Third party libraries which uses the distribution protocol need to be updated with this.
See: massemanet/distel#61
Following readme
Shell 1:
$ erl -sname abc
Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:6:6] [async-threads:10] [kernel-poll:false]
Eshell V5.10.4 (abort with ^G)
(abc@gir)1> register(test, self()).
true
Shell 2:
eixx/src$ libtool --mode=execute gdb test_node
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/myers/test_eixx/eixx/src/.libs/lt-test_node...done.
(gdb) run -n a@gir -r abc@gir
Starting program: /home/myers/test_eixx/eixx/src/.libs/lt-test_node -n a@gir -r abc@gir
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff5394700 (LWP 15159)]
Program received signal SIGSEGV, Segmentation fault.
0x00007fffffffdd10 in ?? ()
(gdb) bt
#0 0x00007fffffffdd10 in ?? ()
#1 0x000000000043eb5f in std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)>::operator()(eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&) const (
this=0x7fffffffdc40,
__args#0=@0x7fffffffd7f8: 0x4256ca <std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_lock()+24>,
__args#1=...) at /usr/include/c++/4.8/functional:2464
#2 0x00000000004443c7 in eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::process_queue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, boost::system::error_code const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int) (this=0x6ca440,
h=..., ec=..., repeat=..., repeat_count=2147483647) at ./../include/eixx/util/async_queue.hpp:109
#3 0x000000000043ebde in eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::operator()(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, boost::system::error_code const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int) (this=0x6ca440,
h=..., ec=..., repeat=..., repeat_count=2147483647) at ./../include/eixx/util/async_queue.hpp:132
#4 0x00000000004399be in eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}::operator()(boost::system::error_code const&) const (__closure=0x7fffffffd9d0, e=...)
at ./../include/eixx/util/async_queue.hpp:222
#5 0x0000000000462163 in boost::asio::detail::binder1<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}, boost::system::error_code>::operator()() (this=0x7fffffffd9d0)
at /usr/include/boost/asio/detail/bind_handler.hpp:47
#6 0x000000000045f2c7 in boost::asio::asio_handler_invoke<boost::asio::detail::binder1<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}, boost::system::error_code> >(boost::asio::detail::binder1<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}, boost::system::error_code>, ...) (
function=...) at /usr/include/boost/asio/handler_invoke_hook.hpp:64
#7 0x000000000045b779 in boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}, boost::system::error_code>, {lambda(boost::system::error_code const&)#2}>(boost::asio::detail::binder1<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}, boost::system::error_code>&, {lambda(boost::system::error_code const&)#2}&) (function=..., context=...)
at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37
#8 0x0000000000456dda in boost::asio::detail::wait_handler<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}>::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) (owner=0x6c6d80, base=0x6ef320)
at /usr/include/boost/asio/detail/wait_handler.hpp:70
#9 0x00000000004293b0 in boost::asio::detail::task_io_service_operation::complete (this=0x6ef320, owner=..., ec=...,
bytes_transferred=0) at /usr/include/boost/asio/detail/task_io_service_operation.hpp:37
#10 0x000000000042bcf7 in boost::asio::detail::task_io_service::do_run_one (this=0x6c6d80, lock=..., this_thread=...,
ec=...) at /usr/include/boost/asio/detail/impl/task_io_service.ipp:384
#11 0x000000000042b717 in boost::asio::detail::task_io_service::run (this=0x6c6d80, ec=...)
at /usr/include/boost/asio/detail/impl/task_io_service.ipp:153
#12 0x000000000042c0a3 in boost::asio::io_service::run (this=0x7fffffffdd10)
at /usr/include/boost/asio/impl/io_service.ipp:59
#13 0x0000000000434d10 in eixx::connect::basic_otp_node<std::allocator<char>, std::recursive_mutex>::run (
this=0x7fffffffdd60) at ./../include/eixx/connect/basic_otp_node.hpp:165
#14 0x0000000000423bf7 in main (argc=5, argv=0x7fffffffe008) at test_node.cpp:145
Hello,
I do the following commands:
make -j8 distclean
make -j8 bootstrap prefix=/usr build=Release
make -j8 verbose=true
make install DESTDIR=/home/abuild/rpmbuild/BUILDROOT/eixx-1.4+git20160510.cd24f3d-1.1.x86_64
[ 162s] CMake Error at src/cmake_install.cmake:58 (file):
[ 162s] file INSTALL cannot find
[ 162s] "/home/abuild/rpmbuild/BUILD/eixx-1.4+git20160510.cd24f3d/build/src/libeixx_d.so.1.4".
[ 162s] Call Stack (most recent call first):
[ 162s] cmake_install.cmake:92 (include)
[ 162s]
[ 162s]
[ 162s]
[ 162s] Makefile:71: recipe for target 'install' failed
[ 162s] make[1]: *** [install] Error 1
[ 162s] Makefile:47: recipe for target 'install' failed
[ 162s] make: *** [install] Error 2
Environment:
How to reproduce:
brew install cmake boost [email protected] doxygen
make distclean
env OPENSSL_ROOT_DIR=$(brew --prefix openssl) BOOST_ROOT=$(brew --prefix boost) make bootstrap toolchain=clang build=release prefix=/usr/local/opt verbose=true
Error:
/Users/heri/work/eixx/test/test_perf.cpp:23:30: error: use of undeclared identifier 'RUSAGE_THREAD'
void begin() { getrusage(RUSAGE_THREAD, &start); }
^
/Users/heri/work/eixx/test/test_perf.cpp:30:19: error: use of undeclared identifier 'RUSAGE_THREAD'
getrusage(RUSAGE_THREAD, &end);
^
2 errors generated.
make[3]: *** [test/CMakeFiles/test-perf.dir/test_perf.cpp.o] Error 1
make[2]: *** [test/CMakeFiles/test-perf.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
/Users/heri/work/eixx/test/test_eterm.cpp:36:31: error: no matching member function for call to 'get'
BOOST_REQUIRE_EQUAL(10, t.get<size_t>());
~~^~~~~~~~~~~
/usr/local/Cellar/boost/1.76.0/include/boost/test/tools/old/interface.hpp:157:86: note: expanded from macro 'BOOST_REQUIRE_EQUAL'
::boost::test_tools::tt_detail::equal_impl_frwd(), "", REQUIRE, CHECK_EQUAL, (L)(R) )
^
/usr/local/Cellar/boost/1.76.0/include/boost/test/tools/old/interface.hpp:74:61: note: expanded from macro 'BOOST_TEST_TOOL_IMPL'
BOOST_JOIN( BOOST_TEST_TOOL_PASS_ARGS, frwd_type )( ARGS ) ); \
^~~~
/usr/local/Cellar/boost/1.76.0/include/boost/test/tools/old/interface.hpp:57:57: note: expanded from macro 'BOOST_TEST_TOOL_PASS_ARGS0'
BOOST_PP_SEQ_FOR_EACH( BOOST_TEST_TOOL_PASS_ARG, _, ARGS )
^~~~
note: (skipping 20 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
/usr/local/Cellar/boost/1.76.0/include/boost/preprocessor/seq/elem.hpp:45:60: note: expanded from macro 'BOOST_PP_SEQ_ELEM_II'
# define BOOST_PP_SEQ_ELEM_II(im) BOOST_PP_SEQ_ELEM_III(im)
^~
/usr/local/Cellar/boost/1.76.0/include/boost/preprocessor/seq/elem.hpp:46:41: note: expanded from macro 'BOOST_PP_SEQ_ELEM_III'
# define BOOST_PP_SEQ_ELEM_III(x, _) x
^
/usr/local/Cellar/boost/1.76.0/include/boost/test/tools/old/interface.hpp:53:49: note: expanded from macro 'BOOST_TEST_TOOL_PASS_ARG'
#define BOOST_TEST_TOOL_PASS_ARG( r, _, arg ) , arg, BOOST_STRINGIZE( arg )
^~~
/Users/heri/work/eixx/include/eixx/marshal/eterm.hpp:438:5: note: candidate template ignored: requirement
'std::is_same<unsigned long, double>::value' was not satisfied [with T = unsigned long]
get() const { return to_double(); }
^
/Users/heri/work/eixx/include/eixx/marshal/eterm.hpp:442:5: note: candidate template ignored: requirement
'std::is_same<unsigned long, bool>::value' was not satisfied [with T = unsigned long]
get() const { return to_bool(); }
^
/Users/heri/work/eixx/include/eixx/marshal/eterm.hpp:454:5: note: candidate template ignored: requirement 'std::is_same<unsigned long,
char>::value || std::is_same<unsigned long, short>::value || std::is_same<unsigned long, int>::value || std::is_same<unsigned
long, long>::value || std::is_same<unsigned long, unsigned char>::value || std::is_same<unsigned long, unsigned short>::value ||
std::is_same<unsigned long, unsigned int>::value || std::is_same<unsigned long, unsigned long long>::value' was not satisfied
[with T = unsigned long]
get() const { return T(to_long()); }
^
/Users/heri/work/eixx/include/eixx/marshal/eterm.hpp:458:5: note: candidate template ignored: requirement 'std::is_same<unsigned long,
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value' was not satisfied
[with T = unsigned long]
get() const { return to_str().to_str(); }
^
1 error generated.
make[3]: *** [test/CMakeFiles/test-eterm.dir/test_eterm.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [test/CMakeFiles/test-eterm.dir/all] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2
Most of the files have a GPL header, but the LICENSE file indicates Apache 2.0. Has the license changed to Apache 2.0?
Sorry to have to ask, but we were hoping to use it in a non GPL project.
Not sure how to compile the files on OSX 10.9.5.
$ ./bootstrap
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I build-aux
autoreconf: configure.ac: tracing
autoreconf: running: glibtoolize --copy
autoreconf: running: /usr/local/Cellar/autoconf/2.69/bin/autoconf
configure.ac:78: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/local/Cellar/autoconf/2.69/bin/autoconf failed with exit status: 1
./test_node -n a@fc12 -r abc@fc12
I'm trying the above command from the README to see a remote node in action. I replaced fc12
with my own hostname. This segfaults. I tried it in gdb
libtool --mode=execute gdb test_node
run -n a@fc12 -r abc@fc12
bt
#0 0x00007fffffffdd20 in ?? ()
#1 0x000000000043eb5b in std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)>::operator()(eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&) const (
this=0x7fffffffdc50,
__args#0=@0x7fffffffd828: 0x4256ca <std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_lock()+24>,
__args#1=...) at /usr/include/c++/4.8/functional:2464
#2 0x00000000004443c3 in eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::process_queue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, boost::system::error_code const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int) (this=0x6c8440,
h=..., ec=..., repeat=..., repeat_count=2147483647) at ./../include/eixx/util/async_queue.hpp:109
#3 0x000000000043ebda in eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::operator()(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, boost::system::error_code const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int) (this=0x6c8440,
h=..., ec=..., repeat=..., repeat_count=2147483647) at ./../include/eixx/util/async_queue.hpp:132
#4 0x00000000004399ba in eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}::operator()(boost::system::error_code const&) const (__closure=0x7fffffffda80, e=...) at ./../include/eixx/util/async_queue.hpp:222
#5 0x0000000000461dbd in boost::asio::detail::binder1<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}, boost::system::error_code>::operator()() (this=0x7fffffffda80)
at /usr/include/boost/asio/detail/bind_handler.hpp:47
#6 0x000000000045f125 in boost::asio::asio_handler_invoke<boost::asio::detail::binder1<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}, boost::system::error_code> >(boost::asio::detail::binder1<eixx::util::async_queue<eixx::connect::transport_msg<std::allocator<char> >*, std::allocator<char> >::async_dequeue(std::function<bool (eixx::connect::transport_msg<std::allocator<char> >*&, boost::system::error_code const&)> const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, int)::{lambda(boost::system::error_code const&)#2}, boost::system::error_code>&, ...) (
function=...) at /usr/include/boost/asio/handler_invoke_hook.hpp:69
Built with libboost1.55-dev and erlang R16B03.
Error while linking basic_otp_node_local
:
[100%] Linking CXX executable
Undefined symbols for architecture x86_64:
"eixx::connect::basic_otp_node_local::basic_otp_node_local(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
eixx::connect::basic_otp_node<std::__1::allocator<char>, std::__1::recursive_mutex>::basic_otp_node(boost::asio::io_context&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::allocator<char> const&, signed char) in matching_node.cpp.o
ld: symbol(s) not found for architecture x86_64
CMakefile:
# PkgConfig
find_package(Boost 1.55.0 REQUIRED COMPONENTS system thread)
find_package(PkgConfig REQUIRED)
pkg_search_module(EIXX REQUIRED eixx>=1.4)
pkg_search_module(OPENSSL REQUIRED openssl)
if(Boost_FOUND)
#include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
message(STATUS "Found boost: ${Boost_LIBRARY_DIRS}")
endif()
if(EIXX_FOUND)
#include_directories(SYSTEM ${EIXX_INCLUDE_DIRS})
link_directories(${EIXX_LIBRARY_DIRS})
message(STATUS "Found eixx: ${EIXX_LIBRARY_DIRS} ${EIXX_LIBRARIES}")
endif()
if(OPENSSL_FOUND)
#include_directories(SYSTEM ${OPENSSL_INCLUDE_DIRS})
link_directories(${OPENSSL_LIBRARY_DIRS})
message(STATUS "Found openssl: ${OPENSSL_LIBRARY_DIRS}")
endif()
...
target_include_directories(${EXAMPLE_TARGET} PRIVATE ${EIXX_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIRS})
target_link_libraries(${EXAMPLE_TARGET} ${LINKLIBS} ${EIXX_LIBRARIES})
...
Shouldn't these lines include the basic_otp_node_local
into the shared library?
Lines 8 to 16 in 5c0baa3
Hello,
I am using boost-1.60.0 and gcc-5.3.1
When I run test-connect, I see the following:
> ./test/test-connect
Running 2 test cases...
unknown location(0): fatal error: in "test_async_queue": boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_weak_ptr> >: tr1::bad_weak_ptr
/home/matwey/lab/eixx/test/test_async_queue.cpp(72): last checkpoint
and then test-connect is forever waiting on ioservice.run()
#0 0x00007ffff5e779f3 in epoll_wait () from /lib64/libc.so.6
#1 0x000000000055ce07 in boost::asio::detail::epoll_reactor::run (this=0x8280e0, block=true, ops=...)
at /usr/include/boost/asio/detail/impl/epoll_reactor.ipp:392
#2 0x000000000055dd90 in boost::asio::detail::task_io_service::do_run_one (this=0x823190, lock=..., this_thread=..., ec=...)
at /usr/include/boost/asio/detail/impl/task_io_service.ipp:356
#3 0x000000000055d908 in boost::asio::detail::task_io_service::run (this=0x823190, ec=...)
at /usr/include/boost/asio/detail/impl/task_io_service.ipp:149
#4 0x000000000055e0b9 in boost::asio::io_service::run (this=0x7fffffffc2f0) at /usr/include/boost/asio/impl/io_service.ipp:59
#5 0x000000000052e308 in test_async_queue_concurrent::test_method (this=0x7fffffffc43f)
at /home/matwey/lab/eixx/test/test_async_queue.cpp:144
#6 0x000000000052df53 in test_async_queue_concurrent_invoker () at /home/matwey/lab/eixx/test/test_async_queue.cpp:122
#7 0x000000000058ee6a in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke (function_ptr=...)
at /usr/include/boost/function/function_template.hpp:118
#8 0x000000000055f408 in boost::function0<void>::operator() (this=0x81cf18) at /usr/include/boost/function/function_template.hpp:771
#9 0x000000000055091d in boost::detail::forward::operator() (this=0x7fffffffd6d8)
at /usr/include/boost/test/impl/execution_monitor.ipp:1304
#10 0x000000000058a94f in boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke (function_obj_ptr=...)
at /usr/include/boost/function/function_template.hpp:138
#11 0x0000000000573a9e in boost::function0<int>::operator() (this=0x7fffffffd6d0)
at /usr/include/boost/function/function_template.hpp:771
#12 0x000000000056386d in boost::detail::do_invoke<boost::shared_ptr<boost::detail::translator_holder_base>, boost::function<int ()> >(boost::shared_ptr<boost::detail::translator_holder_base> const&, boost::function<int ()> const&) (tr=..., F=...)
at /usr/include/boost/test/impl/execution_monitor.ipp:281
#13 0x000000000051d226 in boost::execution_monitor::catch_signals(boost::function<int ()> const&) (
this=0x8084c0 <boost::unit_test::singleton<boost::unit_test::unit_test_monitor_t>::instance()::the_inst>, F=...)
at /usr/include/boost/test/impl/execution_monitor.ipp:870
#14 0x000000000051d38d in boost::execution_monitor::execute(boost::function<int ()> const&) (
this=0x8084c0 <boost::unit_test::singleton<boost::unit_test::unit_test_monitor_t>::instance()::the_inst>, F=...)
at /usr/include/boost/test/impl/execution_monitor.ipp:1207
#15 0x000000000051dcb3 in boost::execution_monitor::vexecute(boost::function<void ()> const&) (
this=0x8084c0 <boost::unit_test::singleton<boost::unit_test::unit_test_monitor_t>::instance()::the_inst>, F=...)
at /usr/include/boost/test/impl/execution_monitor.ipp:1313
#16 0x0000000000525721 in boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned int) (
this=0x8084c0 <boost::unit_test::singleton<boost::unit_test::unit_test_monitor_t>::instance()::the_inst>, func=..., timeout=0)
at /usr/include/boost/test/impl/unit_test_monitor.ipp:46
---Type <return> to continue, or q <return> to quit---
#17 0x000000000054fa25 in boost::unit_test::framework::state::execute_test_tree (
this=0x806be0 <boost::unit_test::framework::impl::(anonymous namespace)::s_frk_state()::the_inst>, tu_id=65537, timeout=0)
at /usr/include/boost/test/impl/framework.ipp:691
#18 0x000000000054f489 in boost::unit_test::framework::state::execute_test_tree (
this=0x806be0 <boost::unit_test::framework::impl::(anonymous namespace)::s_frk_state()::the_inst>, tu_id=1, timeout=0)
at /usr/include/boost/test/impl/framework.ipp:642
#19 0x000000000051b60b in boost::unit_test::framework::run (id=1, continue_test=true)
at /usr/include/boost/test/impl/framework.ipp:1230
#20 0x00000000005253b2 in boost::unit_test::unit_test_main (init_func=0x52c603 <init_unit_test_suite(int, char**)>, argc=1,
argv=0x7fffffffe588) at /usr/include/boost/test/impl/unit_test_main.ipp:229
#21 0x0000000000525634 in main (argc=1, argv=0x7fffffffe588) at /usr/include/boost/test/impl/unit_test_main.ipp:284
/usr/local/Cellar/eixx/1.4/include/eixx/marshal/eterm_format.hxx:390:39: error: declaration shadows a local variable [-Werror,-Wshadow]
std::vector<char> v;
^
/usr/local/Cellar/eixx/1.4/include/eixx/marshal/eterm_format.hxx:353:23: note: previous declaration is here
vector<Alloc> v(a_alloc);
When compiling on armv7hl I have the following:
[ 761s] /tmp/ccv1DxyP.s: Assembler messages:
[ 761s] /tmp/ccv1DxyP.s:154954: Error: bad instruction `bsfl [r5],r1'
[ 769s] Makefile:673: recipe for target 'test_node-test_node.o' failed
Not all platforms havebsf*
instructions, but some of them (for instance aarch64) seem to have alternatives.
static __inline__ unsigned long bit_scan_forward(unsigned long v)
{
unsigned long r;
__asm__ __volatile__(
#if (__SIZEOF_LONG__ == 8)
"bsfq %1, %0": "=r"(r): "rm"(v) );
#else
"bsfl %1, %0": "=r"(r): "rm"(v) );
#endif
return r;
}
Also, why don't just use things like __builtin_ffsl
which will allow compiler to handle proper implementation on all platforms?
eixx/connect/basic_otp_node.hxx:150:14: warning: declaration shadows a local variable [-Wshadow]
eixx/include/eixx/connect/basic_otp_node.hxx
Lines 142 to 150 in 47cd2d8
14 months ago, there was a commit message that says "Temporary disable support for a C++ erlang node."
Line 62 in 2253d64
Is this still disabled? What is the rationale or reasoning for this feature removal?
Benchmarking (perf-test.cpp) could become cross-platform (Windows, macOS, Linux, BSD) with something like:
https://github.com/chronoxor/CppBenchmark
Hello,
I am using boost 1.60.0 and gcc 5.3.1, when I try to compile eixx from master I see the following:
[ 69s] + make -j8
[ 69s] Scanning dependencies of target eixx_static
[ 69s] Scanning dependencies of target eixx
[ 69s] [ 4%] Building CXX object src/CMakeFiles/eixx.dir/basic_otp_node_local.cpp.o
[ 69s] [ 8%] Building CXX object src/CMakeFiles/eixx_static.dir/basic_otp_node_local.cpp.o
[ 69s] [ 13%] Building CXX object src/CMakeFiles/eixx.dir/am.cpp.o
[ 69s] [ 17%] Building CXX object src/CMakeFiles/eixx_static.dir/test_node.cpp.o
[ 69s] [ 21%] Building CXX object src/CMakeFiles/eixx.dir/test_node.cpp.o
[ 69s] [ 26%] Building CXX object src/CMakeFiles/eixx_static.dir/am.cpp.o
[ 69s] In file included from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/defaults.hpp:36:0,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/eterm.hpp:36,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/eixx.hpp:65,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/src/test_node.cpp:2:
[ 69s] /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/util/compiler_hints.hpp:15:50: fatal error: boost/lockfree/detail/branch_hints.hpp: No such file or directory
[ 69s] compilation terminated.
[ 69s] src/CMakeFiles/eixx_static.dir/build.make:110: recipe for target 'src/CMakeFiles/eixx_static.dir/test_node.cpp.o' failed
[ 69s] make[2]: *** [src/CMakeFiles/eixx_static.dir/test_node.cpp.o] Error 1
[ 69s] make[2]: *** Waiting for unfinished jobs....
[ 69s] In file included from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/defaults.hpp:36:0,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/eterm.hpp:36,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/eixx.hpp:65,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/src/test_node.cpp:2:
[ 69s] /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/util/compiler_hints.hpp:15:50: fatal error: boost/lockfree/detail/branch_hints.hpp: No such file or directory
[ 69s] compilation terminated.
[ 69s] In file included from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/defaults.hpp:36:0,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/atom.hpp:39,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/am.hpp:35,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/src/am.cpp:25:
[ 69s] /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/util/compiler_hints.hpp:15:50: fatal error: boost/lockfree/detail/branch_hints.hpp: No such file or directory
[ 69s] compilation terminated.
[ 69s] In file included from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/defaults.hpp:36:0,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/atom.hpp:39,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/am.hpp:35,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/src/am.cpp:25:
[ 69s] /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/util/compiler_hints.hpp:15:50: fatal error: boost/lockfree/detail/branch_hints.hpp: No such file or directory
[ 69s] compilation terminated.
[ 69s] src/CMakeFiles/eixx.dir/build.make:62: recipe for target 'src/CMakeFiles/eixx.dir/am.cpp.o' failed
[ 69s] make[2]: *** [src/CMakeFiles/eixx.dir/am.cpp.o] Error 1
[ 69s] make[2]: *** Waiting for unfinished jobs....
[ 69s] src/CMakeFiles/eixx.dir/build.make:110: recipe for target 'src/CMakeFiles/eixx.dir/test_node.cpp.o' failed
[ 69s] make[2]: *** [src/CMakeFiles/eixx.dir/test_node.cpp.o] Error 1
[ 69s] src/CMakeFiles/eixx_static.dir/build.make:62: recipe for target 'src/CMakeFiles/eixx_static.dir/am.cpp.o' failed
[ 69s] make[2]: *** [src/CMakeFiles/eixx_static.dir/am.cpp.o] Error 1
[ 69s] In file included from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/defaults.hpp:36:0,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/atom.hpp:39,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/connect/basic_otp_node_local.hpp:40,
[ 69s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/src/basic_otp_node_local.cpp:29:
[ 69s] /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/util/compiler_hints.hpp:15:50: fatal error: boost/lockfree/detail/branch_hints.hpp: No such file or directory
[ 69s] compilation terminated.
[ 70s] src/CMakeFiles/eixx_static.dir/build.make:86: recipe for target 'src/CMakeFiles/eixx_static.dir/basic_otp_node_local.cpp.o' failed
[ 70s] make[2]: *** [src/CMakeFiles/eixx_static.dir/basic_otp_node_local.cpp.o] Error 1
[ 70s] CMakeFiles/Makefile2:158: recipe for target 'src/CMakeFiles/eixx_static.dir/all' failed
[ 70s] make[1]: *** [src/CMakeFiles/eixx_static.dir/all] Error 2
[ 70s] make[1]: *** Waiting for unfinished jobs....
[ 70s] In file included from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/defaults.hpp:36:0,
[ 70s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/marshal/atom.hpp:39,
[ 70s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/connect/basic_otp_node_local.hpp:40,
[ 70s] from /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/src/basic_otp_node_local.cpp:29:
[ 70s] /home/abuild/rpmbuild/BUILD/eixx-1.1+git20160218.708555b/include/eixx/util/compiler_hints.hpp:15:50: fatal error: boost/lockfree/detail/branch_hints.hpp: No such file or directory
[ 70s] compilation terminated.
[ 70s] src/CMakeFiles/eixx.dir/build.make:86: recipe for target 'src/CMakeFiles/eixx.dir/basic_otp_node_local.cpp.o' failed
[ 70s] make[2]: *** [src/CMakeFiles/eixx.dir/basic_otp_node_local.cpp.o] Error 1
[ 70s] CMakeFiles/Makefile2:121: recipe for target 'src/CMakeFiles/eixx.dir/all' failed
[ 70s] make[1]: *** [src/CMakeFiles/eixx.dir/all] Error 2
[ 70s] Makefile:138: recipe for target 'all' failed
[ 70s] make: *** [all] Error 2
[ 70s] error: Bad exit status from /var/tmp/rpm-tmp.4rIbz8 (%build)
I seems that boost/lockfree/detail/branch_hints.hpp
is missing in 1.60 now.
I installed autoconf-archive and did ./bootstrap && ./configure && make
$ make
/Applications/Xcode.app/Contents/Developer/usr/bin/make all-recursive
Making all in src
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-am.lo -MD -MP -MF .deps/libeixx_la-am.Tpo -c -o libeixx_la-am.lo `test -f 'am.cpp' || echo './'`am.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-am.lo -MD -MP -MF .deps/libeixx_la-am.Tpo -c am.cpp -fno-common -DPIC -o .libs/libeixx_la-am.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
1 warning generated.
mv -f .deps/libeixx_la-am.Tpo .deps/libeixx_la-am.Plo
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-atom.lo -MD -MP -MF .deps/libeixx_la-atom.Tpo -c -o libeixx_la-atom.lo `test -f 'atom.cpp' || echo './'`atom.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-atom.lo -MD -MP -MF .deps/libeixx_la-atom.Tpo -c atom.cpp -fno-common -DPIC -o .libs/libeixx_la-atom.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
In file included from ../include/eixx/marshal/tuple.hpp:41:
../include/eixx/marshal/visit.hpp:41:31: warning: class template 'tuple' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class tuple;
^
../include/eixx/marshal/defaults.hpp:44:42: note: previous use is here
template <typename Alloc> struct tuple;
^
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
In file included from ../include/eixx/marshal/tuple.hpp:41:
../include/eixx/marshal/visit.hpp:42:31: warning: class template 'list' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class list;
^
../include/eixx/marshal/defaults.hpp:45:42: note: previous use is here
template <typename Alloc> struct list;
^
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
../include/eixx/marshal/tuple.hpp:48:27: warning: class template 'eterm' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class eterm;
^
../include/eixx/marshal/defaults.hpp:43:42: note: previous use is here
template <typename Alloc> struct eterm;
^
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
../include/eixx/marshal/tuple.hpp:51:1: warning: 'tuple' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class tuple {
^
../include/eixx/marshal/defaults.hpp:44:35: note: did you mean class here?
template <typename Alloc> struct tuple;
^~~~~~
class
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:52:
../include/eixx/marshal/list.hpp:52:1: warning: 'list' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class list : protected alloc_base<cons<Alloc>, Alloc> {
^
../include/eixx/marshal/defaults.hpp:45:35: note: did you mean class here?
template <typename Alloc> struct list;
^~~~~~
class
In file included from atom.cpp:25:
../include/eixx/marshal/eterm.hpp:132:1: warning: 'eterm' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class eterm {
^
../include/eixx/marshal/defaults.hpp:43:35: note: did you mean class here?
template <typename Alloc> struct eterm;
^~~~~~
class
In file included from atom.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:606:
In file included from ../include/eixx/marshal/eterm.ipp:39:
In file included from ../include/eixx/marshal/eterm_format.hpp:70:
../include/eixx/marshal/eterm_format.ipp:108:16: warning: 'static' function
'pvariable' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static var pvariable(const char **fmt)
^
../include/eixx/marshal/eterm_format.ipp:148:17: warning: 'static' function
'patom' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static atom patom(const char **fmt)
^
../include/eixx/marshal/eterm_format.ipp:161:17: warning: 'static' function
'pquotedatom' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static atom pquotedatom(const char **fmt)
^
10 warnings generated.
mv -f .deps/libeixx_la-atom.Tpo .deps/libeixx_la-atom.Plo
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-defaults.lo -MD -MP -MF .deps/libeixx_la-defaults.Tpo -c -o libeixx_la-defaults.lo `test -f 'defaults.cpp' || echo './'`defaults.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-defaults.lo -MD -MP -MF .deps/libeixx_la-defaults.Tpo -c defaults.cpp -fno-common -DPIC -o .libs/libeixx_la-defaults.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
1 warning generated.
mv -f .deps/libeixx_la-defaults.Tpo .deps/libeixx_la-defaults.Plo
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-ref.lo -MD -MP -MF .deps/libeixx_la-ref.Tpo -c -o libeixx_la-ref.lo `test -f 'ref.cpp' || echo './'`ref.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-ref.lo -MD -MP -MF .deps/libeixx_la-ref.Tpo -c ref.cpp -fno-common -DPIC -o .libs/libeixx_la-ref.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
In file included from ../include/eixx/marshal/tuple.hpp:41:
../include/eixx/marshal/visit.hpp:41:31: warning: class template 'tuple' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class tuple;
^
../include/eixx/marshal/defaults.hpp:44:42: note: previous use is here
template <typename Alloc> struct tuple;
^
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
In file included from ../include/eixx/marshal/tuple.hpp:41:
../include/eixx/marshal/visit.hpp:42:31: warning: class template 'list' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class list;
^
../include/eixx/marshal/defaults.hpp:45:42: note: previous use is here
template <typename Alloc> struct list;
^
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
../include/eixx/marshal/tuple.hpp:48:27: warning: class template 'eterm' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class eterm;
^
../include/eixx/marshal/defaults.hpp:43:42: note: previous use is here
template <typename Alloc> struct eterm;
^
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:51:
../include/eixx/marshal/tuple.hpp:51:1: warning: 'tuple' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class tuple {
^
../include/eixx/marshal/defaults.hpp:44:35: note: did you mean class here?
template <typename Alloc> struct tuple;
^~~~~~
class
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:52:
../include/eixx/marshal/list.hpp:52:1: warning: 'list' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class list : protected alloc_base<cons<Alloc>, Alloc> {
^
../include/eixx/marshal/defaults.hpp:45:35: note: did you mean class here?
template <typename Alloc> struct list;
^~~~~~
class
In file included from ref.cpp:25:
../include/eixx/marshal/eterm.hpp:132:1: warning: 'eterm' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class eterm {
^
../include/eixx/marshal/defaults.hpp:43:35: note: did you mean class here?
template <typename Alloc> struct eterm;
^~~~~~
class
In file included from ref.cpp:25:
In file included from ../include/eixx/marshal/eterm.hpp:606:
In file included from ../include/eixx/marshal/eterm.ipp:39:
In file included from ../include/eixx/marshal/eterm_format.hpp:70:
../include/eixx/marshal/eterm_format.ipp:108:16: warning: 'static' function
'pvariable' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static var pvariable(const char **fmt)
^
../include/eixx/marshal/eterm_format.ipp:148:17: warning: 'static' function
'patom' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static atom patom(const char **fmt)
^
../include/eixx/marshal/eterm_format.ipp:161:17: warning: 'static' function
'pquotedatom' declared in header file should be declared 'static inline'
[-Wunneeded-internal-declaration]
static atom pquotedatom(const char **fmt)
^
10 warnings generated.
mv -f .deps/libeixx_la-ref.Tpo .deps/libeixx_la-ref.Plo
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-basic_otp_node_local.lo -MD -MP -MF .deps/libeixx_la-basic_otp_node_local.Tpo -c -o libeixx_la-basic_otp_node_local.lo `test -f 'basic_otp_node_local.cpp' || echo './'`basic_otp_node_local.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT libeixx_la-basic_otp_node_local.lo -MD -MP -MF .deps/libeixx_la-basic_otp_node_local.Tpo -c basic_otp_node_local.cpp -fno-common -DPIC -o .libs/libeixx_la-basic_otp_node_local.o
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
1 warning generated.
mv -f .deps/libeixx_la-basic_otp_node_local.Tpo .deps/libeixx_la-basic_otp_node_local.Plo
/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O0 -I../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -L/usr/local/lib -lboost_system -o libeixx.la -rpath /Users/fire/Documents/eixx/install/lib libeixx_la-am.lo libeixx_la-atom.lo libeixx_la-defaults.lo libeixx_la-ref.lo libeixx_la-basic_otp_node_local.lo
libtool: link: g++ -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libeixx.0.dylib .libs/libeixx_la-am.o .libs/libeixx_la-atom.o .libs/libeixx_la-defaults.o .libs/libeixx_la-ref.o .libs/libeixx_la-basic_otp_node_local.o -L/usr/local/lib -lboost_system -O0 -pthread -pthread -install_name /Users/fire/Documents/eixx/install/lib/libeixx.0.dylib -compatibility_version 1 -current_version 1.0 -Wl,-single_module
clang: warning: argument unused during compilation: '-pthread'
clang: warning: argument unused during compilation: '-pthread'
libtool: link: (cd ".libs" && rm -f "libeixx.dylib" && ln -s "libeixx.0.dylib" "libeixx.dylib")
libtool: link: ( cd ".libs" && rm -f "libeixx.la" && ln -s "../libeixx.la" "libeixx.la" )
g++ -DHAVE_CONFIG_H -I. -I.. -g -O0 -I./../include -pthread -I/usr/local/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/include -I/usr/local/Cellar/erlang/17.1_1/lib/erlang/lib/erl_interface-3.7.17/src -MMD -Wall -Wno-unused-local-typedefs -fno-strict-aliasing -std=c++11 -DBOOST_SYSTEM_NO_DEPRECATED=1 -MT test_node-test_node.o -MD -MP -MF .deps/test_node-test_node.Tpo -c -o test_node-test_node.o `test -f 'test_node.cpp' || echo './'`test_node.cpp
clang: warning: argument unused during compilation: '-MMD'
warning: unknown warning option '-Wno-unused-local-typedefs'
[-Wunknown-warning-option]
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:51:
In file included from ./../include/eixx/marshal/tuple.hpp:41:
./../include/eixx/marshal/visit.hpp:41:31: warning: class template 'tuple' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class tuple;
^
./../include/eixx/marshal/defaults.hpp:44:42: note: previous use is here
template <typename Alloc> struct tuple;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:51:
In file included from ./../include/eixx/marshal/tuple.hpp:41:
./../include/eixx/marshal/visit.hpp:42:31: warning: class template 'list' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class list;
^
./../include/eixx/marshal/defaults.hpp:45:42: note: previous use is here
template <typename Alloc> struct list;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:51:
./../include/eixx/marshal/tuple.hpp:48:27: warning: class template 'eterm' was
previously declared as a struct template [-Wmismatched-tags]
template <typename Alloc> class eterm;
^
./../include/eixx/marshal/defaults.hpp:43:42: note: previous use is here
template <typename Alloc> struct eterm;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:51:
./../include/eixx/marshal/tuple.hpp:51:1: warning: 'tuple' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class tuple {
^
./../include/eixx/marshal/defaults.hpp:44:35: note: did you mean class here?
template <typename Alloc> struct tuple;
^~~~~~
class
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:52:
./../include/eixx/marshal/list.hpp:52:1: warning: 'list' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class list : protected alloc_base<cons<Alloc>, Alloc> {
^
./../include/eixx/marshal/defaults.hpp:45:35: note: did you mean class here?
template <typename Alloc> struct list;
^~~~~~
class
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
./../include/eixx/marshal/eterm.hpp:132:1: warning: 'eterm' defined as a class
template here but previously declared as a struct template
[-Wmismatched-tags]
class eterm {
^
./../include/eixx/marshal/defaults.hpp:43:35: note: did you mean class here?
template <typename Alloc> struct eterm;
^~~~~~
class
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:36:
./../include/eixx/connect/basic_otp_mailbox.hpp:105:45: warning: class template
'async_queue' was previously declared as a struct template
[-Wmismatched-tags]
template<typename T, typename A> friend class util::async_queue;
^
./../include/eixx/util/async_queue.hpp:57:8: note: previous use is here
struct async_queue : std::enable_shared_from_this<async_queue<T, Alloc>>
^
./../include/eixx/connect/basic_otp_mailbox.hpp:105:45: note: did you mean
struct here?
template<typename T, typename A> friend class util::async_queue;
^~~~~
struct
./../include/eixx/connect/basic_otp_mailbox.hpp:108:77: error: friend
declaration of '_Function_handler' does not match any declaration in
namespace 'std'
..._R, typename _F, typename... _Args> friend class std::_Function_handler;
~~~~~^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:36:
In file included from ./../include/eixx/connect/basic_otp_mailbox.hpp:355:
./../include/eixx/connect/basic_otp_mailbox.ipp:93:18: warning: unused variable
'res' [-Wunused-variable]
bool res;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:694:5: warning:
'MD5' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5((unsigned char *) string, length, (unsigned char *) digest.c);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:116:16: note:
'MD5' has been explicitly marked deprecated here
unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md) ...
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:706:5: warning:
'MD5_Init' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5_Init(&c);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:113:5: note:
'MD5_Init' has been explicitly marked deprecated here
int MD5_Init(MD5_CTX *c) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:707:5: warning:
'MD5_Update' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5_Update(&c, (unsigned char *) cookie, (uint32_t) strlen(cookie));
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:114:5: note:
'MD5_Update' has been explicitly marked deprecated here
int MD5_Update(MD5_CTX *c, const void *data, size_t len) DEPRECATED_IN_M...
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:708:5: warning:
'MD5_Update' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5_Update(&c, (unsigned char *) chbuf, (uint32_t) strlen(chbuf));
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:114:5: note:
'MD5_Update' has been explicitly marked deprecated here
int MD5_Update(MD5_CTX *c, const void *data, size_t len) DEPRECATED_IN_M...
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:37:
In file included from ./../include/eixx/connect/basic_otp_connection.hpp:40:
In file included from ./../include/eixx/connect/transport_otp_connection.hpp:349:
In file included from ./../include/eixx/connect/transport_otp_connection.ipp:34:
In file included from ./../include/eixx/connect/transport_otp_connection_tcp.hpp:209:
./../include/eixx/connect/transport_otp_connection_tcp.ipp:709:5: warning:
'MD5_Final' is deprecated: first deprecated in OS X 10.7
[-Wdeprecated-declarations]
MD5_Final(digest, &c);
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/md5.h:115:5: note:
'MD5_Final' has been explicitly marked deprecated here
int MD5_Final(unsigned char *md, MD5_CTX *c) DEPRECATED_IN_MAC_OS_X_VERS...
^
test_node.cpp:62:17: error: non-constant-expression cannot be narrowed from type
'long' to '__darwin_suseconds_t' (aka 'int') in initializer list
[-Wc++11-narrowing]
l_binding[N3]->to_long() };
^~~~~~~~~~~~~~~~~~~~~~~~
test_node.cpp:62:17: note: override this message by inserting an explicit cast
l_binding[N3]->to_long() };
^~~~~~~~~~~~~~~~~~~~~~~~
static_cast<__darwin_suseconds_t>( )
test_node.cpp:66:47: warning: format specifies type 'long' but the argument has
type '__darwin_suseconds_t' (aka 'int') [-Wformat]
tm.tm_hour, tm.tm_min, tm.tm_sec, tv.tv_usec);
^~~~~~~~~~
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:36:
./../include/eixx/connect/basic_otp_mailbox.hpp:107:5: error: too many template
parameters in template redeclaration
template<typename _R, typename... _ArgTypes> friend class std::function;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
test_node.cpp:68:15: note: in instantiation of template class
'eixx::connect::basic_otp_mailbox<std::__1::allocator<char>,
std::__1::recursive_mutex>' requested here
a_mbox.node().stop();
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1245:1: note:
previous template declaration is here
template<class _Fp> class _LIBCPP_TYPE_VIS_ONLY function; // undefined
^~~~~~~~~~~~~~~~~~~
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:66:
In file included from ./../include/eixx/connect.hpp:36:
./../include/eixx/connect/basic_otp_mailbox.hpp:108:77: error: no class named
'_Function_handler' in namespace 'std'
..._R, typename _F, typename... _Args> friend class std::_Function_handler;
~~~~~^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:45:
In file included from ./../include/eixx/marshal/atom.hpp:37:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/vector:502:5: error:
static_assert failed "Allocator::value_type must be same type as
value_type"
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./../include/eixx/marshal/eterm_format.ipp:63:32: note: in instantiation of
template class
'std::__1::vector<eixx::marshal::eterm<std::__1::allocator<char> >,
std::__1::allocator<char> >' requested here
struct vector : public std::vector<eterm<Alloc>, Alloc> {
^
./../include/eixx/marshal/eterm_format.ipp:350:23: note: in instantiation of
template class
'eixx::marshal::<anonymous>::vector<std::__1::allocator<char> >' requested
here
vector<Alloc> v(a_alloc);
^
./../include/eixx/marshal/eterm.ipp:298:16: note: in instantiation of function
template specialization 'eixx::marshal::eformat<std::__1::allocator<char>
>' requested here
return eformat<Alloc>(fmt, pap, a_alloc);
^
./../include/eixx/marshal/eterm.ipp:337:18: note: in instantiation of member
function 'eixx::marshal::eterm<std::__1::allocator<char> >::format'
requested here
try { return format(Alloc(), &fmt, &ap); } catch (...) { va_end(ap)...
^
test_node.cpp:38:45: note: in instantiation of member function
'eixx::marshal::eterm<std::__1::allocator<char> >::format' requested here
static const eterm s_put_chars = eterm::format("{io_request,_,_,{put...
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:50:
./../include/eixx/marshal/ref.hpp:199:84: error: invalid use of non-static data
member 'u'
...::memcmp(&m_blob->data()->u, &t.m_blob->data()->u, sizeof(ref_blob::u)) ...
~~~~~~~~~~^
./../include/eixx/marshal/eterm.ipp:79:37: note: in instantiation of member
function 'eixx::marshal::ref<std::__1::allocator<char> >::operator=='
requested here
case REF: return vt.r == rhs.vt.r;
^
./../include/eixx/marshal/visit_match.hpp:65:23: note: in instantiation of
member function 'eixx::marshal::eterm<std::__1::allocator<char>
>::operator==' requested here
return et == m_pattern;
^
./../include/eixx/marshal/visit.hpp:50:23: note: in instantiation of function
template specialization
'eixx::marshal::visit_eterm_match<std::__1::allocator<char>
>::operator()<long>' requested here
: result( v(t1) )
^
./../include/eixx/marshal/eterm.hpp:570:33: note: in instantiation of function
template specialization 'eixx::marshal::wrap<bool,
eixx::marshal::visit_eterm_match<std::__1::allocator<char> >
>::wrap<long>' requested here
case LONG: return wrapper(v, vt.i);
^
./../include/eixx/marshal/visit.hpp:66:19: note: in instantiation of function
template specialization 'eixx::marshal::eterm<std::__1::allocator<char>
>::visit<eixx::marshal::visit_eterm_match<std::__1::allocator<char> > >'
requested here
return et.visit(*static_cast<const Derived*>(this)).result;
^
./../include/eixx/marshal/eterm.ipp:263:22: note: in instantiation of function
template specialization
'eixx::marshal::static_visitor<eixx::marshal::visit_eterm_match<std::__1::allocator<char>
>, bool>::apply_visitor<std::__1::allocator<char> >' requested here
if (!visitor.apply_visitor(*this))
^
test_node.cpp:41:21: note: in instantiation of member function
'eixx::marshal::eterm<std::__1::allocator<char> >::match' requested here
if (s_put_chars.match(a_msg->msg(), &l_binding))
^
In file included from test_node.cpp:2:
In file included from ./../include/eixx/eixx.hpp:65:
In file included from ./../include/eixx/eterm.hpp:37:
In file included from ./../include/eixx/marshal/eterm.hpp:52:
In file included from ./../include/eixx/marshal/list.hpp:356:
./../include/eixx/marshal/list.ipp:55:9: error: 'auto' deduced as 'const
eixx::marshal::eterm<std::__1::allocator<char> > *' in declaration of 'p'
and deduced as 'const eixx::marshal::eterm<std::__1::allocator<char> >' in
declaration of 'end'
for(auto p = items, *end = items+N; p != end; ++p, ++hd) {
^ ~~~~~ ~~~~~~~
./../include/eixx/marshal/list.hpp:146:27: note: in instantiation of member
function 'eixx::marshal::list<std::__1::allocator<char> >::init' requested
here
: base_t(alloc) { init(items, a_size, alloc); }
^
./../include/eixx/marshal/list.hpp:143:11: note: in instantiation of member
function 'eixx::marshal::list<std::__1::allocator<char> >::list' requested
here
: list(items, N, alloc) {}
^
./../include/eixx/marshal/list.hpp:245:16: note: in instantiation of function
template specialization 'eixx::marshal::list<std::__1::allocator<char>
>::list<1>' requested here
return list<Alloc>(l, a);
^
test_node.cpp:88:15: note: in instantiation of function template specialization
'eixx::marshal::list<std::__1::allocator<char> >::make<const char *>'
requested here
list::make("This is a test string"), &g_io_server->self());
^
15 warnings and 7 errors generated.
make[2]: *** [test_node-test_node.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
Now that we have #45 ...
Is it viable to remove Boost as a dependency and just use the Non-boost version of ASIO?
We're getting an error when linking to eixx:
/usr/local/opt/[email protected]/include/eixx/marshal/list.hpp:65:30: error: ISO C++ forbids zero-size array 'head' [-Werror=pedantic]
65 | cons_t head[0];
| ^
In file included from /usr/local/opt/[email protected]/include/eixx/marshal/eterm_format.hpp:69,
from /usr/local/opt/[email protected]/include/eixx/marshal/eterm.hxx:36,
from /usr/local/opt/[email protected]/include/eixx/marshal/eterm.hpp:691,
from /usr/local/opt/[email protected]/include/eixx/eterm.hpp:33,
from /usr/local/opt/[email protected]/include/eixx/eixx.hpp:61
Where can documentation or examples on process linking/monitoring be found?
I'm have trouble with compiling project at:
g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Boost 1.46.1
OTP R14B03
First, I had to patch basic_otp_node_local.cpp
line:
s << home << boost::filesystem2::slashstd::string::value << ".erlang.cookie";
was changed to:
s << home << "/.erlang.cookie";
Now, when I try to make project I get:
saleyn-eixx-14aaabb/src$ make g++ -DPACKAGE_NAME=\"eixx\" -DPACKAGE_TARNAME=\"eixx\" -DPACKAGE_VERSION=\"0.1\" -DPACKAGE_STRING=\"eixx\ 0.1\" -DPACKAGE_BUGREPORT=\"BUG-REPORT-ADDRESS\" -DPACKAGE_URL=\"\" -DPACKAGE=\"eixx\" -DVERSION=\"0.1\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_BOOST=1 -DHAVE_BOOST_PROPERTY_TREE_PTREE_HPP=1 -DHAVE_BOOST_SYSTEM_ERROR_CODE_HPP=1 -DHAVE_BOOST_THREAD_HPP=1 -DHAVE_BOOST_TEST_UNIT_TEST_HPP=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_SOCKET=1 -I. -I./../include -pthread -I/usr/lib/erlang/lib/erl_interface-3.7.4/include -I/usr/lib/erlang/lib/erl_interface-3.7.4/src -MMD -Wall -fno-strict-aliasing -MT test_node-test_node.o -MD -MP -MF .deps/test_node-test_node.Tpo -c -o test_node-test_node.o `test -f 'test_node.cpp' || echo './'`test_node.cpp In file included from ./../include/eixx/eixx.hpp:65, from test_node.cpp:2: ./../include/eixx/eterm.hpp:56: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE’ In file included from ./../include/eixx/eterm.hpp:36, from ./../include/eixx/eixx.hpp:65, from test_node.cpp:2: ./../include/eixx/marshal/eterm.hpp: In copy constructor ‘eixx::marshal::eterm::eterm(const eixx::marshal::eterm&) [with Alloc = std::allocator]’: test_node.cpp:53: instantiated from here ./../include/eixx/marshal/eterm.hpp:242: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE’ ./../include/eixx/marshal/eterm.hpp:242: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE’ In file included from ./../include/eixx/marshal/eterm.hpp:51, from ./../include/eixx/eterm.hpp:36, from ./../include/eixx/eixx.hpp:65, from test_node.cpp:2: ./../include/eixx/marshal/trace.hpp: In member function ‘void eixx::marshal::trace::check_clock(uint32_t&) [with Alloc = std::allocator]’: ./../include/eixx/marshal/trace.hpp:159: instantiated from ‘static eixx::marshal::trace* eixx::marshal::trace::tracer(eixx::marshal::trace_op, const eixx::marshal::trace*) [with Alloc = std::allocator]’ ./../include/eixx/connect/transport_msg.hpp:227: instantiated from ‘void eixx::connect::transport_msg::set_send(const eixx::marshal::epid&, const eixx::marshal::eterm&, const Alloc&) [with Alloc = std::allocator]’ ./../include/eixx/connect/basic_otp_node.ipp:194: instantiated from ‘void eixx::connect::basic_otp_node::send(const eixx::marshal::atom&, const eixx::marshal::epid&, const eixx::marshal::eterm&) [with Alloc = std::allocator, Mutex = boost::recursive_mutex]’ test_node.cpp:62: instantiated from here ./../include/eixx/marshal/trace.hpp:63: warning: comparison between signed and unsigned integer expressions ./../include/eixx/util/async_wait_timeout.hpp: At global scope: ./../include/eixx/util/async_wait_timeout.hpp:34: warning: ‘boost::asio::error::timer_category’ defined but not used make: *** [test_node-test_node.o] Błąd 1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.