Opened 18 months ago

Closed 18 months ago

Last modified 18 months ago

#30899 closed enhancement (fixed)

igraph, python-igraph: Update to 0.8.3

Reported by: mkoeppe Owned by:
Priority: major Milestone: sage-9.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:

Status badges

Description (last modified by dcoudert)

(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 mkoeppe

  • Description modified (diff)

comment:3 Changed 18 months ago by dimpase

  • Description modified (diff)

comment:4 Changed 18 months ago by dcoudert

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 dcoudert

  • 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: 2020-11-07               │
│ 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)
<ipython-input-1-73ffca960e68> in <module>
----> 1 import igraph

~/sage/local/lib/python3.9/site-packages/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/site-packages/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/site-packages/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:

d2f206dtrac #30899: update to 0.8.3

comment:6 Changed 18 months ago by fbissey

python-igraph 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).

Last edited 18 months ago by slelievre (previous) (diff)

comment:7 Changed 18 months ago by slelievre

Indeed python-igraph used to vendor texttable but this was changed:

https://github.com/igraph/python-igraph/commit/60194fbb7ff3dbd05c140493e116673834318fc2

Careful, it's texttable, not textable (both exist on PyPI).

https://pypi.org/project/texttable/

comment:8 Changed 18 months ago by dimpase

as far as cairo and pycairo are concerned, we can add them, why not?

comment:9 Changed 18 months ago by fbissey

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 git

  • Commit changed from d2f206d39b35f04b5515c0df029b8f27ad878c22 to 373c82b5023fe610039ba52a746a0461b744569b

Branch pushed to git repo; I updated commit sha1. New commits:

373c82btrac #30899: add texttable

comment:11 Changed 18 months ago by dcoudert

  • Authors set to David Coudert
  • 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...

Last edited 18 months ago by dcoudert (previous) (diff)

comment:12 Changed 18 months ago by mkoeppe

