0

I am trying to compile the current git (2.19dev) version of graph-tool. As far as I can tell gcc 5.4 is being used. I am running Ubuntu 16.04. I have run:

git clone gitlab@git.skewed.de:count0/graph-tool.git
cd ./graph-tool/
./autogen.sh
sudo ./configure PYTHON="/home/pmj27/anaconda/bin/python2.7" --enable-openmp
sudo make -Wno-unused-local-typedefs

That seemed to fail with the note Makefile:500: recipe for target 'graph_cairo_draw.lo' failed.

So I thought I would try again (after deleting all the files) and check the output of the config.log after running configure. So I ran:

git clone gitlab@git.skewed.de:count0/graph-tool.git
cd ./graph-tool/
./autogen.sh

That returned:

libtoolize: putting auxiliary files in '.'.
libtoolize: linking file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: linking file 'm4/libtool.m4'
libtoolize: linking file 'm4/ltoptions.m4'
libtoolize: linking file 'm4/ltsugar.m4'
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:22: installing './compile'
configure.ac:18: installing './config.guess'
configure.ac:18: installing './config.sub'
configure.ac:20: installing './install-sh'
configure.ac:20: installing './missing'
src/graph/Makefile.am: installing './depcomp'
src/graph_tool/Makefile.am:3: installing './py-compile'

I then ran sudo ./configure PYTHON="/home/pmj27/anaconda/bin/python2.7" --enable-openmp followed by sudo chmod o+rw config.log as I couldn't open config.log. configure did not print any error messages to the screen but config.log seems to show some errors. Some of these are:

configure:3811: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.

configure:3811: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.

configure:4588: gcc -E  conftest.c
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.

I unfortunately do not know what precisely I am looking for or what these error messages mean. Is anybody able to help me with this? This is a cross-post from here where the original config.logs are attached: http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/Errors-installing-2-19dev-td4026942.html

EDIT: Following advice in the comments the problem seems to be with make not configure. The make command that I ran was

make -Wno-unused-local-typedefs

This returned the following screen oputput of errors:

make  all-recursive
make[1]: Entering directory '/home/pmj27/graph-tool'
Making all in src
make[2]: Entering directory '/home/pmj27/graph-tool/src'
Making all in graph
make[3]: Entering directory '/home/pmj27/graph-tool/src/graph'
Making all in centrality
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/centrality'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/centrality'
Making all in clustering
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/clustering'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/clustering'
Making all in correlations
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/correlations'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/pmj27/graph-tool/src/graph/correlations'
Making all in draw
make[4]: Entering directory '/home/pmj27/graph-tool/src/graph/draw'
  CXX      graph_cairo_draw.lo
In file included from ./../graph.hh:28:0,
                 from graph_cairo_draw.cc:18:
./../graph_adjacency.hh:223:59: error: ‘distance_to’ function uses ‘auto’ type specifier without trailing return type
         auto distance_to(base_edge_iterator const& other) const
                                                           ^
./../graph_adjacency.hh:223:59: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:367:26: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                       [](auto &es){es.shrink_to_fit();});
                          ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:367:39: error: request for member ‘shrink_to_fit’ in ‘es’, which is of non-class type ‘int’
                       [](auto &es){es.shrink_to_fit();});
                                       ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:369:26: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                       [](auto &es){es.shrink_to_fit();});
                          ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:369:39: error: request for member ‘shrink_to_fit’ in ‘es’, which is of non-class type ‘int’
                       [](auto &es){es.shrink_to_fit();});
                                       ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:372:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                      [](const auto &a, const auto& b) -> bool
                                               ^
./../graph_adjacency.hh:372:62: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                      [](const auto &a, const auto& b) -> bool
                                                              ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:373:48: error: request for member ‘idx’ in ‘a’, which is of non-class type ‘const int’
                                      {return a.idx < b.idx;});
                                                ^
./../graph_adjacency.hh:373:56: error: request for member ‘idx’ in ‘b’, which is of non-class type ‘const int’
                                      {return a.idx < b.idx;});
                                                        ^
./../graph_adjacency.hh: In member function ‘void boost::adj_list<Vertex>::shrink_to_fit()’:
./../graph_adjacency.hh:380:44: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                        [&](auto idx) -> bool
                                            ^
