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 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:

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.
    e0411b5..e618a54 master -> origin/master
  * [new tag] preliminary_submission_2 -> preliminary_submission_2
Updating e0411b5..e618a54
  CMakeLists.txt | 4 +-
  LICENCE | 525
+------------------- | 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%)

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

~/prog_dev/boost/sandbox/ $ .
-- 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:
-- Check for working CXX compiler:
-- 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

CXXFLAGS: -std=c++11 -Wextra -Wall -pedantic
-ftemplate-backtrace-limit=0 -pthread -O2 -g

Source directory:
Build directory:
Executable path:
Library path:
Install prefix: /usr/local



-- Configuring done
-- Generating done
-- Build files have been written to:
~/prog_dev/boost/sandbox/ $

However, when tried make, got other errors:

make[1]: Entering directory
make[2]: Entering directory
make[3]: Entering directory
Scanning dependencies of target libboost_actor
make[3]: Leaving directory
make[3]: Entering directory
[ 0%] Building CXX object
[ 1%] Building CXX object
In file included from
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
error: no member named 'minimum_stacksize' in
         auto mss = static_cast<intptr_t>(
error: assigning to 'context' (aka 'void **') from incompatible
       type 'fcontext_t' (aka 'void *')
         ctx = ctxn::make_fcontext(sinf.sp, sinf.size, cst_trampoline);
             ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: member reference base type 'ctxn::fcontext_t'
       (aka 'void *') is not a structure or union
                     ~~~^ ~~~~~~~~
3 errors generated.
make[3]: *** [CMakeFiles/libboost_actor.dir/src/cs_thread.cpp.o] Error 1
make[3]: Leaving directory
make[2]: *** [CMakeFiles/libboost_actor.dir/all] Error 2
make[2]: Leaving directory
make[1]: *** [all] Error 2
make[1]: Leaving directory
make: *** [all] Error 2
~/prog_dev/boost/sandbox/ $

Please, how should I correct the errors?


Boost list run by bdawes at, gregod at, cpdaniel at, john at