Hi there,
Having a heck of a time trying to compile IMP 2.5.0 and its dependencies. Hopefully someone can help. Note that below, the ones that do not say (CentOS 7.2) are in non-standard locations under /opt because we have to keep multiple versions of a lot of this stuff due to other software depending on it.
I’m using:
* GCC 4.8.5 (CentOS 7.2) * CMake 2.8.11 * Boost 1.60.00 * HDF5 1.8.16 (--with-parallel) * Python 2.7.11 * SWIG 2.0.10 (CentOS 7.2) * Modeller 9.16 * GSL 1.15 (CentOS 7.2) * OpenCV 2.3.1 * FFTW 3.3.3 (CentOS 7.2) * MVAPICH 2.1 * NumPy: 1.10.4, SciPy: 0.16.1, matplotlib: 1.5.1, biopython 1.66
First I had a very difficult time getting it to even detect OpenCV. My final solution was to set $PKG_CONFIG_PATH to include the pkgconfig directory for OpenCV 2.3.1 and to symlink opencv.pc (which was created by the build) to opencv22.pc (which is what IMP looks for for some reason). Note that the documentation mentions that 2.1-2.3 works, but it isn’t clear whether that’s actually true when a build failure claims 2.2 is not detected and that is the reason it won’t build em2d. OpenCV 2.2 doesn’t build properly on this environment, for a reason that I’m not quite sure of. As an aside, OpenCV 2.3.1 seems to require a very old version of CUDA that most people would not have, so one has to turn off CUDA support or get that very old version (which doesn’t support our hardware anyway).
I then had difficulty with HDF5 not finding mpi.h. Apparently this is a common problem if you’ve built HDF5 parallel. My solution was setting the compilers to be mpicc/mpic++. At this point, I have to say I’m lost. Here is my cmake command line:
cmake ../imp-2.5.0 -DCMAKE_BUILD_TYPE=Release -DPYTHON_LIBRARY=/opt/sw/packages/gcc-4.8.3/python/2.7.11/lib -DPYTHON_INCLUDE_DIR=/opt/sw/packages/gcc-4.8.3/python/2.7.11/include -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpic++ -DCMAKE_INSTALL_PREFIX=/opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost-1.60.0/imp/2.5.0
Doing a make with a high parallel number (eg. 24, 32) got me to a place where there were a number of errors on RMF/SWIG relating to not being able to find Python.h. It’s not clear whether that blocks the build, but it’s probably not good. The CMake command at the beginning reports that it found the expected version of Python (which didn’t work right unless I manually supplied it on the command line). It eventually fails for what I suspect is some other reason.
Doing just a make fails on what looks like a problem with Boost. Perhaps Boost 1.60.0 isn’t supported? I don’t know what version to use instead, other than to assume 1.40.0 works since 1.40.0 or newer is required. Output as follows; your help is appreciated!
Scanning dependencies of target IMP.statistics-lib [ 18%] Building CXX object modules/statistics/src/CMakeFiles/IMP.statistics-lib.dir/__/__/__/src/statistics_all.cpp.o In file included from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/functional/hash/extensions.hpp:24:0, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/functional/hash/hash.hpp:558, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/functional/hash.hpp:6, from /usr/src/imp-2.5.0-build/include/IMP/hash.h:17, from /usr/src/imp-2.5.0-build/include/IMP/statistics/statistics_config.h:162, from /usr/src/imp-2.5.0-build/include/IMP/statistics/ChiSquareMetric.h:11, from /usr/src/imp-2.5.0/modules/statistics/src/ChiSquareMetric.cpp:8, from /usr/src/imp-2.5.0-build/src/statistics_all.cpp:4: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp:446:25: error: ^Xice_not^Y is not a member of ^Xboost::type_traits^Y BOOST_STATIC_ASSERT(type_traits::ice_not<(is_same<Directed, bidirectionalS>::value)>::value); ^ /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/static_assert.hpp:70:55: note: in definition of macro ^XBOOST_STATIC_ASSERT^Y # define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__) ^ /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp:446:89: error: ^X::value^Y has not been declared BOOST_STATIC_ASSERT(type_traits::ice_not<(is_same<Directed, bidirectionalS>::value)>::value); ^ /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/static_assert.hpp:70:55: note: in definition of macro ^XBOOST_STATIC_ASSERT^Y # define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__) ^ /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp:446:89: note: suggested alternatives: BOOST_STATIC_ASSERT(type_traits::ice_not<(is_same<Directed, bidirectionalS>::value)>::value); ^ /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/static_assert.hpp:70:55: note: in definition of macro ^XBOOST_STATIC_ASSERT^Y # define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__) ^ In file included from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/program_options/value_semantic.hpp:432:0, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/program_options/options_description.hpp:13, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/program_options.hpp:15, from /usr/src/imp-2.5.0-build/include/IMP/internal/Flag.h:13, from /usr/src/imp-2.5.0-build/include/IMP/Flag.h:13, from /usr/src/imp-2.5.0-build/include/IMP/internal/base_static.h:13, from /usr/src/imp-2.5.0-build/include/IMP/exception.h:16, from /usr/src/imp-2.5.0-build/include/IMP/Object.h:14, from /usr/src/imp-2.5.0-build/include/IMP/statistics/Metric.h:13, from /usr/src/imp-2.5.0-build/include/IMP/statistics/ChiSquareMetric.h:12, from /usr/src/imp-2.5.0/modules/statistics/src/ChiSquareMetric.cpp:8, from /usr/src/imp-2.5.0-build/src/statistics_all.cpp:4: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/program_options/detail/value_semantic.hpp:180:5: note: ^Xboost::program_options::value^Y value(T* v) ^ In file included from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/access.hpp:18:0, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/state.hpp:18, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp:20, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/matchers.hpp:17, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/regex_primitives.hpp:22, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/xpressive_static.hpp:24, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/graphviz.hpp:34, from /usr/src/imp-2.5.0-build/include/IMP/internal/base_graph_utility.h:16, from /usr/src/imp-2.5.0-build/include/IMP/graph_macros.h:14, from /usr/src/imp-2.5.0-build/include/IMP/base_macros.h:24, from /usr/src/imp-2.5.0-build/include/IMP/base_utility.h:15, from /usr/src/imp-2.5.0-build/include/IMP/utility.h:13, from /usr/src/imp-2.5.0-build/include/IMP/algebra/VectorBaseD.h:16, from /usr/src/imp-2.5.0-build/include/IMP/algebra/VectorD.h:12, from /usr/src/imp-2.5.0-build/include/IMP/algebra/BoundingBoxD.h:12, from /usr/src/imp-2.5.0-build/include/IMP/algebra.h:10, from /usr/src/imp-2.5.0/modules/statistics/src/ChiSquareMetric.cpp:9, from /usr/src/imp-2.5.0-build/src/statistics_all.cpp:4: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/proto/traits.hpp:1161:5: note: ^Xboost::proto::value^Y value(Expr const &e) ^ In file included from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/access.hpp:18:0, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/state.hpp:18, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp:20, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/matchers.hpp:17, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/regex_primitives.hpp:22, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/xpressive_static.hpp:24, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/graphviz.hpp:34, from /usr/src/imp-2.5.0-build/include/IMP/internal/base_graph_utility.h:16, from /usr/src/imp-2.5.0-build/include/IMP/graph_macros.h:14, from /usr/src/imp-2.5.0-build/include/IMP/base_macros.h:24, from /usr/src/imp-2.5.0-build/include/IMP/base_utility.h:15, from /usr/src/imp-2.5.0-build/include/IMP/utility.h:13, from /usr/src/imp-2.5.0-build/include/IMP/algebra/VectorBaseD.h:16, from /usr/src/imp-2.5.0-build/include/IMP/algebra/VectorD.h:12, from /usr/src/imp-2.5.0-build/include/IMP/algebra/BoundingBoxD.h:12, from /usr/src/imp-2.5.0-build/include/IMP/algebra.h:10, from /usr/src/imp-2.5.0/modules/statistics/src/ChiSquareMetric.cpp:9, from /usr/src/imp-2.5.0-build/src/statistics_all.cpp:4: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/proto/traits.hpp:294:16: note: ^Xboost::proto::result_of::value^Y struct value ^ In file included from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/access.hpp:18:0, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/state.hpp:18, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/matcher/alternate_end_matcher.hpp:20, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/core/matchers.hpp:17, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/regex_primitives.hpp:22, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/xpressive_static.hpp:24, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/graphviz.hpp:34, from /usr/src/imp-2.5.0-build/include/IMP/internal/base_graph_utility.h:16, from /usr/src/imp-2.5.0-build/include/IMP/graph_macros.h:14, from /usr/src/imp-2.5.0-build/include/IMP/base_macros.h:24, from /usr/src/imp-2.5.0-build/include/IMP/base_utility.h:15, from /usr/src/imp-2.5.0-build/include/IMP/utility.h:13, from /usr/src/imp-2.5.0-build/include/IMP/algebra/VectorBaseD.h:16, from /usr/src/imp-2.5.0-build/include/IMP/algebra/VectorD.h:12, from /usr/src/imp-2.5.0-build/include/IMP/algebra/BoundingBoxD.h:12, from /usr/src/imp-2.5.0-build/include/IMP/algebra.h:10, from /usr/src/imp-2.5.0/modules/statistics/src/ChiSquareMetric.cpp:9, from /usr/src/imp-2.5.0-build/src/statistics_all.cpp:4: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/proto/traits.hpp:824:16: note: ^Xboost::proto::functional::value^Y struct value ^ In file included from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/detail/detail_fwd.hpp:24:0, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/regex_primitives.hpp:21, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/xpressive_static.hpp:24, from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/graphviz.hpp:34, from /usr/src/imp-2.5.0-build/include/IMP/internal/base_graph_utility.h:16, from /usr/src/imp-2.5.0-build/include/IMP/graph_macros.h:14, from /usr/src/imp-2.5.0-build/include/IMP/base_macros.h:24, from /usr/src/imp-2.5.0-build/include/IMP/base_utility.h:15, from /usr/src/imp-2.5.0-build/include/IMP/utility.h:13, from /usr/src/imp-2.5.0-build/include/IMP/algebra/VectorBaseD.h:16, from /usr/src/imp-2.5.0-build/include/IMP/algebra/VectorD.h:12, from /usr/src/imp-2.5.0-build/include/IMP/algebra/BoundingBoxD.h:12, from /usr/src/imp-2.5.0-build/include/IMP/algebra.h:10, from /usr/src/imp-2.5.0/modules/statistics/src/ChiSquareMetric.cpp:9, from /usr/src/imp-2.5.0-build/src/statistics_all.cpp:4: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/xpressive/xpressive_fwd.hpp:134:12: note: ^Xboost::xpressive::value^Y struct value; ^ In file included from /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/bind.hpp:22:0, from /usr/src/imp-2.5.0-build/include/IMP/internal/container_helpers.h:19, from /usr/src/imp-2.5.0-build/include/IMP/internal/TupleRestraint.h:14, from /usr/src/imp-2.5.0-build/include/IMP/singleton_macros.h:15, from /usr/src/imp-2.5.0-build/include/IMP/macros.h:13, from /usr/src/imp-2.5.0-build/include/IMP/statistics/PartitionalClustering.h:13, from /usr/src/imp-2.5.0/modules/statistics/src/PartitionalClustering.cpp:7, from /usr/src/imp-2.5.0-build/src/statistics_all.cpp:8: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/bind/bind.hpp:118:25: note: ^Xboost::_bi::value^Y template<class T> class value ^ In file included from /usr/src/imp-2.5.0-build/include/IMP/statistics/internal/TrivialPartitionalClustering.h:14:0, from /usr/src/imp-2.5.0/modules/statistics/src/RecursivePartitionalClusteringEmbedding.cpp:9, from /usr/src/imp-2.5.0-build/src/statistics_all.cpp:10: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp: In instantiation of ^Xstatic boost::adj_mat_pm_helper<D, VP, EP, GP, A, Tag, boost::edge_property_tag>::type boost::adj_mat_pm_helper<D, VP, EP, GP, A, Tag, boost::edge_property_tag>::get_nonconst(boost::adjacency_matrix<D , VP, EP, GP, A>&, Tag) [with D = boost::undirectedS; VP = boost::no_property; EP = boost::property<boost::edge_weight_t, double, boost::property<boost::edge_ centrality_t, double> >; GP = boost::no_property; A = std::allocator<bool>; Tag = boost::edge_centrality_t; boost::adj_mat_pm_helper<D, VP, EP, GP, A, Tag, bo ost::edge_property_tag>::type = boost::function_property_map<boost::adj_mat_pm_helper<boost::undirectedS, boost::no_property, boost::property<boost::edge_weig ht_t, double, boost::property<boost::edge_centrality_t, double> >, boost::no_property, std::allocator<bool>, boost::edge_centrality_t, boost::edge_property_ta g>::lookup_property_from_edge<mpl_::bool_<false> >, boost::detail::matrix_edge_desc_impl<boost::undirected_tag, long unsigned int>, double&>; typename boost:: result_of<const boost::adj_mat_pm_helper<D, VP, EP, GP, A, Tag, boost::edge_property_tag>::lookup_property_from_edge<mpl_::bool_<false> >(const typename boost ::graph_traits<boost::adjacency_matrix<D, VP, EP, GP, A> >::edge_descriptor&)>::type = double&; typename boost::graph_traits<boost::adjacency_matrix<D, VP, EP , GP, A> >::edge_descriptor = boost::detail::matrix_edge_desc_impl<boost::undirected_tag, long unsigned int>]^Y: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp:1119:86: required from ^Xtypename boost::property_map<boost::ad jacency_matrix<D, VP, EP, GP, A>, Tag>::type boost::get(Tag, boost::adjacency_matrix<D, VP, EP, GP, A>&) [with D = boost::undirectedS; VP = boost::no_property ; EP = boost::property<boost::edge_weight_t, double, boost::property<boost::edge_centrality_t, double> >; GP = boost::no_property; A = std::allocator<bool>; T ag = boost::edge_centrality_t; typename boost::property_map<boost::adjacency_matrix<D, VP, EP, GP, A>, Tag>::type = boost::function_property_map<boost::adj_ma t_pm_helper<boost::undirectedS, boost::no_property, boost::property<boost::edge_weight_t, double, boost::property<boost::edge_centrality_t, double> >, boost:: no_property, std::allocator<bool>, boost::edge_centrality_t, boost::edge_property_tag>::lookup_property_from_edge<mpl_::bool_<false> >, boost::detail::matrix_ edge_desc_impl<boost::undirected_tag, long unsigned int>, double&>]^Y /usr/src/imp-2.5.0/modules/statistics/src/internal/centrality_clustering.cpp:74:43: required from here /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp:1092:17: warning: unused parameter ^Xg^Y [-Wunused-parameter] static type get_nonconst(adjacency_matrix<D, VP, EP, GP, A>& g, Tag tag) { ^ /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp: In instantiation of ^Xstatic boost::adj_mat_pm_helper<D, VP, EP, GP, A, Tag, boost::edge_property_tag>::type boost::adj_mat_pm_helper<D, VP, EP, GP, A, Tag, boost::edge_property_tag>::get_nonconst(boost::adjacency_matrix<D , VP, EP, GP, A>&, Tag) [with D = boost::undirectedS; VP = boost::no_property; EP = boost::property<boost::edge_weight_t, double, boost::property<boost::edge_ centrality_t, double> >; GP = boost::no_property; A = std::allocator<bool>; Tag = boost::edge_weight_t; boost::adj_mat_pm_helper<D, VP, EP, GP, A, Tag, boost: :edge_property_tag>::type = boost::function_property_map<boost::adj_mat_pm_helper<boost::undirectedS, boost::no_property, boost::property<boost::edge_weight_t , double, boost::property<boost::edge_centrality_t, double> >, boost::no_property, std::allocator<bool>, boost::edge_weight_t, boost::edge_property_tag>::look up_property_from_edge<mpl_::bool_<false> >, boost::detail::matrix_edge_desc_impl<boost::undirected_tag, long unsigned int>, double&>; typename boost::result_o f<const boost::adj_mat_pm_helper<D, VP, EP, GP, A, Tag, boost::edge_property_tag>::lookup_property_from_edge<mpl_::bool_<false> >(const typename boost::graph_ traits<boost::adjacency_matrix<D, VP, EP, GP, A> >::edge_descriptor&)>::type = double&; typename boost::graph_traits<boost::adjacency_matrix<D, VP, EP, GP, A> > ::edge_descriptor = boost::detail::matrix_edge_desc_impl<boost::undirected_tag, long unsigned int>]^Y: /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp:1119:86: required from ^Xtypename boost::property_map<boost::ad jacency_matrix<D, VP, EP, GP, A>, Tag>::type boost::get(Tag, boost::adjacency_matrix<D, VP, EP, GP, A>&) [with D = boost::undirectedS; VP = boost::no_property ; EP = boost::property<boost::edge_weight_t, double, boost::property<boost::edge_centrality_t, double> >; GP = boost::no_property; A = std::allocator<bool>; T ag = boost::edge_weight_t; typename boost::property_map<boost::adjacency_matrix<D, VP, EP, GP, A>, Tag>::type = boost::function_property_map<boost::adj_mat_pm _helper<boost::undirectedS, boost::no_property, boost::property<boost::edge_weight_t, double, boost::property<boost::edge_centrality_t, double> >, boost::no_p roperty, std::allocator<bool>, boost::edge_weight_t, boost::edge_property_tag>::lookup_property_from_edge<mpl_::bool_<false> >, boost::detail::matrix_edge_des c_impl<boost::undirected_tag, long unsigned int>, double&>]^Y /usr/src/imp-2.5.0/modules/statistics/src/metric_clustering.cpp:25:39: required from here /opt/sw/packages/gcc-4.8.3/mvapich2-2.1/boost/1.60.0/include/boost/graph/adjacency_matrix.hpp:1092:17: warning: unused parameter ^Xg^Y [-Wunused-parameter] make[2]: *** [modules/statistics/src/CMakeFiles/IMP.statistics-lib.dir/__/__/__/src/statistics_all.cpp.o] Error 1 ake[1]: *** [modules/statistics/src/CMakeFiles/IMP.statistics-lib.dir/all] Error 2 make: *** [all] Error 2
-- ____ *Note: UMDNJ is now Rutgers-Biomedical and Health Sciences* || \UTGERS |---------------------*O*--------------------- ||_// Biomedical | Ryan Novosielski - Senior Technologist || \ and Health | novosirj@rutgers.edu - 973/972.0922 (2x0922) || \ Sciences | OIRT/High Perf & Res Comp - MSB C630, Newark `'