Boost logo

Boost :

Subject: Re: [boost] Is there any interest in a library for actor programming?
From: Larry Evans (cppljevans_at_[hidden])
Date: 2014-05-23 12:19:42


On 05/22/14 12:56, Dominik Charousset wrote:
>>> I created the boost libraries and tried the boost.actor configure again
>>> and it worked. However, the subsequent make failed because compiler
>>> could not find memcmp, as shown by the terminal session at the end of
>>> this post. Note that I did do a `git diff` which showed the only'
>>> difference was in the ./configure. Also, there were several
>>> warnings.
>>>
>>> Is there something I should do to get the make to work?
>>>
>> [snip]
>> I modified the configure arguments as shown in 1st attachment.
>> Now, at the `make` step, it aborts at the same place, but
>> with a message about incompatible args instead of not finding
>> the memcmp function. The complete terminal session is in
>> 2nd attachment.
>
> Thank you for your patience. The function memcmp is defined in <cstring>, which was simply not included. I don’t know why I never got this error (I’ve tested on SuSE 13.1, Ubuntu 13.10, Fedora, Mac OS, MinGW @ Win7). Btw, you don’t have to pass both GCC and Clang to the configure script. I would recommend using the compiler you’ve used to build the Boost libraries to avoid running into ABI incompatibilities.
>
> I have added the missing include in the master branch and fixed the mismatched-tags warnings as well. Hope that fixes your issues. Oh, and don’t be surprised that almost each file has changed if you’re running git pull: the license has been changed from LGPL to the Boost Software License.
>
>
>
> Best regards,
> Dominik
>
Did a pull yesterday:

evansl_at_evansl-Inspiron-531:~/prog_dev/boost/sandbox/boost.actor.dir/boost.actor$
git pull
remote: Counting objects: 359, done.
remote: Compressing objects: 100% (260/260), done.
remote: Total 359 (delta 209), reused 122 (delta 92)
Receiving objects: 100% (359/359), 320.70 KiB | 379 KiB/s, done.
Resolving deltas: 100% (209/209), done.
 From https://github.com/Neverlord/boost.actor
    e0411b5..e618a54 master -> origin/master
 From https://github.com/Neverlord/boost.actor
  * [new tag] preliminary_submission_2 -> preliminary_submission_2
Updating e0411b5..e618a54
Fast-forward
  CMakeLists.txt | 4 +-
  LICENCE | 525
+-------------------
  boost.actor.files | 39 +-
  boost/actor/abstract_actor.hpp | 32 +-
  boost/actor/abstract_channel.hpp | 32 +-
.
.
.
  src/yield_interface.cpp | 32 +-
  unit_testing/test_broker.cpp | 32 +-
  unit_testing/test_intrusive_containers.cpp | 32 +-
  unit_testing/test_typed_spawn.cpp | 32 +-
  276 files changed, 3215 insertions(+), 6606 deletions(-)
  delete mode 100644 boost/actor/io/ipv4_acceptor.hpp
  delete mode 100644 boost/actor/io/ipv4_io_stream.hpp
  create mode 100644 boost/actor/io/tcp_acceptor.hpp
  create mode 100644 boost/actor/io/tcp_io_stream.hpp
  create mode 100644 examples/remote_actors/simple_broker.cpp
  rename src/{ipv4_acceptor.cpp => tcp_acceptor.cpp} (64%)
  rename src/{ipv4_io_stream.cpp => tcp_io_stream.cpp} (65%)
evansl_at_evansl-Inspiron-531:~/prog_dev/boost/sandbox/boost.actor.dir/boost.actor$

Then did configure again (with just the --with-clang flag:

~/prog_dev/boost/sandbox/boost.actor.dir/boost.actor $ .
../boost.actor.configure.sh
-- The C compiler identification is GNU
-- The CXX compiler identification is Clang
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler:
/home/evansl/dwnlds/llvm/versions/3.4/configurations/Release/install/bin/clang++
-- Check for working CXX compiler:
/home/evansl/dwnlds/llvm/versions/3.4/configurations/Release/install/bin/clang++
-- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found clang++ version 3.4

-- NOTE: Automatically added -stdlib=libc++ flag, you can override this
by defining CMAKE_CXX_FLAGS (see 'configure --help')
-- Looking for C++ include valgrind/valgrind.h
-- Looking for C++ include valgrind/valgrind.h - found
-- Build type:
-- Boost version: 1.56.0
-- Found the following Boost libraries:
-- system
-- context
-- coroutine
-- thread
-- Boost version: 1.56.0
-- Found the following Boost libraries:
-- program_options
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)