./../graph_adjacency.hh: In function ‘std::pair<typename boost::adj_list<Vertex>::edge_descriptor, bool> boost::edge(Vertex, Vertex, const boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:601:40: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                              [&](const auto& e) -> bool {return e.first == t;});
                                        ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:601:67: error: request for member ‘first’ in ‘e’, which is of non-class type ‘const int’
                              [&](const auto& e) -> bool {return e.first == t;});
                                                                   ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:711:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                               ^
./../graph_adjacency.hh:711:48: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                                                ^
./../graph_adjacency.hh:712:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& mk_out_edge, auto&& mk_in_edge)
                               ^
./../graph_adjacency.hh:712:51: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& mk_out_edge, auto&& mk_in_edge)
                                                   ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:717:43: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                     if (!pred(mk_out_edge.def(v, oe)))
                                           ^
./../graph_adjacency.hh:723:50: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                        [&](const auto& ei) -> bool
                                                  ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:725:65: error: request for member ‘def’ in ‘mk_in_edge’, which is of non-class type ‘int’
                                            if (!pred(mk_in_edge.def(t, ei)))
                                                                 ^
./../graph_adjacency.hh:727:51: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                            if (ei.first == v)
                                                   ^
./../graph_adjacency.hh:729:77: error: request for member ‘second’ in ‘ei’, which is of non-class type ‘const int’
                                                g._free_indexes.push_back(ei.second);
                                                                             ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:739:40: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&](auto& oe)
                                        ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:741:64: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                                        return pred(mk_out_edge.def(v, oe));
                                                                ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:755:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                               ^
./../graph_adjacency.hh:755:48: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_es = [&] (auto& out_edges, auto& in_edges,
                                                ^
./../graph_adjacency.hh:756:31: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& get_pos, auto&& mk_out_edge)
                               ^
./../graph_adjacency.hh:756:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                               auto&& get_pos, auto&& mk_out_edge)
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:761:39: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                 if (!pred(mk_out_edge.def(v, ei)))
                                       ^
./../graph_adjacency.hh:768:40: error: expression cannot be used as a function
                 auto& pos = get_pos(idx);
                                        ^
./../graph_adjacency.hh:779:36: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                [&](auto& oe)
                                    ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:781:60: error: request for member ‘def’ in ‘mk_out_edge’, which is of non-class type ‘int’
                                    return pred(mk_out_edge.def(v, oe));
                                                            ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&, Pred&&)’:
./../graph_adjacency.hh:787:42: error: invalid use of ‘auto’
                   [&](size_t idx) -> auto& {return g._epos[idx].second;},
                                          ^
./../graph_adjacency.hh:790:42: error: invalid use of ‘auto’
                   [&](size_t idx) -> auto& {return g._epos[idx].first;},
                                          ^
