#30899 closed enhancement (fixed)
igraph, pythonigraph: Update to 0.8.3
Reported by:  mkoeppe  Owned by:  

Priority:  major  Milestone:  sage9.3 
Component:  packages: optional  Keywords:  
Cc:  fbissey, dcoudert, dimpase, slelievre, isuruf  Merged in:  
Authors:  David Coudert, Dima Pasechnik  Reviewers:  Dima Pasechnik, Matthias Koeppe 
Report Upstream:  Reported upstream. No feedback yet.  Work issues:  
Branch:  938d704 (Commits, GitHub, GitLab)  Commit:  
Dependencies:  Stopgaps: 
Description (last modified by )
(from #30611)
Released Oct 8, 2020. https://igraph.org/
the previous update was in #27597, where we also disabled blas/lapack inteface; perhaps it can make a comeback here.
This ticket also adds package texttable
version 1.6.3, a dependency of python_igraph
.
source tarballs: see checksums.ini
Change History (63)
comment:1 Changed 18 months ago by
 Description modified (diff)
comment:2 Changed 18 months ago by
comment:3 Changed 18 months ago by
 Description modified (diff)
comment:4 Changed 18 months ago by
This version of igraph is also in homebrew https://formulae.brew.sh/formula/igraph. I don't think we are currently checking whether graph is a system package or not.
We also need python_igraph (https://igraph.org/python/), right ?
comment:5 Changed 18 months ago by
 Branch set to public/30899_igraph
 Commit set to d2f206d39b35f04b5515c0df029b8f27ad878c22
 Description modified (diff)
 Status changed from new to needs_info
I tried to update to 0.8.3 on macOS 10.15.7. Compilation went well, but I have the following issues:
sapristi:sage dcoudert$ ./sage ┌────────────────────────────────────────────────────────────────────┐ │ SageMath version 9.3.beta1, Release Date: 20201107 │ │ Using Python 3.9.0. Type "help()" for help. │ └────────────────────────────────────────────────────────────────────┘ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Warning: this is a prerelease version, and it may be unstable. ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ sage: import igraph  ModuleNotFoundError Traceback (most recent call last) <ipythoninput173ffca960e68> in <module> > 1 import igraph ~/sage/local/lib/python3.9/sitepackages/igraph/__init__.py in <module> 33 # W0401: wildcard import 34 from igraph._igraph import * > 35 from igraph.clustering import * 36 from igraph.cut import * 37 from igraph.configuration import Configuration ~/sage/local/lib/python3.9/sitepackages/igraph/clustering.py in <module> 36 from igraph.drawing.colors import ClusterColoringPalette 37 from igraph.statistics import Histogram > 38 from igraph.summary import _get_wrapper_for_width 39 from igraph.utils import str_to_orientation 40 ~/sage/local/lib/python3.9/sitepackages/igraph/summary.py in <module> 9 from itertools import islice 10 from math import ceil > 11 from texttable import Texttable 12 from textwrap import TextWrapper 13 ModuleNotFoundError: No module named 'texttable'
and
sage: from sage.features import PythonModule sage: F = PythonModule("igraph", spkg="python_igraph", url="http://igraph.org") sage: F.is_present() FeatureTestResult('igraph', False)
I don't know what to do
New commits:
d2f206d  trac #30899: update to 0.8.3

comment:6 Changed 18 months ago by
pythonigraph
has new dependencies that need to be added. pycairo
and texttable
https://pypi.org/project/texttable/
https://pypi.org/project/pycairo/
We may be able to do without pycairo (which in turns will require cairo either as a spkg or system package, may be it is already required, that need to be checked).
comment:7 Changed 18 months ago by
Indeed pythonigraph used to vendor texttable
but this was changed:
https://github.com/igraph/pythonigraph/commit/60194fbb7ff3dbd05c140493e116673834318fc2
Careful, it's texttable
, not textable
(both exist on PyPI).
comment:8 Changed 18 months ago by
as far as cairo and pycairo are concerned, we can add them, why not?
comment:9 Changed 18 months ago by
cairo is potentially opening a nest of dependencies, so if skipping it was possible, I think that would be preferable.
comment:10 Changed 18 months ago by
 Commit changed from d2f206d39b35f04b5515c0df029b8f27ad878c22 to 373c82b5023fe610039ba52a746a0461b744569b
Branch pushed to git repo; I updated commit sha1. New commits:
373c82b  trac #30899: add texttable

comment:11 Changed 18 months ago by
 Description modified (diff)
 Status changed from needs_info to needs_review
I added texttable and it seems ok now on my side. Not sure I did it the right way...
comment:12 Changed 18 months ago by
checksums.ini
needs upstream_url
(see #30895)
spkgcheck.in
looks incomplete.
The error handling in spkginstall.in
can be removed  the function sdh_pip_install
already takes care of it
comment:13 Changed 18 months ago by
 Commit changed from 373c82b5023fe610039ba52a746a0461b744569b to 2f8d5058f85f1ee7bcc5d0853fee84c0dc7653f5
Branch pushed to git repo; I updated commit sha1. New commits:
2f8d505  addded upstream_url's

comment:14 Changed 18 months ago by
 Commit changed from 2f8d5058f85f1ee7bcc5d0853fee84c0dc7653f5 to 63d371849e3c0ee8c9f954c676ff59b173ea7d3f
Branch pushed to git repo; I updated commit sha1. New commits:
63d3718  remove unneeded error handling

comment:15 Changed 18 months ago by
 Commit changed from 63d371849e3c0ee8c9f954c676ff59b173ea7d3f to 9626cf9deb257a5d00015cea7977ddf5a53d7d96
Branch pushed to git repo; I updated commit sha1. New commits:
9626cf9  use pkgconfig to check for libxml

comment:16 Changed 18 months ago by
What else should be done if we want to use a local installation of igraph (e.g., homebrew) ?
comment:17 Changed 18 months ago by
 Commit changed from 9626cf9deb257a5d00015cea7977ddf5a53d7d96 to ccad4b393e049f656dee27ad61353927d8027eb4
Branch pushed to git repo; I updated commit sha1. New commits:
ccad4b3  added missing quotes

comment:18 Changed 18 months ago by
Add system package information in distros/
(see https://repology.org/project/igraph/versions) and add spkgconfigure.m4
comment:19 Changed 18 months ago by
 Status changed from needs_review to needs_info
python_igraph
by default vendors libigraph
, to avoid it one needs to follow
https://github.com/igraph/pythonigraph#linkingtoanexistingigraphinstallation
But I don't know how this can be done with our sdh_pip_install
, which does not accept arguments other than .
.
comment:20 Changed 18 months ago by
You can use the same method that we use in numpy
: Use setup.py bdist_wheel
and then sdh_store_and_pip_install_wheel
.
comment:21 followup: ↓ 22 Changed 18 months ago by
Unless someone wants to give it a try now, I propose to postpone the use of system package to another ticket.
comment:22 in reply to: ↑ 21 Changed 18 months ago by
Replying to dcoudert:
Unless someone wants to give it a try now, I propose to postpone the use of system package to another ticket.
The tricky part is to take care of comment:20  I'll write the spkgconfigure for igraph once this is done, but 1st things 1st.
comment:23 Changed 18 months ago by
 Commit changed from ccad4b393e049f656dee27ad61353927d8027eb4 to af234304d7fefc57a3cd9e6e197cdcda9975c86f
Branch pushed to git repo; I updated commit sha1. New commits:
af23430  build wheel and install

comment:24 Changed 18 months ago by
igraph does not build on macOS 10.5 with Xcode 12.
[igraph0.8.3] /bin/bash ../libtool tag=CC mode=compile clang DHAVE_CONFIG_H I. I.. O3 DIGRAPH_VERIFY_FINALLY_STACK=0 I../include I../include I../src/CHOLMOD/Include I../src/CHOLMOD/Include I../src/AMD/Include I../src/AMD/Include I../src/COLAMD/Include I../src/COLAMD/Include I../src/SuiteSparse_config I../src/SuiteSparse_config DNPARTITION DNTIMER DNCAMD Wall I../src/prpack DPRPACK_IGRAPH_SUPPORT I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include O3 c o AMD/Source/libigraph_laamd_1.lo `test f 'AMD/Source/amd_1.c'  echo './'`AMD/Source/amd_1.c [igraph0.8.3] In file included from CHOLMOD/Supernodal/cholmod_super_numeric.c:80: [igraph0.8.3] CHOLMOD/Supernodal/t_cholmod_super_numeric.c:510:17: error: implicit declaration of function 'dsyrk_' is invalid in C99 [Werror,Wimplicitfunctiondeclaration] [igraph0.8.3] BLAS_dsyrk ("L", "N", [igraph0.8.3] ^ [igraph0.8.3] ../src/CHOLMOD/Include/cholmod_blas.h:331:2: note: expanded from macro 'BLAS_dsyrk' [igraph0.8.3] BLAS_DSYRK (uplo, trans, &N, &K, alpha, A, &LDA, beta, C, &LDC) ; \ [igraph0.8.3] ^ [igraph0.8.3] ../src/CHOLMOD/Include/cholmod_blas.h:132:20: note: expanded from macro 'BLAS_DSYRK' [igraph0.8.3] #define BLAS_DSYRK igraphdsyrk_ [igraph0.8.3] ^ [igraph0.8.3] ./igraph_lapack_internal.h:86:29: note: expanded from macro 'igraphdsyrk_' [igraph0.8.3] #define igraphdsyrk_ dsyrk_ [igraph0.8.3] ^
no surprise, it's very old code they vendor for no good reason, too. I'll open an issue with upstream. The following fixes the problem

build/pkgs/igraph/spkginstall.in
a b You need libxml2 to run igraph. On Ubuntu and Debian Linux, installing the build 4 4 exit 1 5 5 fi 6 6 7 export CFLAGS="$CFLAGS Wnostrictprototypes Wnoimplicitfunctiondeclaration" 7 8 cd src 8 9 sdh_configure withexternalblas withexternallapack withexternalglpk 9 10 sdh_make
comment:25 Changed 18 months ago by
 Commit changed from af234304d7fefc57a3cd9e6e197cdcda9975c86f to 3ff4fd8ea01b6d3d65f8abb1aa7ac4fcd9275452
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
3ff4fd8  build wheel and install

comment:26 Changed 18 months ago by
 Commit changed from 3ff4fd8ea01b6d3d65f8abb1aa7ac4fcd9275452 to 7e97772d80db67f9c8fdbf474cdf971392cfdd0a
Branch pushed to git repo; I updated commit sha1. New commits:
7e97772  spkgconfigure and distros hints for igraph

comment:27 Changed 18 months ago by
 Reviewers set to Dima Pasechnik
 Status changed from needs_info to needs_review
comment:28 followup: ↓ 29 Changed 18 months ago by
+upstream_url=https://github.com/foutaise/texttable/archive/vVERSION.tar.gz
better to use pypi.io URLs
comment:29 in reply to: ↑ 28 Changed 18 months ago by
Replying to mkoeppe:
+upstream_url=https://github.com/foutaise/texttable/archive/vVERSION.tar.gzbetter to use pypi.io URLs
I don't know where to get a nice url there. there are links to pypi.org there with ugly hashes.
comment:30 Changed 18 months ago by
It should be of the following form (try it) https://pypi.io/packages/source/t/texttable/texttableVERSION.tar.gz
comment:31 Changed 18 months ago by
 Commit changed from 7e97772d80db67f9c8fdbf474cdf971392cfdd0a to 59703909d0c9a907cf2a9f355daa5ef31795a2ff
Branch pushed to git repo; I updated commit sha1. New commits:
5970390  get texttable tarball from pypi

comment:32 Changed 18 months ago by
 Commit changed from 59703909d0c9a907cf2a9f355daa5ef31795a2ff to bb1b5105c0010db4c860c3aae0f750a2fac5b98b
Branch pushed to git repo; I updated commit sha1. New commits:
bb1b510  igraph in conda, too

comment:33 Changed 18 months ago by
 Cc isuruf added
comment:34 Changed 18 months ago by
 Status changed from needs_review to needs_work
The distros files are missing the extension ".txt"
comment:35 Changed 18 months ago by
 Commit changed from bb1b5105c0010db4c860c3aae0f750a2fac5b98b to 978d9a4695be20a3312ba558bcc07d80ad239df5
Branch pushed to git repo; I updated commit sha1. New commits:
978d9a4  trac #30899: add missing .txt extensions

comment:36 followup: ↓ 37 Changed 18 months ago by
I renamed the files.
I have a doubt for gentoo.txt
: on page https://repology.org/project/igraph/versions it's written devlibs/igraph
but our file contains only igraph
. Should I change to devlibs/igraph
?
comment:37 in reply to: ↑ 36 Changed 18 months ago by
Replying to dcoudert:
I renamed the files.
I have a doubt for
gentoo.txt
: on page https://repology.org/project/igraph/versions it's writtendevlibs/igraph
but our file contains onlyigraph
. Should I change todevlibs/igraph
?
igraph
would be fine. devlibs/igraph
would be useful to lift ambiguities if there were several igraph packages across different categories. That being said you should check what was done for other packages. If we have a convention of using the "long" package name you should follow it.
comment:38 Changed 18 months ago by
 Commit changed from 978d9a4695be20a3312ba558bcc07d80ad239df5 to 938d7048a34df6a4c22dda3d376cb30b0345e011
Branch pushed to git repo; I updated commit sha1. New commits:
938d704  trac #30899: correct gentoo.txt and add freebsd.txt

comment:39 Changed 18 months ago by
the convention is devlibs/igraph
. I also added a file for freebsd ports.
comment:40 Changed 18 months ago by
 Status changed from needs_work to needs_review
OK, needs final review?
comment:41 followup: ↓ 44 Changed 18 months ago by
pythonigraph is on pypi https://pypi.org/project/pythonigraph/ so we should use it as upstream instead of
upstream_url=https://github.com/igraph/pythonigraph/releases/download/VERSION/pythonigraphVERSION.tar.gz
github generated tarballs sometimes have issues.
comment:42 followups: ↓ 43 ↓ 47 Changed 18 months ago by
I am not sure about using sagepython23
, aren't we phasing that out to use plain python3
or python
?
comment:43 in reply to: ↑ 42 Changed 18 months ago by
Replying to fbissey:
I am not sure about using
sagepython23
, aren't we phasing that out to use plainpython3
orpython
?
I copied this from numpy's spkginstall. I suppose here should be a ticket that does away with sagepython23 at some point.
comment:44 in reply to: ↑ 41 ; followup: ↓ 45 Changed 18 months ago by
Replying to fbissey:
pythonigraph is on pypi https://pypi.org/project/pythonigraph/ so we should use it as upstream instead of
upstream_url=https://github.com/igraph/pythonigraph/releases/download/VERSION/pythonigraphVERSION.tar.gzgithub generated tarballs sometimes have issues.
this tarball is not githubgenerated, it's a manually uploaded one. cf https://github.com/igraph/igraph/releases/tag/0.8.3
comment:45 in reply to: ↑ 44 Changed 18 months ago by
Replying to dimpase:
Replying to fbissey:
pythonigraph is on pypi https://pypi.org/project/pythonigraph/ so we should use it as upstream instead of
upstream_url=https://github.com/igraph/pythonigraph/releases/download/VERSION/pythonigraphVERSION.tar.gzgithub generated tarballs sometimes have issues.
this tarball is not githubgenerated, it's a manually uploaded one. cf https://github.com/igraph/igraph/releases/tag/0.8.3
that's definitely a good thing. I won't insist on pypi.
comment:46 Changed 18 months ago by
I tried with a homebrew install of igraph and then sage I python_igraph
and it's working well. I don't know for other systems.
comment:47 in reply to: ↑ 42 Changed 18 months ago by
comment:48 Changed 18 months ago by
 Commit changed from 938d7048a34df6a4c22dda3d376cb30b0345e011 to 348569b5d4dd9f62886eab15d2668e08d4ef645a
Branch pushed to git repo; I updated commit sha1. New commits:
348569b  trac #30899: use python3 istead of sagepython23

comment:49 Changed 18 months ago by
build/pkgs/python_igraph/spkginstall.in also has sagepython23
comment:50 Changed 18 months ago by
 Commit changed from 348569b5d4dd9f62886eab15d2668e08d4ef645a to cf66e4c2f73a759db4f7bf0df53f217ca958a87b
Branch pushed to git repo; I updated commit sha1. New commits:
cf66e4c  trac #30899: missing change

comment:51 followup: ↓ 55 Changed 18 months ago by
I don't like these sagepython23 > python3 changes. I don't see why this python3 is guaranteed to be the correct python.
In fact, no package at the moment uses python3
to run setup.py
, while about a dozen
packages use sagepython23
.
I really think until #30731 is done, we should continue using sagepython23
.
Sorry I didn't check earlier.
comment:52 Changed 18 months ago by
I don't know how to remove the 2 lasts commits (I'm still at git beginner level...). Otherwise I can push a revert commit.
comment:53 Changed 18 months ago by
 Commit changed from cf66e4c2f73a759db4f7bf0df53f217ca958a87b to 938d7048a34df6a4c22dda3d376cb30b0345e011
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
comment:54 Changed 18 months ago by
OK, I was able to remove the last 2 commits (and so revert to sagepython23). I had to do a forced push.
comment:55 in reply to: ↑ 51 Changed 18 months ago by
Replying to dimpase:
I don't like these sagepython23 > python3 changes.
We will switch over in #30371  and I agree that it is better for uniformity if we don't do this package by package.
I don't see why this python3 is guaranteed to be the correct python.
It is actually guaranteed by our installation.
 When there is a suitable system python3.x, then Sage creates a venv over it and installs a
python3
symlink in$SAGE_LOCAL/bin
(which is in$PATH
and not shadowed by what is in front of it), sopython3
works.  When there is no suitable system python3.x, then Sage builds one and installs a binary in
$SAGE_LOCAL/bin
, sopython3
also works.
(Side note: After #22731/#30013, the above is still true, but with $SAGE_VENV/bin
instead of $SAGE_LOCAL/bin
.)
comment:56 Changed 18 months ago by
 Description modified (diff)
comment:57 Changed 18 months ago by
 Description modified (diff)
comment:59 Changed 18 months ago by
 Reviewers changed from Dima Pasechnik to Dima Pasechnik, Matthias Koeppe
Looks good. Given that this is an optional package, we can defer the actual portability tests to the automatic run of the GH Actions when it is merged into a beta release.
comment:60 Changed 18 months ago by
 Report Upstream changed from N/A to Reported upstream. No feedback yet.
I've opened https://github.com/igraph/igraph/issues/1547 in regard of XCode 12 issue (solved with CFLAGS here).
comment:61 Changed 18 months ago by
 Branch changed from public/30899_igraph to 938d7048a34df6a4c22dda3d376cb30b0345e011
 Resolution set to fixed
 Status changed from positive_review to closed
comment:62 Changed 18 months ago by
 Commit 938d7048a34df6a4c22dda3d376cb30b0345e011 deleted
Follow up in #27921, running the libxml2 check via a script package
comment:63 Changed 18 months ago by
Volker, the upstream tarball for python_igraph
seems to be missing on the mirrors. Note that make download
has been repaired  so it should be easy to check if anything is missing
source at https://github.com/igraph/igraph/releases/download/0.8.3/igraph0.8.3.tar.gz