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

Reply via email to