./../graph_adjacency.hh: In function ‘void boost::clear_vertex(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:798:27: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
     clear_vertex(v, g, [](auto&&){ return true; });
                           ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:810:25: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
     auto shift_es = [&](auto& edges, int i)
                         ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:812:31: error: invalid types ‘int[int]’ for array subscript
         for (auto& e : edges[i])
                               ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex_fast(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:842:30: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto rename_v = [&] (auto& out_edges, auto& in_edges,
                              ^
./../graph_adjacency.hh:842:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto rename_v = [&] (auto& out_edges, auto& in_edges,
                                               ^
./../graph_adjacency.hh:843:36: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                              const auto& get_pos)
                                    ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:865:51: error: expression cannot be used as a function
                             auto pos = get_pos(idx);
                                                   ^
./../graph_adjacency.hh: In function ‘void boost::remove_vertex_fast(Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:873:37: error: invalid use of ‘auto’
                  [&](size_t idx) -> auto {return g._epos[idx].second;});
                                     ^
./../graph_adjacency.hh:875:37: error: invalid use of ‘auto’
                  [&](size_t idx) -> auto {return g._epos[idx].first;});
                                     ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(Vertex, Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:926:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&] (const auto& ei) -> bool
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:927:52: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                    {return t == ei.first;});
                                                    ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(Vertex, Vertex, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:937:47: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                    [&] (const auto& ei) -> bool
                                               ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:938:52: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                    {return s == ei.first;});
                                                    ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:963:30: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_e = [&] (auto& elist, auto v)
                              ^
./../graph_adjacency.hh:963:43: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
         auto remove_e = [&] (auto& elist, auto v)
                                           ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:965:48: error: request for member ‘begin’ in ‘elist’, which is of non-class type ‘int’
                 auto iter = std::find_if(elist.begin(), elist.end(),
                                                ^
./../graph_adjacency.hh:965:63: error: request for member ‘end’ in ‘elist’, which is of non-class type ‘int’
                 auto iter = std::find_if(elist.begin(), elist.end(),
                                                               ^
./../graph_adjacency.hh:966:53: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                                          [&] (const auto& ei) -> bool
                                                     ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:967:58: error: request for member ‘first’ in ‘ei’, which is of non-class type ‘const int’
                                          {return v == ei.first && idx == ei.second;});
                                                          ^
./../graph_adjacency.hh:967:77: error: request for member ‘second’ in ‘ei’, which is of non-class type ‘const int’
                                          {return v == ei.first && idx == ei.second;});
                                                                             ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:968:35: error: request for member ‘end’ in ‘elist’, which is of non-class type ‘int’
                 if (iter != elist.end())
                                   ^
./../graph_adjacency.hh:970:27: error: request for member ‘erase’ in ‘elist’, which is of non-class type ‘int’
                     elist.erase(iter);
                           ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:982:34: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
             auto remove_e = [&] (auto& elist, const auto& get_pos)
                                  ^
./../graph_adjacency.hh:982:53: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
             auto remove_e = [&] (auto& elist, const auto& get_pos)
                                                     ^
./../graph_adjacency.hh: In lambda function:
./../graph_adjacency.hh:984:42: error: request for member ‘back’ in ‘elist’, which is of non-class type ‘int’
                 const auto& back = elist.back();
                                          ^
./../graph_adjacency.hh:986:36: error: expression cannot be used as a function
                 get_pos(back.second) = pindex;
                                    ^
./../graph_adjacency.hh:988:23: error: request for member ‘pop_back’ in ‘elist’, which is of non-class type ‘int’
                 elist.pop_back();
                       ^
./../graph_adjacency.hh: In function ‘void boost::remove_edge(const typename boost::adj_list<Vertex>::edge_descriptor&, boost::adj_list<Vertex>&)’:
./../graph_adjacency.hh:991:50: error: invalid use of ‘auto’
             remove_e(oes, [&](size_t idx) -> auto& {return g._epos[idx].first;});
                                                  ^
./../graph_adjacency.hh:992:50: error: invalid use of ‘auto’
             remove_e(ies, [&](size_t idx) -> auto& {return g._epos[idx].second;});
                                                  ^
In file included from ./../graph_filtering.hh:49:0,
                 from graph_cairo_draw.cc:22:
./../graph_selectors.hh: At global scope:
./../graph_selectors.hh:78:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:78:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:86:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:86:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:98:44: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        detail::no_weightS) const
                                            ^
./../graph_selectors.hh:98:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:106:71: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const ConstantPropertyMap<Value, Key>& weight) const
                                                                       ^
./../graph_selectors.hh:106:71: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:114:61: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const UnityPropertyMap<Value, Key>&) const
                                                             ^
./../graph_selectors.hh:114:61: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:121:72: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const Graph& g, std::true_type, Weight& weight) const
                                                                        ^
./../graph_selectors.hh:121:72: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:134:66: error: ‘get_in_degree’ function uses ‘auto’ type specifier without trailing return type
                        const Graph&, std::false_type, Weight&&)  const
                                                                  ^
./../graph_selectors.hh:134:66: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:149:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:149:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:157:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:157:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:165:72: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const ConstantPropertyMap<Value, Key>& weight) const
                                                                        ^
./../graph_selectors.hh:165:72: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:173:62: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const UnityPropertyMap<Value, Key>&) const
                                                              ^
./../graph_selectors.hh:173:62: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:181:63: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const Graph& g, const Weight& weight) const
                                                               ^
./../graph_selectors.hh:181:63: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:194:61: error: ‘get_out_degree’ function uses ‘auto’ type specifier without trailing return type
                         const Graph& g, detail::no_weightS) const
                                                             ^
./../graph_selectors.hh:194:61: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:208:37: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g) const
                                     ^
./../graph_selectors.hh:208:37: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:216:54: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
                     const Graph& g, Weight&& weight) const
                                                      ^
./../graph_selectors.hh:216:54: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:229:44: error: ‘get_total_degree’ function uses ‘auto’ type specifier without trailing return type
                           Weight&& weight) const
                                            ^
./../graph_selectors.hh:229:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:238:77: error: ‘get_total_degree’ function uses ‘auto’ type specifier without trailing return type
                           const Graph& g, std::false_type, Weight&& weight) const
                                                                             ^
./../graph_selectors.hh:238:77: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:255:56: error: ‘operator()’ function uses ‘auto’ type specifier without trailing return type
     auto operator()(const Descriptor& d, const Graph&) const
                                                        ^