====================| Build Summary |====================

Build type: RelWithDebInfo
Debug mode: no
Log level: none
Context switching: yes
Valgrind: yes
Build examples: yes
Build unit tests: yes
Build static: no
Bulid static only: no
Build OpenCL: no
With mem. mgmt.: yes

CXX:
/home/evansl/dwnlds/llvm/versions/3.4/configurations/Release/install/bin/clang++
CXXFLAGS: -std=c++11 -Wextra -Wall -pedantic
-ftemplate-backtrace-limit=0 -pthread -O2 -g
LD_DIRS:
/home/evansl/prog_dev/boost/boost-modular/modular-boost/install/lib
LIBRARIES:
/home/evansl/prog_dev/boost/boost-modular/modular-boost/install/lib/libboost_coroutine.so;/home/evansl/prog_dev/boost/boost-modular/modular-boost/install/lib/libboost_context.so;/home/evansl/prog_dev/boost/boost-modular/modular-boost/install/lib/libboost_system.so

Source directory:
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor
Build directory:
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build
Executable path:
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build/bin
Library path:
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build/lib
Install prefix: /usr/local

Boost:
/home/evansl/prog_dev/boost/boost-modular/modular-boost/install/include

===========================================================

-- Configuring done
-- Generating done
-- Build files have been written to:
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build
~/prog_dev/boost/sandbox/boost.actor.dir/boost.actor $

However, when tried make, got other errors:

make[1]: Entering directory
`/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build'
make[2]: Entering directory
`/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build'
make[3]: Entering directory
`/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build'
Scanning dependencies of target libboost_actor
make[3]: Leaving directory
`/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build'
make[3]: Entering directory
`/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build'
[ 0%] Building CXX object
CMakeFiles/libboost_actor.dir/src/middleman_event_handler_epoll.cpp.o
[ 1%] Building CXX object
CMakeFiles/libboost_actor.dir/src/abstract_actor.cpp.o
In file included from
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/src/abstract_actor.cpp:31:
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/./boost/actor/actor_addr.hpp:116:1:
warning: 'hash' defined as a class template here but
       previously declared as a struct template [-Wmismatched-tags]
class hash<boost::actor::actor_addr> {
^
.
.
.
[ 20%] Building CXX object CMakeFiles/libboost_actor.dir/src/cs_thread.cpp.o
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/src/cs_thread.cpp:154:61:
error: no member named 'minimum_stacksize' in
 
'boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits>'
         auto mss = static_cast<intptr_t>(
stack_allocator::minimum_stacksize()
                                            ~~~~~~~~~~~~~~~~~^
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/src/cs_thread.cpp:158:13:
error: assigning to 'context' (aka 'void **') from incompatible
       type 'fcontext_t' (aka 'void *')
         ctx = ctxn::make_fcontext(sinf.sp, sinf.size, cst_trampoline);
             ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/src/cs_thread.cpp:160:24:
error: member reference base type 'ctxn::fcontext_t'
       (aka 'void *') is not a structure or union
                     ctx->fc_stack.sp,
                     ~~~^ ~~~~~~~~
3 errors generated.
make[3]: *** [CMakeFiles/libboost_actor.dir/src/cs_thread.cpp.o] Error 1
make[3]: Leaving directory
`/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build'
make[2]: *** [CMakeFiles/libboost_actor.dir/all] Error 2
make[2]: Leaving directory
`/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build'
make[1]: *** [all] Error 2
make[1]: Leaving directory
`/home/evansl/prog_dev/boost/sandbox/boost.actor.dir/boost.actor/build'
make: *** [all] Error 2
~/prog_dev/boost/sandbox/boost.actor.dir/boost.actor $

Please, how should I correct the errors?

-regards,
Larry


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk