build failure on mavericks
wjwwood opened this issue · 14 comments
When building ecto
for indigo on OS X 10.9 "mavericks" I get this:
[ecto]: ==> '/Users/william/indigo/build/ecto/cmi_env.sh /usr/bin/make -j4 -l4' in '/Users/william/indigo/build/ecto'
Scanning dependencies of target ecto
[ 0%] Building CXX object src/lib/CMakeFiles/ecto.dir/abi.cpp.o
[ 1%] Building CXX object src/lib/CMakeFiles/ecto.dir/tendril.cpp.o
In file included from /Users/william/indigo/src/ecto/src/lib/tendril.cpp:30:
In file included from /usr/local/include/boost/date_time/posix_time/posix_time.hpp:24:
In file included from /usr/local/include/boost/date_time/posix_time/time_formatters.hpp:12:
In file included from /usr/local/include/boost/date_time/gregorian/gregorian.hpp:34:
In file included from /usr/local/include/boost/date_time/gregorian/parsers.hpp:13:
/usr/local/include/boost/date_time/date_parsing.hpp:50:30: error: too many arguments provided to function-like macro invocation
std::tolower(inp[i], loc);
^
/System/Library/Frameworks/Python.framework/Headers/pyport.h:729:9: note: macro 'tolower' defined here
#define tolower(c) towlower(btowc(c))
^
In file included from /Users/william/indigo/src/ecto/src/lib/tendril.cpp:30:
In file included from /usr/local/include/boost/date_time/posix_time/posix_time.hpp:24:
In file included from /usr/local/include/boost/date_time/posix_time/time_formatters.hpp:12:
In file included from /usr/local/include/boost/date_time/gregorian/gregorian.hpp:34:
In file included from /usr/local/include/boost/date_time/gregorian/parsers.hpp:13:
/usr/local/include/boost/date_time/date_parsing.hpp:44:14: error: assigning to 'value_type' (aka 'char') from incompatible type '<overloaded function type>'
inp[i] =
^
/usr/include/ctype.h:292:1: note: candidate function
tolower(int _c)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__locale:756:1: note: candidate function
tolower(_CharT __c, const locale& __loc)
^
2 errors generated.
make[2]: *** [src/lib/CMakeFiles/ecto.dir/tendril.cpp.o] Error 1
make[1]: *** [src/lib/CMakeFiles/ecto.dir/all] Error 2
make: *** [all] Error 2
Looks like a collision with a macro in the Python headers.
hmm, can you try an #include <locale>
in src/lib/tendril.cpp , right before the #include <boost/date_time/posix_time/posix_time.hpp>
. Thx.
You need to ```` back tick quote things in <>
otherwise they go away... I can't read your message.
noooob. Done.
I get the same error.
hmmmm, so <locale>
defines tolower with two arguments. But somehow, boost does not include it. Same if you put it at the very top of the file ?
That doesn't work either. The problem is that Python totally clobers it with that line:
#define tolower(c) towlower(btowc(c))
Adding #undef tolower
after #include <boost/python.hpp>
gets further, leading to this C++11 error:
Scanning dependencies of target ecto
[ 1%] [ 2%] Building CXX object src/lib/CMakeFiles/ecto.dir/tendril.cpp.o
[ 3%] [ 4%] Building CXX object src/lib/CMakeFiles/ecto.dir/util.cpp.o
Building CXX object src/lib/CMakeFiles/ecto.dir/log.cpp.o
Building CXX object src/lib/CMakeFiles/ecto.dir/except.cpp.o
/Users/william/indigo/src/ecto/src/lib/util.cpp:30:10: fatal error: 'tr1/unordered_map' file not found
#include <tr1/unordered_map>
^
1 error generated.
oh write, what's your compiler ? clang ? And you're on strict C++11 ?
Mavericks is clang and c++11 strict.
I pushed a fix for TR1 and the undef. Please pull and test
Now this with your patch:
[ 1%] Building CXX object src/lib/CMakeFiles/ecto.dir/rethrow.cpp.o
In file included from /Users/william/indigo/src/ecto/src/lib/rethrow.cpp:31:
In file included from /Users/william/indigo/src/ecto/include/ecto/scheduler.hpp:32:
In file included from /Users/william/indigo/src/ecto/include/ecto/profile.hpp:36:
In file included from /usr/local/include/boost/date_time/posix_time/posix_time.hpp:24:
In file included from /usr/local/include/boost/date_time/posix_time/time_formatters.hpp:12:
In file included from /usr/local/include/boost/date_time/gregorian/gregorian.hpp:34:
In file included from /usr/local/include/boost/date_time/gregorian/parsers.hpp:13:
/usr/local/include/boost/date_time/date_parsing.hpp:50:30: error: too many arguments provided to function-like macro invocation
std::tolower(inp[i], loc);
^
/System/Library/Frameworks/Python.framework/Headers/pyport.h:729:9: note: macro 'tolower' defined here
#define tolower(c) towlower(btowc(c))
^
In file included from /Users/william/indigo/src/ecto/src/lib/rethrow.cpp:31:
In file included from /Users/william/indigo/src/ecto/include/ecto/scheduler.hpp:32:
In file included from /Users/william/indigo/src/ecto/include/ecto/profile.hpp:36:
In file included from /usr/local/include/boost/date_time/posix_time/posix_time.hpp:24:
In file included from /usr/local/include/boost/date_time/posix_time/time_formatters.hpp:12:
In file included from /usr/local/include/boost/date_time/gregorian/gregorian.hpp:34:
In file included from /usr/local/include/boost/date_time/gregorian/parsers.hpp:13:
/usr/local/include/boost/date_time/date_parsing.hpp:44:14: error: assigning to 'value_type' (aka 'char') from incompatible type '<overloaded function type>'
inp[i] =
^
/usr/include/ctype.h:292:1: note: candidate function
tolower(int _c)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__locale:756:1: note: candidate function
tolower(_CharT __c, const locale& __loc)
^
In file included from /Users/william/indigo/src/ecto/src/lib/rethrow.cpp:30:
In file included from /Users/william/indigo/src/ecto/include/ecto/python.hpp:36:
In file included from /usr/local/include/boost/python.hpp:28:
In file included from /usr/local/include/boost/python/exception_translator.hpp:10:
In file included from /usr/local/include/boost/bind.hpp:22:
/usr/local/include/boost/bind/bind.hpp:69:22: error: type 'void (*)(const boost::exception_ptr &) __attribute__((noreturn))' cannot be used prior to '::' because it has no members
typedef typename F::result_type type;
^
/usr/local/include/boost/bind/bind_template.hpp:15:22: note: in instantiation of template class 'boost::_bi::result_traits<boost::_bi::unspecified, void (*)(const boost::exception_ptr &) __attribute__((noreturn))>' requested here
typedef typename result_traits<R, F>::type result_type;
^
/Users/william/indigo/src/ecto/src/lib/rethrow.cpp:47:41: note: in instantiation of template class 'boost::_bi::bind_t<boost::_bi::unspecified, void (*)(const boost::exception_ptr &) __attribute__((noreturn)), boost::_bi::list1<boost::_bi::value<boost::exception_ptr> > >' requested here
boost::python::handle_exception(boost::bind(&boost::rethrow_exception, rethrowable_in_interpreter_thread));
^
3 errors generated.
make[2]: *** [src/lib/CMakeFiles/ecto.dir/rethrow.cpp.o] Error 1
make[1]: *** [src/lib/CMakeFiles/ecto.dir/all] Error 2
make: *** [all] Error 2
With your patch I get this:
[ 1%] Building CXX object src/lib/CMakeFiles/ecto.dir/rethrow.cpp.o
In file included from /Users/william/indigo/src/ecto/src/lib/rethrow.cpp:31:
In file included from /Users/william/indigo/src/ecto/include/ecto/scheduler.hpp:32:
In file included from /Users/william/indigo/src/ecto/include/ecto/profile.hpp:36:
In file included from /usr/local/include/boost/date_time/posix_time/posix_time.hpp:24:
In file included from /usr/local/include/boost/date_time/posix_time/time_formatters.hpp:12:
In file included from /usr/local/include/boost/date_time/gregorian/gregorian.hpp:34:
In file included from /usr/local/include/boost/date_time/gregorian/parsers.hpp:13:
/usr/local/include/boost/date_time/date_parsing.hpp:50:30: error: too many arguments provided to function-like macro invocation
std::tolower(inp[i], loc);
^
/System/Library/Frameworks/Python.framework/Headers/pyport.h:729:9: note: macro 'tolower' defined here
#define tolower(c) towlower(btowc(c))
^
In file included from /Users/william/indigo/src/ecto/src/lib/rethrow.cpp:31:
In file included from /Users/william/indigo/src/ecto/include/ecto/scheduler.hpp:32:
In file included from /Users/william/indigo/src/ecto/include/ecto/profile.hpp:36:
In file included from /usr/local/include/boost/date_time/posix_time/posix_time.hpp:24:
In file included from /usr/local/include/boost/date_time/posix_time/time_formatters.hpp:12:
In file included from /usr/local/include/boost/date_time/gregorian/gregorian.hpp:34:
In file included from /usr/local/include/boost/date_time/gregorian/parsers.hpp:13:
/usr/local/include/boost/date_time/date_parsing.hpp:44:14: error: assigning to 'value_type' (aka 'char') from incompatible type '<overloaded function type>'
inp[i] =
^
/usr/include/ctype.h:292:1: note: candidate function
tolower(int _c)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__locale:756:1: note: candidate function
tolower(_CharT __c, const locale& __loc)
^
In file included from /Users/william/indigo/src/ecto/src/lib/rethrow.cpp:30:
In file included from /Users/william/indigo/src/ecto/include/ecto/python.hpp:36:
In file included from /usr/local/include/boost/python.hpp:28:
In file included from /usr/local/include/boost/python/exception_translator.hpp:10:
In file included from /usr/local/include/boost/bind.hpp:22:
/usr/local/include/boost/bind/bind.hpp:69:22: error: type 'void (*)(const boost::exception_ptr &) __attribute__((noreturn))' cannot be used prior to '::' because it has no members
typedef typename F::result_type type;
^
/usr/local/include/boost/bind/bind_template.hpp:15:22: note: in instantiation of template class 'boost::_bi::result_traits<boost::_bi::unspecified, void (*)(const boost::exception_ptr &) __attribute__((noreturn))>' requested here
typedef typename result_traits<R, F>::type result_type;
^
/Users/william/indigo/src/ecto/src/lib/rethrow.cpp:47:41: note: in instantiation of template class 'boost::_bi::bind_t<boost::_bi::unspecified, void (*)(const boost::exception_ptr &) __attribute__((noreturn)), boost::_bi::list1<boost::_bi::value<boost::exception_ptr> > >' requested here
boost::python::handle_exception(boost::bind(&boost::rethrow_exception, rethrowable_in_interpreter_thread));
^
3 errors generated.
make[2]: *** [src/lib/CMakeFiles/ecto.dir/rethrow.cpp.o] Error 1
make[1]: *** [src/lib/CMakeFiles/ecto.dir/all] Error 2
make: *** [all] Error 2
Nope:
william@dosa ~/indigo/src
% rm -rf ecto
william@dosa ~/indigo/src
% git clone https://github.com/plasmodic/ecto.git
Cloning into 'ecto'...
remote: Reusing existing pack: 17892, done.
remote: Counting objects: 56, done.
remote: Compressing objects: 100% (55/55), done.
remote: Total 17948 (delta 20), reused 0 (delta 0)
Receiving objects: 100% (17948/17948), 25.16 MiB | 4.79 MiB/s, done.
Resolving deltas: 100% (7493/7493), done.
Checking connectivity... done
william@dosa ~/indigo/src
% cd ecto
william@dosa ~/indigo/src/ecto (git:master:82dacc0)
% git log -4
commit 82dacc01a4ee3c606c80c05bd0a0a405275b604a
Author: Vincent Rabaud <vincent.rabaud@gmail.com>
Date: Sat Mar 1 14:49:16 2014 +0100
fixes #245 according to http://bugs.python.org/issue10910
commit 4e26e80d7a3d54cf4d8fe499684372826c661e78
Author: Vincent Rabaud <vincent.rabaud@gmail.com>
Date: Sat Mar 1 13:33:09 2014 +0100
trust catkin to handle the version number
commit 8e354b5aa8281ea8117fc93adb290998b7810be7
Author: Vincent Rabaud <vincent.rabaud@gmail.com>
Date: Sat Mar 1 13:12:43 2014 +0100
trust catkin to handle ecto_LIBRARIES
commit 5bef1006f4c5b0d5f2beac73f351b431a2b47709
Author: Vincent Rabaud <vincent.rabaud@gmail.com>
Date: Tue Feb 25 22:10:04 2014 +0100
fixes part of #245
william@dosa ~/indigo/src/ecto (git:master:82dacc0)
% cd ...
william@dosa ~/indigo
% ~/devel/catkin/bin/pcmi ecto -p1 -j1
----------------------------------------------------------
Workspace: /Users/william/indigo
Buildspace: /Users/william/indigo/build
Develspace: /Users/william/indigo/devel
Installspace: /Users/william/indigo/install
DESTDIR: None
----------------------------------------------------------
Merge Develspaces: False
Install Packages: False
Isolate Installs: False
----------------------------------------------------------
Additional CMake Args: None
Additional Make Args: -j1
Additional catkin Make Args: None
----------------------------------------------------------
Found '140' packages in 0.3 seconds.
Starting ==> catkin
[catkin]: ==> '/Users/william/indigo/build/catkin/cmi_env.sh /usr/bin/make cmake_check_build_system' in '/Users/william/indigo/build/catkin'
[catkin]: ==> '/Users/william/indigo/build/catkin/cmi_env.sh /usr/bin/make -j1' in '/Users/william/indigo/build/catkin'
Finished <== catkin [ 0.1 seconds ]
Starting ==> ecto
[ecto]: ==> '/Users/william/indigo/build/ecto/cmi_env.sh /usr/bin/make cmake_check_build_system' in '/Users/william/indigo/build/ecto'
-- Using CATKIN_DEVEL_PREFIX: /Users/william/indigo/devel/ecto
-- Using CMAKE_PREFIX_PATH: /Users/william/indigo/devel/catkin
-- This workspace overlays: /Users/william/indigo/devel/catkin
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using default Python package layout
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /Users/william/indigo/build/ecto/test_results
-- Found gtest: gtests will be built
-- catkin 0.6.1
-- Boost version: 1.55.0
-- Boost version: 1.55.0
-- Found the following Boost libraries:
-- date_time
-- python
-- regex
-- serialization
-- system
-- thread
-- Boost version 1.55.0
-- ecto commit: 82dacc01a4ee3c606c80c05bd0a0a405275b604a
-- ecto tag (long): 0.6.1-4-g82dacc0
-- ecto tag (short): 0.6.1
-- ecto last_mod: Sat, 1 Mar 2014 14:49:16 +0100
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/william/indigo/build/ecto
[ecto]: ==> '/Users/william/indigo/build/ecto/cmi_env.sh /usr/bin/make -j1' in '/Users/william/indigo/build/ecto'
Scanning dependencies of target ecto
[ 0%] Building CXX object src/lib/CMakeFiles/ecto.dir/abi.cpp.o
[ 1%] Building CXX object src/lib/CMakeFiles/ecto.dir/cell.cpp.o
[ 2%] Building CXX object src/lib/CMakeFiles/ecto.dir/edge.cpp.o
[ 3%] Building CXX object src/lib/CMakeFiles/ecto.dir/tendril.cpp.o
In file included from /Users/william/indigo/src/ecto/src/lib/tendril.cpp:31:
In file included from /usr/local/include/boost/date_time/posix_time/posix_time.hpp:24:
In file included from /usr/local/include/boost/date_time/posix_time/time_formatters.hpp:12:
In file included from /usr/local/include/boost/date_time/gregorian/gregorian.hpp:34:
In file included from /usr/local/include/boost/date_time/gregorian/parsers.hpp:13:
/usr/local/include/boost/date_time/date_parsing.hpp:50:30: error: too many arguments provided to function-like macro invocation
std::tolower(inp[i], loc);
^
/System/Library/Frameworks/Python.framework/Headers/pyport.h:729:9: note: macro 'tolower' defined here
#define tolower(c) towlower(btowc(c))
^
In file included from /Users/william/indigo/src/ecto/src/lib/tendril.cpp:31:
In file included from /usr/local/include/boost/date_time/posix_time/posix_time.hpp:24:
In file included from /usr/local/include/boost/date_time/posix_time/time_formatters.hpp:12:
In file included from /usr/local/include/boost/date_time/gregorian/gregorian.hpp:34:
In file included from /usr/local/include/boost/date_time/gregorian/parsers.hpp:13:
/usr/local/include/boost/date_time/date_parsing.hpp:44:14: error: assigning to 'value_type' (aka 'char') from incompatible type '<overloaded function type>'
inp[i] =
^
/usr/include/ctype.h:292:1: note: candidate function
tolower(int _c)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__locale:756:1: note: candidate function
tolower(_CharT __c, const locale& __loc)
^
2 errors generated.
make[2]: *** [src/lib/CMakeFiles/ecto.dir/tendril.cpp.o] Error 1
make[1]: *** [src/lib/CMakeFiles/ecto.dir/all] Error 2
make: *** [all] Error 2
[cmi] There were errors:
Failed to build package 'ecto' because the following command:
# Command run in directory: /Users/william/indigo/build/ecto
/Users/william/indigo/build/ecto/cmi_env.sh /usr/bin/make -j1
Exited with return code: 2
[cmi] Runtime: 24.4 seconds