./../graph_selectors.hh:255:56: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:673:44: error: ‘mk_range’ function uses ‘auto’ type specifier without trailing return type
 auto mk_range(std::pair<Iter, Iter>&& range)
                                            ^
./../graph_selectors.hh:673:44: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:680:35: error: ‘vertices_range’ function uses ‘auto’ type specifier without trailing return type
 auto vertices_range(const Graph& g)
                                   ^
./../graph_selectors.hh:680:35: note: deduced return type only available with -std=c++14 or -std=gnu++14
./../graph_selectors.hh:687:32: error: ‘edges_range’ function uses ‘auto’ type specifier without trailing return type
 auto edges_range(const Graph& g)
                                ^
./../graph_selectors.hh:687:32: note: deduced return type only available with -std=c++14 or -std=gnu++14

There are many more lines of errors but posting it all takes me over the character limit.

P-M
  • 1,279
  • 2
  • 21
  • 35
  • Your `./configure` command produced no errors because there were no `configure` errors. The error messages you see in the `config.log` are the expected results of environment checks run by `configure`. A clean `configure` does not preclude build errors. You will need to post the actual build log of the failing build with the steps by which readers can reproduce it. (`git clone gitlab@git.skewed.de:count0/graph-tool.git` asks me for a password...) – Mike Kinghan Jan 13 '17 at 12:11
  • The password request will disappear if you add your ssh key to your gitlab account. I presume if you download it over htmls it should also disappear? i.e. the command should be `git clone https://git.skewed.de/count0/graph-tool.git` Which file precisely do you need? `config.log` after I have run `make`? the `config.log` after `.\configure` can be found under the posted link as I wasn't sure how to post it on stackoverflow and I didn't want to fill the screen with hundreds of lines of text. – P-M Jan 13 '17 at 12:23
  • I have also uploaded the screen output of the `make` step that seems to be going wrong under above link. – P-M Jan 13 '17 at 12:54
  • As I said, `./configure` was successful and the fact that it was successful does not preclude `make` errors. `make` failed. Capture the `make` output: `make [options...?] > build.log.txt 2>&1` Find the 1st commandline in the build log that produces errors. Post the `make` command, the 1st failing commandline and the errors that follow from it, verbatim, *in the body of your question*. Posting an offsite link to another offsite link to problem information will not cut it on Stackoverflow. – Mike Kinghan Jan 14 '17 at 09:59
  • I have added parts of the output. That total is 60,000 characters long so won't fit onto stackoverflow. Have posted the beginning which hopefully is the useful section? – P-M Jan 15 '17 at 16:21

1 Answers1

1

The C++ source that fails to compile employs features from the C++14 standard, so it requires the compiler option -std=c++14, which is not being supplied through your ./configure command.

This is a bug in the autotooling of the package (which generates the configure script). As a package user you should not need to specify the applicable C++ language standard for a successful build: it should be pre-configured.

You might be seeing this bug because you are using a master branch head of the repo, rather than a stable package release, but it's still a quality gaffe if the master branch head doesn't build with the default ./configure - and it doesn't: I confirm your build break.

You can control the C++ compilation options that ./configure will generate by assigning the desired options to CXXFLAGS in its commandline. (Run ./configure -h for fuller details.)

./configure CXXFLAGS=-std=c++14
make
sudo make install

will give you a successful build and install, assuming that you have satisfied all the dependencies.

Incidentally the make command you've posted,

sudo make -Wno-unused-local-typedefs

doesn't make sense, although is this unconnected with the build break. You're attempting to pass the compiler option -Wno-unused-local-typedefs to make, which is not the compiler and just ignores it. If you wish to pass this additional option to the compiler then add it to the CXXFLAGS you pass to ./configure:

./configure CXXFLAGS='-std=c++14 -Wno-unused-local-typedefs'

It will suppress some minor warnings in the build, but is unnecessary.

Mike Kinghan
  • 55,740
  • 12
  • 153
  • 182
  • I ended up running `sudo ./configure CXXFLAGS="-std=gnu++14" PYTHON="/home/pmj27/anaconda/bin/python2.7" CAIROMM_LIBS="-L/home/pmj27/anaconda/include/cairomm-1.0/cairomm" --enable-openmp` which compiled successfully. (I am not sure if the `CAIROMM_LIBS` part was strictly necessary.) Now for some reason however python won't find the package. – P-M Jan 16 '17 at 10:41