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.
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
Anonymous
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
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.
Fixed now. It works with latest igraph, and with the original 0.5.4, but maybe not in between versions.