taynaud / python-louvain

Louvain Community Detection
BSD 3-Clause "New" or "Revised" License
964 stars 200 forks source link

build fails with igraph >= 0.10 #100

Closed Apteryks closed 1 year ago

Apteryks commented 1 year ago

Hi,

After updating igraph to 0.10.4 in GNU Guix, the build of python-louvain 0.7.1 fails like:

src/louvain/GraphHelper.cpp:378:37: error: cannot convert ‘__gnu_cxx::__alloc_traits<std::allocator<double>, double>::value_type*’ {aka ‘double*’} to ‘const igraph_vector_t*’
  378 |   igraph_vector_init_copy(&weights, &this->_edge_weights[0], this->ecount());
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector.h:71,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_random.h:29,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:34,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:33:61: note:   initializing argument 2 of ‘igraph_error_t igraph_vector_init_copy(igraph_vector_t*, const igraph_vector_t*)’
   33 |         TYPE(igraph_vector) *to, const TYPE(igraph_vector) *from);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
src/louvain/GraphHelper.cpp:393:37: error: cannot convert ‘__gnu_cxx::__alloc_traits<std::allocator<double>, double>::value_type*’ {aka ‘double*’} to ‘const igraph_vector_t*’
  393 |   igraph_vector_init_copy(&weights, &this->_edge_weights[0], this->ecount());
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector.h:71,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_random.h:29,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:34,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:33:61: note:   initializing argument 2 of ‘igraph_error_t igraph_vector_init_copy(igraph_vector_t*, const igraph_vector_t*)’
   33 |         TYPE(igraph_vector) *to, const TYPE(igraph_vector) *from);
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
src/louvain/GraphHelper.cpp:407:31: error: cannot convert ‘igraph_vector_t*’ to ‘igraph_vector_int_t*’
  407 |   igraph_degree(this->_graph, &res, igraph_vss_all(), IGRAPH_IN, true);
      |                               ^~~~
      |                               |
      |                               igraph_vector_t*
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:57,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_interface.h:59:88: note:   initializing argument 2 of ‘igraph_error_t igraph_degree(const igraph_t*, igraph_vector_int_t*, igraph_vs_t, igraph_neimode_t, igraph_bool_t)’
   59 | IGRAPH_EXPORT igraph_error_t igraph_degree(const igraph_t *graph, igraph_vector_int_t *res,
      |                                                                   ~~~~~~~~~~~~~~~~~~~~~^~~
src/louvain/GraphHelper.cpp:416:31: error: cannot convert ‘igraph_vector_t*’ to ‘igraph_vector_int_t*’
  416 |   igraph_degree(this->_graph, &res, igraph_vss_all(), IGRAPH_OUT, true);
      |                               ^~~~
      |                               |
      |                               igraph_vector_t*
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:57,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_interface.h:59:88: note:   initializing argument 2 of ‘igraph_error_t igraph_degree(const igraph_t*, igraph_vector_int_t*, igraph_vs_t, igraph_neimode_t, igraph_bool_t)’
   59 | IGRAPH_EXPORT igraph_error_t igraph_degree(const igraph_t *graph, igraph_vector_int_t *res,
      |                                                                   ~~~~~~~~~~~~~~~~~~~~~^~~
src/louvain/GraphHelper.cpp:425:31: error: cannot convert ‘igraph_vector_t*’ to ‘igraph_vector_int_t*’
  425 |   igraph_degree(this->_graph, &res, igraph_vss_all(), IGRAPH_ALL, true);
      |                               ^~~~
      |                               |
      |                               igraph_vector_t*
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:57,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_interface.h:59:88: note:   initializing argument 2 of ‘igraph_error_t igraph_degree(const igraph_t*, igraph_vector_int_t*, igraph_vs_t, igraph_neimode_t, igraph_bool_t)’
   59 | IGRAPH_EXPORT igraph_error_t igraph_degree(const igraph_t *graph, igraph_vector_int_t *res,
      |                                                                   ~~~~~~~~~~~~~~~~~~~~~^~~
src/louvain/GraphHelper.cpp: In member function ‘void Graph::cache_neighbour_edges(size_t, igraph_neimode_t)’:
src/louvain/GraphHelper.cpp:471:33: error: cannot convert ‘igraph_vector_t*’ to ‘igraph_vector_int_t*’
  471 |   igraph_incident(this->_graph, &incident_edges, v, mode);
      |                                 ^~~~~~~~~~~~~~~
      |                                 |
      |                                 igraph_vector_t*
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:57,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_interface.h:74:90: note:   initializing argument 2 of ‘igraph_error_t igraph_incident(const igraph_t*, igraph_vector_int_t*, igraph_integer_t, igraph_neimode_t)’
   74 | IGRAPH_EXPORT igraph_error_t igraph_incident(const igraph_t *graph, igraph_vector_int_t *eids, igraph_integer_t vid,
      |                                                                     ~~~~~~~~~~~~~~~~~~~~~^~~~
src/louvain/GraphHelper.cpp:489:69: warning: ‘igraph_real_t* igraph_vector_e_ptr(const igraph_vector_t*, igraph_integer_t)’ is deprecated [-Wdeprecated-declarations]
  489 |   _cached_neigh_edges->assign(igraph_vector_e_ptr(&incident_edges, 0),
      |                                                                     ^
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector.h:70,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_random.h:29,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:34,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:73:48: note: declared here
   73 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE* FUNCTION(igraph_vector, e_ptr)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                                ^~~~~~~~~~~~~
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_pmt.h:24:23: note: in definition of macro ‘CONCAT2x’
   24 | #define CONCAT2x(a,b) a ## _ ## b
      |                       ^
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_pmt.h:161:31: note: in expansion of macro ‘CONCAT2’
  161 |         #define FUNCTION(a,c) CONCAT2(a,c)
      |                               ^~~~~~~
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:73:39: note: in expansion of macro ‘FUNCTION’
   73 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE* FUNCTION(igraph_vector, e_ptr)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                       ^~~~~~~~
src/louvain/GraphHelper.cpp:490:74: warning: ‘igraph_real_t* igraph_vector_e_ptr(const igraph_vector_t*, igraph_integer_t)’ is deprecated [-Wdeprecated-declarations]
  490 |                               igraph_vector_e_ptr(&incident_edges, degree));
      |                                                                          ^
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector.h:70,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_random.h:29,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:34,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:73:48: note: declared here
   73 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE* FUNCTION(igraph_vector, e_ptr)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                                ^~~~~~~~~~~~~
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_pmt.h:24:23: note: in definition of macro ‘CONCAT2x’
   24 | #define CONCAT2x(a,b) a ## _ ## b
      |                       ^
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_pmt.h:161:31: note: in expansion of macro ‘CONCAT2’
  161 |         #define FUNCTION(a,c) CONCAT2(a,c)
      |                               ^~~~~~~
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:73:39: note: in expansion of macro ‘FUNCTION’
   73 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE* FUNCTION(igraph_vector, e_ptr)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                       ^~~~~~~~
src/louvain/GraphHelper.cpp: In member function ‘void Graph::cache_neighbours(size_t, igraph_neimode_t)’:
src/louvain/GraphHelper.cpp:550:34: error: cannot convert ‘igraph_vector_t*’ to ‘igraph_vector_int_t*’
  550 |   igraph_neighbors(this->_graph, &neighbours, v, mode);
      |                                  ^~~~~~~~~~~
      |                                  |
      |                                  igraph_vector_t*
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:57,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_interface.h:54:91: note:   initializing argument 2 of ‘igraph_error_t igraph_neighbors(const igraph_t*, igraph_vector_int_t*, igraph_integer_t, igraph_neimode_t)’
   54 | IGRAPH_EXPORT igraph_error_t igraph_neighbors(const igraph_t *graph, igraph_vector_int_t *neis, igraph_integer_t vid,
      |                                                                      ~~~~~~~~~~~~~~~~~~~~~^~~~
src/louvain/GraphHelper.cpp:568:60: warning: ‘igraph_real_t* igraph_vector_e_ptr(const igraph_vector_t*, igraph_integer_t)’ is deprecated [-Wdeprecated-declarations]
  568 |   _cached_neighs->assign(igraph_vector_e_ptr(&neighbours, 0),igraph_vector_e_ptr(&neighbours, degree));
      |                                                            ^
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector.h:70,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_random.h:29,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:34,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:73:48: note: declared here
   73 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE* FUNCTION(igraph_vector, e_ptr)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                                ^~~~~~~~~~~~~
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_pmt.h:24:23: note: in definition of macro ‘CONCAT2x’
   24 | #define CONCAT2x(a,b) a ## _ ## b
      |                       ^
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_pmt.h:161:31: note: in expansion of macro ‘CONCAT2’
  161 |         #define FUNCTION(a,c) CONCAT2(a,c)
      |                               ^~~~~~~
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:73:39: note: in expansion of macro ‘FUNCTION’
   73 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE* FUNCTION(igraph_vector, e_ptr)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                       ^~~~~~~~
src/louvain/GraphHelper.cpp:568:101: warning: ‘igraph_real_t* igraph_vector_e_ptr(const igraph_vector_t*, igraph_integer_t)’ is deprecated [-Wdeprecated-declarations]
  568 |   _cached_neighs->assign(igraph_vector_e_ptr(&neighbours, 0),igraph_vector_e_ptr(&neighbours, degree));
      |                                                                                                     ^
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector.h:70,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_random.h:29,
                 from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:34,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:73:48: note: declared here
   73 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE* FUNCTION(igraph_vector, e_ptr)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                                ^~~~~~~~~~~~~
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_pmt.h:24:23: note: in definition of macro ‘CONCAT2x’
   24 | #define CONCAT2x(a,b) a ## _ ## b
      |                       ^
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_pmt.h:161:31: note: in expansion of macro ‘CONCAT2’
  161 |         #define FUNCTION(a,c) CONCAT2(a,c)
      |                               ^~~~~~~
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_vector_pmt.h:73:39: note: in expansion of macro ‘FUNCTION’
   73 | IGRAPH_EXPORT IGRAPH_DEPRECATED BASE* FUNCTION(igraph_vector, e_ptr)(const TYPE(igraph_vector)* v, igraph_integer_t pos);
      |                                       ^~~~~~~~
src/louvain/GraphHelper.cpp: In member function ‘Graph* Graph::collapse_graph(MutableVertexPartition*)’:
src/louvain/GraphHelper.cpp:768:24: error: cannot convert ‘igraph_vector_t*’ to ‘const igraph_vector_int_t*’
  768 |   igraph_create(graph, &edges, n_collapsed, this->is_directed());
      |                        ^~~~~~
      |                        |
      |                        igraph_vector_t*
In file included from /gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph.h:58,
                 from include/GraphHelper.h:4,
                 from src/louvain/GraphHelper.cpp:1:
/gnu/store/0qr539d4glkdxbx5r42xcb3y4g0zinfg-igraph-0.10.4/include/igraph/igraph_constructors.h:42:88: note:   initializing argument 2 of ‘igraph_error_t igraph_create(igraph_t*, const igraph_vector_int_t*, igraph_integer_t, igraph_bool_t)’
   42 | IGRAPH_EXPORT igraph_error_t igraph_create(igraph_t *graph, const igraph_vector_int_t *edges, igraph_integer_t n,
      |                                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
error: command '/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/bin/gcc' failed with exit code 1
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "python" arguments: ("-c" "import setuptools, tokenize;__file__='setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\\r\\n', '\\n');f.close();exec(compile(code, __file__, 'exec'))" "build") exit-status: 1 term-signal: #f stop-signal: #f>

Thanks!

Apteryks commented 1 year ago

Ah nevermind, 0.7.1 is very old (we also have 0.16), and it seems igraph was dropped on the way. Nevermind!