Menu

#151 ecolab.5.D26 does not link agaist Debian igraph

ecolab
closed
nobody
None
1
2015-10-19
2015-07-28
No

If the Debian package libigraph0-dev 0.7.1-2 is present then ecolab.5.D26 will not compile

running "make" gives the following errors (see below). The problem does not seem to be caused by igraph as, for instance, /usr/include/igraph/igraph.h includes igraph_error.h where igraph_strerror is defined.

I can force it to compile either by editing the Makefile of by editing include/Makefile.config after attempting to compile it but in this case it obiously won't be linked against libigraph.

Output from make:

In file included from src/netcomplexity.cc:12:0:
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘virtual const char ecolab::IGraphError::what() const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:27:32: error: ‘igraph_strerror’ was not declared in this scope
{return igraph_strerror(err);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: At global scope:
/home/think/sources/ecolab.5.D26/include/igraph.h:31:3: error: expected class-name before ‘{’ token
{
^
/home/think/sources/ecolab.5.D26/include/igraph.h:63:13: error: ‘igraph_t’ does not name a type
const igraph_t
g;
^
/home/think/sources/ecolab.5.D26/include/igraph.h:64:7: error: ‘igraph_eit_t’ does not name a type
igraph_eit_t it;
^
/home/think/sources/ecolab.5.D26/include/igraph.h:67:28: error: ‘igraph_t’ does not name a type
const_iterator(const igraph_t& graph, const igraph_es_t& es):
^
/home/think/sources/ecolab.5.D26/include/igraph.h:67:51: error: ‘igraph_es_t’ does not name a type
const_iterator(const igraph_t& graph, const igraph_es_t& es):
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In constructor ‘ecolab::IGraph::IGraph(unsigned int, bool)’:
/home/think/sources/ecolab.5.D26/include/igraph.h:37:40: error: ‘igraph_empty’ was not declared in this scope
{igraph_empty(this, nodes, directed);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In copy constructor ‘ecolab::IGraph::IGraph(const ecolab::IGraph&)’:
/home/think/sources/ecolab.5.D26/include/igraph.h:38:49: error: ‘igraph_copy’ was not declared in this scope
IGraph(const IGraph& x) {igraph_copy(this,&x);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In constructor ‘ecolab::IGraph::IGraph(const ecolab::Graph&)’:
/home/think/sources/ecolab.5.D26/include/igraph.h:40:49: error: ‘igraph_empty’ was not declared in this scope
igraph_empty(this, x.nodes(), x.directed());
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In destructor ‘ecolab::IGraph::~IGraph()’:
/home/think/sources/ecolab.5.D26/include/igraph.h:45:31: error: ‘igraph_destroy’ was not declared in this scope
try {igraph_destroy(this);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘const ecolab::IGraph& ecolab::IGraph::operator=(const ecolab::IGraph&)’:
/home/think/sources/ecolab.5.D26/include/igraph.h:54:25: error: ‘igraph_copy’ was not declared in this scope
{igraph_copy(this,&x); return this;}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In constructor ‘ecolab::IGraph::const_iterator::const_iterator(const int&, const int&)’:
/home/think/sources/ecolab.5.D26/include/igraph.h:68:9: error: class ‘ecolab::IGraph::const_iterator’ does not have any field named ‘g’
g(&graph) {igraph_eit_create(g,es,&it);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h:68:38: error: ‘g’ was not declared in this scope
g(&graph) {igraph_eit_create(g,es,&it);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h:68:44: error: ‘it’ was not declared in this scope
g(&graph) {igraph_eit_create(g,es,&it);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h:68:46: error: ‘igraph_eit_create’ was not declared in this scope
g(&graph) {igraph_eit_create(g,es,&it);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In destructor ‘ecolab::IGraph::const_iterator::~const_iterator()’:
/home/think/sources/ecolab.5.D26/include/igraph.h:69:46: error: ‘it’ was not declared in this scope
~const_iterator() {igraph_eit_destroy(&it);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h:69:48: error: ‘igraph_eit_destroy’ was not declared in this scope
~const_iterator() {igraph_eit_destroy(&it);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘bool ecolab::IGraph::const_iterator::operator==(const ecolab::IGraph::const_iterator&) const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:72:17: error: ‘g’ was not declared in this scope
return (g==x.g &&
^
/home/think/sources/ecolab.5.D26/include/igraph.h:72:22: error: ‘const class ecolab::IGraph::const_iterator’ has no member named ‘g’
return (g==x.g &&
^
/home/think/sources/ecolab.5.D26/include/igraph.h:73:32: error: ‘it’ was not declared in this scope
IGRAPH_EIT_END(it) && IGRAPH_EIT_END(x.it)) ||
^
/home/think/sources/ecolab.5.D26/include/igraph.h:73:34: error: ‘IGRAPH_EIT_END’ was not declared in this scope
IGRAPH_EIT_END(it) && IGRAPH_EIT_END(x.it)) ||
^
/home/think/sources/ecolab.5.D26/include/igraph.h:73:56: error: ‘const class ecolab::IGraph::const_iterator’ has no member named ‘it’
IGRAPH_EIT_END(it) && IGRAPH_EIT_END(x.it)) ||
^
/home/think/sources/ecolab.5.D26/include/igraph.h:74:53: error: ‘const class ecolab::IGraph::const_iterator’ has no member named ‘it’
(!IGRAPH_EIT_END(it) && !IGRAPH_EIT_END(x.it) && operator
()==x);
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘ecolab::Edge ecolab::IGraph::const_iterator::operator
() const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:78:9: error: ‘igraph_integer_t’ was not declared in this scope
igraph_integer_t from, to;
^
/home/think/sources/ecolab.5.D26/include/igraph.h:79:21: error: ‘g’ was not declared in this scope
igraph_edge(g, IGRAPH_EIT_GET(it), &from, &to);
^
/home/think/sources/ecolab.5.D26/include/igraph.h:79:39: error: ‘it’ was not declared in this scope
igraph_edge(g, IGRAPH_EIT_GET(it), &from, &to);
^
/home/think/sources/ecolab.5.D26/include/igraph.h:79:41: error: ‘IGRAPH_EIT_GET’ was not declared in this scope
igraph_edge(g, IGRAPH_EIT_GET(it), &from, &to);
^
/home/think/sources/ecolab.5.D26/include/igraph.h:79:45: error: ‘from’ was not declared in this scope
igraph_edge(g, IGRAPH_EIT_GET(it), &from, &to);
^
/home/think/sources/ecolab.5.D26/include/igraph.h:79:52: error: ‘to’ was not declared in this scope
igraph_edge(g, IGRAPH_EIT_GET(it), &from, &to);
^
/home/think/sources/ecolab.5.D26/include/igraph.h:79:54: error: ‘igraph_edge’ was not declared in this scope
igraph_edge(g, IGRAPH_EIT_GET(it), &from, &to);
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘ecolab::IGraph::const_iterator& ecolab::IGraph::const_iterator::operator++()’:
/home/think/sources/ecolab.5.D26/include/igraph.h:88:25: error: ‘it’ was not declared in this scope
IGRAPH_EIT_NEXT(it);
^
/home/think/sources/ecolab.5.D26/include/igraph.h:88:27: error: ‘IGRAPH_EIT_NEXT’ was not declared in this scope
IGRAPH_EIT_NEXT(it);
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘ecolab::IGraph::const_iterator ecolab::IGraph::begin() const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:95:7: error: ‘igraph_es_t’ was not declared in this scope
igraph_es_t es;
^
/home/think/sources/ecolab.5.D26/include/igraph.h:96:22: error: ‘es’ was not declared in this scope
igraph_es_all(&es,IGRAPH_EDGEORDER_ID); //select all edges
^
/home/think/sources/ecolab.5.D26/include/igraph.h:96:25: error: ‘IGRAPH_EDGEORDER_ID’ was not declared in this scope
igraph_es_all(&es,IGRAPH_EDGEORDER_ID); //select all edges
^
/home/think/sources/ecolab.5.D26/include/igraph.h:96:44: error: ‘igraph_es_all’ was not declared in this scope
igraph_es_all(&es,IGRAPH_EDGEORDER_ID); //select all edges
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘ecolab::IGraph::const_iterator ecolab::IGraph::end() const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:103:7: error: ‘igraph_es_t’ was not declared in this scope
igraph_es_t es;
^
/home/think/sources/ecolab.5.D26/include/igraph.h:104:23: error: ‘es’ was not declared in this scope
igraph_es_none(&es); //select no edges
^
/home/think/sources/ecolab.5.D26/include/igraph.h:104:25: error: ‘igraph_es_none’ was not declared in this scope
igraph_es_none(&es); //select no edges
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘unsigned int ecolab::IGraph::nodes() const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:108:54: error: ‘igraph_vcount’ was not declared in this scope
unsigned nodes() const {return igraph_vcount(this);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘unsigned int ecolab::IGraph::links() const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:109:54: error: ‘igraph_ecount’ was not declared in this scope
unsigned links() const {return igraph_ecount(this);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘void ecolab::IGraph::push_back(const ecolab::Edge&)’:
/home/think/sources/ecolab.5.D26/include/igraph.h:113:52: error: ‘igraph_add_vertices’ was not declared in this scope
if (n<maxN) igraph_add_vertices(this,maxN-n,0); //ensure enough nodes
^
/home/think/sources/ecolab.5.D26/include/igraph.h:114:51: error: ‘igraph_add_edge’ was not declared in this scope
igraph_add_edge(this, e.source(), e.target());
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘bool ecolab::IGraph::contains(const ecolab::Edge&) const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:119:9: error: ‘igraph_integer_t’ was not declared in this scope
igraph_integer_t eid;
^
/home/think/sources/ecolab.5.D26/include/igraph.h:120:30: error: ‘eid’ was not declared in this scope
igraph_get_eid(this,&eid,e.source(),e.target(),true);
^
/home/think/sources/ecolab.5.D26/include/igraph.h:120:60: error: ‘igraph_get_eid’ was not declared in this scope
igraph_get_eid(this,&eid,e.source(),e.target(),true);
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘bool ecolab::IGraph::directed() const’:
/home/think/sources/ecolab.5.D26/include/igraph.h:126:58: error: ‘igraph_is_directed’ was not declared in this scope
bool directed() const {return igraph_is_directed(this);}
^
/home/think/sources/ecolab.5.D26/include/igraph.h: In member function ‘void ecolab::IGraph::clear(unsigned int)’:
/home/think/sources/ecolab.5.D26/include/igraph.h:130:26: error: ‘igraph_destroy’ was not declared in this scope
igraph_destroy(this);
^
/home/think/sources/ecolab.5.D26/include/igraph.h:131:34: error: ‘igraph_empty’ was not declared in this scope
igraph_empty(this,nodes,dir);
^
gcc -c -fPIC -I. -I/home/think/sources/ecolab.5.D26/include -DHASH_TCL_hash -DHAVE_LONGLONG -DTR1 -I/home/think/sources/ecolab.5.D26/include -I/home/think/usr/include -I/usr/local/include -I/opt/local/include -I/usr/X11R6/include -DGNUSL -DZLIB -DXDR_PACK -DREADLINE -DIGRAPH -DCAIRO -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -DCONTIGUOUS -DTK -I/usr/include/tcl8.6 -I/usr/include/tcl8.6 -DECOLAB_LIB=\"/home/think/sources/ecolab.5.D26/include\" -DNDEBUG -I/home/think/sources/ecolab.5.D26/include -DPANGO -pthread -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -UECOLAB_LIB -DINSTALLED_ECOLAB_LIB=\"/home/think/usr/ecolab/include\" -O3 -o src/nautinv.o src/nautinv.c
src/netcomplexity.cc: In function ‘double ecolab::igraph_lnomega(const ecolab::DiGraph&, int)’:
src/netcomplexity.cc:315:5: error: ‘igraph_bliss_sh_t’ was not declared in this scope
igraph_bliss_sh_t sh(static_cast<igraph_bliss_sh_t>(method));
^
src/netcomplexity.cc:316:5: error: ‘igraph_bliss_info_t’ was not declared in this scope
igraph_bliss_info_t ret;
^
src/netcomplexity.cc:317:30: error: ‘sh’ was not declared in this scope
igraph_automorphisms(&ig,sh,&ret);
^
src/netcomplexity.cc:317:34: error: ‘ret’ was not declared in this scope
igraph_automorphisms(&ig,sh,&ret);
^
src/netcomplexity.cc:317:37: error: ‘igraph_automorphisms’ was not declared in this scope
igraph_automorphisms(&ig,sh,&ret);
^
include/Makefile:544: recipe for target 'src/netcomplexity.o' failed
make[1]: *** [src/netcomplexity.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** wait: No child processes. Stop.
Makefile:102: recipe for target 'ecolab-libs' failed
make: *** [ecolab-libs] Error 2</igraph_bliss_sh_t>

Discussion

  • High Performance Coder

    It would appear that ecolab is built against igraph-0.5.4, and things
    have changed in the interim.

    The thing to do would be to update EcoLab to build against the latest igraph.

    As a workaround, specify IGRAPH= on the make command line.

    Cheers

    --


    Prof Russell Standish Phone 0425 253119 (mobile)
    Principal, High Performance Coders
    Visiting Professor of Mathematics hpcoder@hpcoders.com.au
    University of New South Wales http://www.hpcoders.com.au


     
  • Bernard Hurley

    Bernard Hurley - 2015-07-28

    Thanks, I found igraph-0.5.4 in the old Debian Wheezy repository and have downgraded to it. It doesn't seem to have broken anything and ecolab compiles OK now.

     
  • High Performance Coder

    Fixed now. It works with latest igraph, and with the original 0.5.4, but maybe not in between versions.

     
  • High Performance Coder

    • status: open --> closed
     

Anonymous
Anonymous

Add attachments
Cancel





MongoDB Logo MongoDB