checksums.ini needs upstream_url (see #30895)

spkg-check.in looks incomplete.

The error handling in spkg-install.in can be removed - the function sdh_pip_install already takes care of it

comment:13 Changed 18 months ago by git

  • Commit changed from 373c82b5023fe610039ba52a746a0461b744569b to 2f8d5058f85f1ee7bcc5d0853fee84c0dc7653f5

Branch pushed to git repo; I updated commit sha1. New commits:

2f8d505addded upstream_url's

comment:14 Changed 18 months ago by git

  • Commit changed from 2f8d5058f85f1ee7bcc5d0853fee84c0dc7653f5 to 63d371849e3c0ee8c9f954c676ff59b173ea7d3f

Branch pushed to git repo; I updated commit sha1. New commits:

63d3718remove unneeded error handling

comment:15 Changed 18 months ago by git

  • Commit changed from 63d371849e3c0ee8c9f954c676ff59b173ea7d3f to 9626cf9deb257a5d00015cea7977ddf5a53d7d96

Branch pushed to git repo; I updated commit sha1. New commits:

9626cf9use pkg-config to check for libxml

comment:16 Changed 18 months ago by dcoudert

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 git

  • Commit changed from 9626cf9deb257a5d00015cea7977ddf5a53d7d96 to ccad4b393e049f656dee27ad61353927d8027eb4

Branch pushed to git repo; I updated commit sha1. New commits:

ccad4b3added missing quotes

comment:18 Changed 18 months ago by mkoeppe

Add system package information in distros/ (see https://repology.org/project/igraph/versions) and add spkg-configure.m4

comment:19 Changed 18 months ago by dimpase

  • 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/python-igraph#linking-to-an-existing-igraph-installation

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 mkoeppe

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 follow-up: Changed 18 months ago by dcoudert

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 dimpase

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 spkg-configure for igraph once this is done, but 1st things 1st.

comment:23 Changed 18 months ago by git

  • Commit changed from ccad4b393e049f656dee27ad61353927d8027eb4 to af234304d7fefc57a3cd9e6e197cdcda9975c86f

Branch pushed to git repo; I updated commit sha1. New commits:

af23430build wheel and install

comment:24 Changed 18 months ago by dimpase

igraph does not build on macOS 10.5 with Xcode 12.

[igraph-0.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_la-amd_1.lo `test -f 'AMD/Source/amd_1.c' || echo './'`AMD/Source/amd_1.c
[igraph-0.8.3] In file included from CHOLMOD/Supernodal/cholmod_super_numeric.c:80:
[igraph-0.8.3] CHOLMOD/Supernodal/t_cholmod_super_numeric.c:510:17: error: implicit declaration of function 'dsyrk_' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
[igraph-0.8.3]                 BLAS_dsyrk ("L", "N",
[igraph-0.8.3]                 ^
[igraph-0.8.3] ../src/CHOLMOD/Include/cholmod_blas.h:331:2: note: expanded from macro 'BLAS_dsyrk'
[igraph-0.8.3]         BLAS_DSYRK (uplo, trans, &N, &K, alpha, A, &LDA, beta, C, &LDC) ; \
[igraph-0.8.3]         ^
[igraph-0.8.3] ../src/CHOLMOD/Include/cholmod_blas.h:132:20: note: expanded from macro 'BLAS_DSYRK'
[igraph-0.8.3] #define BLAS_DSYRK igraphdsyrk_
[igraph-0.8.3]                    ^
[igraph-0.8.3] ./igraph_lapack_internal.h:86:29: note: expanded from macro 'igraphdsyrk_'
[igraph-0.8.3]     #define igraphdsyrk_    dsyrk_
[igraph-0.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/spkg-install.in

    a b You need libxml2 to run igraph. On Ubuntu and Debian Linux, installing the build 
    44    exit 1
    55fi
    66
     7export CFLAGS="$CFLAGS -Wno-strict-prototypes -Wno-implicit-function-declaration"
    78cd src
    89sdh_configure --with-external-blas --with-external-lapack --with-external-glpk
    910sdh_make

comment:25 Changed 18 months ago by git

  • Commit changed from af234304d7fefc57a3cd9e6e197cdcda9975c86f to 3ff4fd8ea01b6d3d65f8abb1aa7ac4fcd9275452

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

3ff4fd8build wheel and install

comment:26 Changed 18 months ago by git

  • Commit changed from 3ff4fd8ea01b6d3d65f8abb1aa7ac4fcd9275452 to 7e97772d80db67f9c8fdbf474cdf971392cfdd0a

Branch pushed to git repo; I updated commit sha1. New commits:

7e97772spkg-configure and distros hints for igraph

comment:27 Changed 18 months ago by dimpase

  • Authors changed from David Coudert to David Coudert, Dima Pasechnik
  • Reviewers set to Dima Pasechnik
  • Status changed from needs_info to needs_review

comment:28 follow-up: Changed 18 months ago by mkoeppe

+upstream_url=https://github.com/foutaise/texttable/archive/vVERSION.tar.gz

better to use pypi.io URLs

Last edited 18 months ago by mkoeppe (previous) (diff)

comment:29 in reply to: ↑ 28 Changed 18 months ago by dimpase

Replying to mkoeppe:

+upstream_url=https://github.com/foutaise/texttable/archive/vVERSION.tar.gz

better 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 fbissey

comment:31 Changed 18 months ago by git

  • Commit changed from 7e97772d80db67f9c8fdbf474cdf971392cfdd0a to 59703909d0c9a907cf2a9f355daa5ef31795a2ff

Branch pushed to git repo; I updated commit sha1. New commits:

5970390get texttable tarball from pypi

comment:32 Changed 18 months ago by git

  • Commit changed from 59703909d0c9a907cf2a9f355daa5ef31795a2ff to bb1b5105c0010db4c860c3aae0f750a2fac5b98b

Branch pushed to git repo; I updated commit sha1. New commits:

bb1b510igraph in conda, too

comment:33 Changed 18 months ago by dimpase

  • Cc isuruf added

comment:34 Changed 18 months ago by mkoeppe

  • Status changed from needs_review to needs_work

The distros files are missing the extension ".txt"

comment:35 Changed 18 months ago by git

  • Commit changed from bb1b5105c0010db4c860c3aae0f750a2fac5b98b to 978d9a4695be20a3312ba558bcc07d80ad239df5

Branch pushed to git repo; I updated commit sha1. New commits:

978d9a4trac #30899: add missing .txt extensions

comment:36 follow-up: Changed 18 months ago by dcoudert

I renamed the files.

I have a doubt for gentoo.txt: on page https://repology.org/project/igraph/versions it's written dev-libs/igraph but our file contains only igraph. Should I change to dev-libs/igraph ?

comment:37 in reply to: ↑ 36 Changed 18 months ago by fbissey

Replying to dcoudert:

I renamed the files.

I have a doubt for gentoo.txt: on page https://repology.org/project/igraph/versions it's written dev-libs/igraph but our file contains only igraph. Should I change to dev-libs/igraph ?

igraph would be fine. dev-libs/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 git

  • Commit changed from 978d9a4695be20a3312ba558bcc07d80ad239df5 to 938d7048a34df6a4c22dda3d376cb30b0345e011

Branch pushed to git repo; I updated commit sha1. New commits:

938d704trac #30899: correct gentoo.txt and add freebsd.txt

comment:39 Changed 18 months ago by dcoudert

the convention is dev-libs/igraph. I also added a file for freebsd ports.

comment:40 Changed 18 months ago by dimpase

  • Status changed from needs_work to needs_review

OK, needs final review?

comment:41 follow-up: Changed 18 months ago by fbissey

python-igraph is on pypi https://pypi.org/project/python-igraph/ so we should use it as upstream instead of

upstream_url=https://github.com/igraph/python-igraph/releases/download/VERSION/python-igraph-VERSION.tar.gz

github generated tarballs sometimes have issues.

comment:42 follow-ups: Changed 18 months ago by fbissey

I am not sure about using sage-python23 , aren't we phasing that out to use plain python3 or python?

comment:43 in reply to: ↑ 42 Changed 18 months ago by dimpase

Replying to fbissey:

I am not sure about using sage-python23 , aren't we phasing that out to use plain python3 or python?

I copied this from numpy's spkg-install. I suppose here should be a ticket that does away with sage-python23 at some point.

comment:44 in reply to: ↑ 41 ; follow-up: Changed 18 months ago by dimpase

Replying to fbissey:

python-igraph is on pypi https://pypi.org/project/python-igraph/ so we should use it as upstream instead of

upstream_url=https://github.com/igraph/python-igraph/releases/download/VERSION/python-igraph-VERSION.tar.gz

github generated tarballs sometimes have issues.

this tarball is not github-generated, 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 fbissey

Replying to dimpase:

Replying to fbissey:

python-igraph is on pypi https://pypi.org/project/python-igraph/ so we should use it as upstream instead of

upstream_url=https://github.com/igraph/python-igraph/releases/download/VERSION/python-igraph-VERSION.tar.gz

github generated tarballs sometimes have issues.

this tarball is not github-generated, 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 dcoudert

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 slelievre

Replying to fbissey:

I am not sure about using sage-python23 , aren't we phasing that out to use plain python3 or python?

Yes, see #30731.

comment:48 Changed 18 months ago by git

  • Commit changed from 938d7048a34df6a4c22dda3d376cb30b0345e011 to 348569b5d4dd9f62886eab15d2668e08d4ef645a

Branch pushed to git repo; I updated commit sha1. New commits:

348569btrac #30899: use python3 istead of sage-python23

comment:49 Changed 18 months ago by dimpase

build/pkgs/python_igraph/spkg-install.in also has sage-python23

comment:50 Changed 18 months ago by git

  • Commit changed from 348569b5d4dd9f62886eab15d2668e08d4ef645a to cf66e4c2f73a759db4f7bf0df53f217ca958a87b

Branch pushed to git repo; I updated commit sha1. New commits:

cf66e4ctrac #30899: missing change

comment:51 follow-up: Changed 18 months ago by dimpase

I don't like these sage-python23 -> 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 sage-python23. I really think until #30731 is done, we should continue using sage-python23. Sorry I didn't check earlier.

comment:52 Changed 18 months ago by dcoudert

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 git

  • 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 dcoudert

OK, I was able to remove the last 2 commits (and so revert to sage-python23). I had to do a forced push.

comment:55 in reply to: ↑ 51 Changed 18 months ago by mkoeppe

Replying to dimpase:

I don't like these sage-python23 -> 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), so python3 works.
  • When there is no suitable system python3.x, then Sage builds one and installs a binary in $SAGE_LOCAL/bin, so python3 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 mkoeppe

  • Description modified (diff)

comment:57 Changed 18 months ago by dcoudert

  • Description modified (diff)

comment:58 Changed 18 months ago by dimpase

  • Status changed from needs_review to positive_review

lgtm

comment:59 Changed 18 months ago by mkoeppe

  • 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 dimpase

  • 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 vbraun

  • 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 mkoeppe

  • Commit 938d7048a34df6a4c22dda3d376cb30b0345e011 deleted

Follow up in #27921, running the libxml2 check via a script package

comment:63 Changed 18 months ago by mkoeppe

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

Note: See TracTickets for help on using tickets.