I hesitate to add in here as this is all way above my paygrade, but I too ran into issues with a canopy installation throwing the *Cannot find the C core of igraph on this system using pkg-config. *When it happened to me, I think I just moved the igraph.pc file to /usr/local/lib/pkgconfig (I THINK it was in /usr/local/lib) and so pkg-config could find it and it worked.
On Thu Feb 05 2015 at 8:36:23 AM Tamas Nepusz <[email protected]> wrote: > Hi, > > I think I have an idea but I'm not 100% sure. It seems that igraph is > compiled > with thread-local storage support by default (meaning that global > variables are > declared as thread-local, so in theory it should be safe to use igraph from > multiple threads at the same time -- although it's highly experimental and > not > tested thoroughly at all, so we do not officially support this). This > seems to > be an error in the configure script because that was definitely not our > intention at all. I will have to follow up on this later. > > Now, this means that when you install the C core, you get a copy of the > igraph > library somewhere in your library path where thread-local variables are > enabled. On OS X, thread-local storage is actually emulated, and the > ___emutls_get_address function is needed for this. > > The problem is then that later on you compile the Python interface, and the > setup script of the Python interface is not able to find the installed C > core > (as you mentioned this), so it *downloads* the C core again and compiles > it -- > but this time the installer explicitly passes the --disable-tls argument > to the > configure script. Then you end up with a Python interface which is > expected to > link to a C core *without* thread-local support, while the actual igraph > library that you have on your system is compiled *with* thread-local > support. > > I see three possible solutions if this is really the case: > > 1) Get rid of the existing C core installation of igraph. If you installed > it > in /usr/local (which is what igraph does by default), you can simply > remove > /usr/local/lib/libigraph* and /usr/local/include/igraph* > > 2) Try to make the setup.py script of the Python interface find where the > C core was installed instead of downloading it again. By default the > setup > script uses pkg-config to figure out where the C core is, so first try > typing "pkg-config --cflags --libs igraph" into a terminal and check > whether > it is working. (It should print a bunch of compiler flags). > > 3) Recompile the C core with "./configure --disable-tls && make && make > install", then recompile the Python interface as well (just to be on the > safe side). > > Let me know if it didn't work so we can continue investigating. > > All the best, > Tamas > > _______________________________________________ > igraph-help mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/igraph-help >
_______________________________________________ igraph-help mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/igraph-help
