[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Sage 5.0 in debian : an incomplete (but beautiful?) overview



Hi,

I would like to see sage (http://www.sagemath) in debian ; which is a
nice but difficult goal. Some on that list might not know much about
it, so I'll start with generalities to get a clear big picture.

So let me remind that sage is both :
- a very useful mathematical software, which I would like to see in
  debian ;

- a source distribution of said software, composed of about a hundred
  of 'spkg' (sage source package), which compiles everything, even if
  it's already on the system (it starts with bzip2!). Of course we
  don't want that in debian.

That means getting sage-the-sofware in debian falls quite naturally in
a two-stage work:

(1) make sure the spkg files which contain software from an external
upstream (wrt to sage) are in debian (about 90% of all spkg), with
correct versions ;

(2) extract the remaining spkg which are sage-native and package them
for debian.



Of course, those two goals will make four hurdles :

(1) get the external packages in debian ;

(2) get the right versions in debian ;

(3) extract the native packages ;

(4) discover all cases where the external packages have in fact a patch
which is needed for sage to run.



I wanted to concentrate on the very first hurdle, so I set out with a
bunch of scripts for the initial nurturing then elbow grease for the
final touch, and you'll find the result attached to this mail : a big
dot file, describing the dependencies of spkg within sage version 5.0,
where I color-coded the status (use 'dot -Tpng
sage-5.0.deps.dot > sage-5.0.deps.png' to get a nice graph, but
notice the dot file has comments in front of some spkg which give
information about the reason for the colour) :

- in green, things which are in debian (no version check!);

- in yellow, things which are not really packages (BASE and PREREQ) and
  shouldn't matter;

- in blue, things which I work on (PALP and ECLIB);

- in red, things which are either not in debian, or known bad in debian.


I would like to hear as many "But I work on $(this), it's almost ready!"
as possible in answer to that mail. "Please help on $(this)!" is ok too,
I guess ;-)

Snark on #sage-science
digraph G {
  PREREQ [color="yellow"]; /* checks compilers, gmake, tar... */
  BASE [color="yellow"]; /* it's BZIP2 and PREREQ */
  BZIP2 [color="green"];
  SYMMETRICA [color="green"];
  SAGE [color="red"];
  ELLIPTIC_CURVES [color="red"];
  GD [color="green"];
  NETWORKX [color="green"];
  CYTHON [color="green"];
  ICONV [color="green"]; /* it's in the libc! */
  LAPACK [color="green"];
  LIBGPG_ERROR [color="green"];
  IML [color="green"];
  FLINTQS [color="red"];
  ATLAS [color="green"];
  SYMPY [color="green"];
  FREETYPE [color="green"];
  MPC [color="green"];
  PYTHON [color="green"];
  SCIPY [color="green"];
  FLINT [color="red"];
  GNUTLS [color="green"];
  GIVARO [color="green"];
  MERCURIAL [color="green"];
  PATCH [color="green"];
  MPMATH [color="green"];
  PYNAC [color="red"];
  TERMCAP [color="green"]; /* unneeded with linux (what about the hurd and BSD ports?) */
  M4RI [color="red"];
  SAGENB [color="red"];
  PALP [color="blue"]; /* Snark : waiting for upstream feedback on some renaming */
  SYMPOW [color="green"];
  M4RIE [color="red"];
  GENUS2REDUCTION [color="green"];
  POLYTOPES_DB [color="red"];
  DOCUTILS [color="green"];
  R [color="green"];
  ECLIB [color="blue"]; /* Snark : http://mentors.debian.net/package/eclib */
  LIBPNG [color="green"];
  BOOST [color="red"]; /* it's very unclear what the sage people mean by boost */
  CLIQUER [color="green"];
  ECM [color="green"];
  ECL [color="green"];
  CVXOPT [color="green"];
  MATPLOTLIB [color="green"];
  NTL [color="green"];
  LCALC [color="red"]; /* debian doesn't have it with the headers */
  IPYTHON [color="green"];
  SAGETEX [color="red"];
  LIBGCRYPT [color="green"];
  LIBFPLLL [color="green"];
  CONWAY_POLYNOMIALS [color="red"];
  POLYBORI [color="red"]; /* too ancient in debian http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=672732 */
  TACHYON [color="red"];
  PPL [color="green"];
  LINBOX [color="red"]; /* current debian misses NonZeroRandIter in class LinBox::Modular<float>, and it has problems with C++11 */
  PYGMENTS [color="green"];
  ZODB3 [color="green"];
  PEXPECT [color="green"];
  SAGE_SCRIPTS [color="red"];
  TWISTED [color="green"];
  CDDLIB [color="green"];
  NUMPY [color="green"];
  SQLALCHEMY [color="green"];
  GDMODULE [color="green"];
  PARI [color="green"];
  GAP [color="green"];
  MPFI [color="green"];
  ZLIB [color="green"];
  PYTHON_GNUTLS [color="green"];
  SETUPTOOLS [color="green"];
  SQLITE [color="green"];
  PIL [color="green"];
  BLAS [color="green"];
  MPIR [color="red"];
  GCC [color="green"];
  RUBIKS [color="red"];
  SCONS [color="green"];
  CEPHES [color="red"];
  ZN_POLY [color="red"];
  OPENCDK [color="red"];
  SINGULAR [color="red"];
  BOEHM_GC [color="green"];
  GFAN [color="green"];
  READLINE [color="green"];
  GLPK [color="green"];
  RATPOINTS [color="red"];
  SPHINX [color="green"];
  PYCRYPTO [color="green"];
  EXTCODE [color="red"];
  GRAPHS [color="red"];
  JINJA2 [color="green"];
  MAXIMA [color="green"];
  GSL [color="green"];
  MPFR [color="green"];

  BASE -> BZIP2;
  BASE -> PREREQ;
  BZIP2 -> PREREQ;
  ATLAS -> BASE;
  ATLAS -> LAPACK;
  ATLAS -> PYTHON;
  ATLAS -> PATCH;
  BOEHM_GC -> BASE;
  BOEHM_GC -> PATCH;
  BOOST -> BASE;
  BOOST -> PATCH;
  CLIQUER -> BASE;
  CLIQUER -> PATCH;
  TERMCAP -> BASE;
  TERMCAP -> PATCH;
  READLINE -> BASE;
  READLINE -> PATCH;
  READLINE -> TERMCAP;
  ICONV -> BASE;
  ICONV -> PATCH;
  DOCUTILS -> BASE;
  DOCUTILS -> PYTHON;
  DOCUTILS -> PATCH;
  ELLIPTIC_CURVES -> BASE;
  ELLIPTIC_CURVES -> PATCH;
  ELLIPTIC_CURVES -> PYTHON;
  ELLIPTIC_CURVES -> SQLITE;
  CONWAY_POLYNOMIALS -> BASE;
  CONWAY_POLYNOMIALS -> PATCH;
  GRAPHS -> BASE;
  GRAPHS -> PATCH;
  GLPK -> BASE;
  GLPK -> MPIR;
  GLPK -> ZLIB;
  GLPK -> PATCH;
  PYTHON -> BASE;
  PYTHON -> ZLIB;
  PYTHON -> READLINE;
  PYTHON -> SQLITE;
  PYTHON -> GNUTLS;
  PYTHON -> LIBPNG;
  PYTHON -> PATCH;
  PATCH -> BASE;
  MPIR -> BASE;
  MPIR -> ICONV;
  MPIR -> PATCH;
  GSL -> BASE;
  GSL -> ATLAS;
  GSL -> PATCH;
  NTL -> BASE;
  NTL -> MPIR;
  NTL -> PATCH;
  LIBFPLLL -> BASE;
  LIBFPLLL -> MPIR;
  LIBFPLLL -> MPFR;
  LIBFPLLL -> PATCH;
  PARI -> BASE;
  PARI -> READLINE;
  PARI -> MPIR;
  PARI -> PATCH;
  POLYBORI -> BASE;
  POLYBORI -> PYTHON;
  POLYBORI -> SCONS;
  POLYBORI -> BOOST;
  POLYBORI -> M4RI;
  POLYBORI -> GD;
  POLYBORI -> PATCH;
  POLYTOPES_DB -> BASE;
  POLYTOPES_DB -> PATCH;
  PPL -> BASE;
  PPL -> MPIR;
  MPC -> BASE;
  MPC -> MPIR;
  MPC -> MPFR;
  MPC -> PATCH;
  MPFR -> BASE;
  MPFR -> MPIR;
  MPFR -> PATCH;
  MPFI -> BASE;
  MPFI -> MPIR;
  MPFI -> MPFR;
  MPFI -> PATCH;
  GIVARO -> BASE;
  GIVARO -> MPIR;
  GIVARO -> PATCH;
  LINBOX -> BASE;
  LINBOX -> MPIR;
  LINBOX -> NTL;
  LINBOX -> GIVARO;
  LINBOX -> GSL;
  LINBOX -> ATLAS;
  LINBOX -> PATCH;
  IML -> BASE;
  IML -> MPIR;
  IML -> GSL;
  IML -> PATCH;
  ECLIB -> BASE;
  ECLIB -> MPIR;
  ECLIB -> PARI;
  ECLIB -> NTL;
  ECLIB -> PATCH;
  GENUS2REDUCTION -> BASE;
  GENUS2REDUCTION -> PARI;
  GENUS2REDUCTION -> PATCH;
  PALP -> BASE;
  PALP -> PATCH;
  LCALC -> BASE;
  LCALC -> PARI;
  LCALC -> MPFR;
  LCALC -> PATCH;
  PYNAC -> BASE;
  PYNAC -> PYTHON;
  PYNAC -> PATCH;
  SYMPOW -> BASE;
  SYMPOW -> PATCH;
  SYMMETRICA -> BASE;
  SYMMETRICA -> PATCH;
  GAP -> BASE;
  GAP -> READLINE;
  GAP -> SAGE;
  GAP -> PATCH;
  IPYTHON -> BASE;
  IPYTHON -> PYTHON;
  IPYTHON -> PATCH;
  PEXPECT -> BASE;
  PEXPECT -> PYTHON;
  PEXPECT -> PATCH;
  GD -> BASE;
  GD -> LIBPNG;
  GD -> FREETYPE;
  GD -> ICONV;
  GD -> PATCH;
  GDMODULE -> BASE;
  GDMODULE -> PYTHON;
  GDMODULE -> GD;
  GDMODULE -> ICONV;
  GDMODULE -> PATCH;
  OPENCDK -> BASE;
  OPENCDK -> ZLIB;
  OPENCDK -> LIBGCRYPT;
  OPENCDK -> PATCH;
  LIBGPG_ERROR -> BASE;
  LIBGPG_ERROR -> ICONV;
  LIBGPG_ERROR -> PATCH;
  LIBGCRYPT -> BASE;
  LIBGCRYPT -> LIBGPG_ERROR;
  LIBGCRYPT -> PATCH;
  GNUTLS -> BASE;
  GNUTLS -> ZLIB;
  GNUTLS -> OPENCDK;
  GNUTLS -> LIBGCRYPT;
  GNUTLS -> LIBGPG_ERROR;
  GNUTLS -> PATCH;
  PYTHON_GNUTLS -> BASE;
  PYTHON_GNUTLS -> GNUTLS;
  PYTHON_GNUTLS -> PYTHON;
  PYTHON_GNUTLS -> PATCH;
  SCONS -> BASE;
  SCONS -> PYTHON;
  SCONS -> PATCH;
  RUBIKS -> BASE;
  RUBIKS -> PATCH;
  SQLITE -> BASE;
  SQLITE -> READLINE;
  SQLITE -> PATCH;
  MERCURIAL -> BASE;
  MERCURIAL -> PYTHON;
  MERCURIAL -> PATCH;
  SAGETEX -> BASE;
  SAGETEX -> PYTHON;
  SAGETEX -> PATCH;
  SAGETEX -> SAGE_SCRIPTS;
  SAGETEX -> SAGE;
  SAGETEX -> SAGENB;
  SAGETEX -> IPYTHON;
  SAGETEX -> GAP;
  SAGETEX -> MAXIMA;
  SAGETEX -> SCIPY;
  SAGETEX -> MATPLOTLIB;
  SAGETEX -> PIL;
  SAGETEX -> TACHYON;
  SETUPTOOLS -> BASE;
  SETUPTOOLS -> PYTHON;
  SETUPTOOLS -> PATCH;
  SINGULAR -> BASE;
  SINGULAR -> MPIR;
  SINGULAR -> NTL;
  SINGULAR -> READLINE;
  SINGULAR -> MPFR;
  SINGULAR -> PATCH;
  PYCRYPTO -> BASE;
  PYCRYPTO -> PYTHON;
  PYCRYPTO -> PATCH;
  NETWORKX -> BASE;
  NETWORKX -> PYTHON;
  NETWORKX -> PATCH;
  MPMATH -> BASE;
  MPMATH -> PYTHON;
  MPMATH -> PATCH;
  ZLIB -> BASE;
  ZLIB -> PATCH;
  FREETYPE -> BASE;
  FREETYPE -> PATCH;
  LIBPNG -> BASE;
  LIBPNG -> ZLIB;
  LIBPNG -> PATCH;
  MATPLOTLIB -> BASE;
  MATPLOTLIB -> PYTHON;
  MATPLOTLIB -> NUMPY;
  MATPLOTLIB -> FREETYPE;
  MATPLOTLIB -> LIBPNG;
  MATPLOTLIB -> GDMODULE;
  MATPLOTLIB -> PATCH;
  CDDLIB -> BASE;
  CDDLIB -> MPIR;
  CDDLIB -> PATCH;
  GFAN -> BASE;
  GFAN -> MPIR;
  GFAN -> CDDLIB;
  GFAN -> PATCH;
  TACHYON -> BASE;
  TACHYON -> LIBPNG;
  TACHYON -> PATCH;
  ECM -> BASE;
  ECM -> MPIR;
  ECM -> PATCH;
  RATPOINTS -> BASE;
  RATPOINTS -> MPIR;
  RATPOINTS -> PATCH;
  ECL -> BASE;
  ECL -> MPIR;
  ECL -> READLINE;
  ECL -> BOEHM_GC;
  ECL -> PATCH;
  MAXIMA -> BASE;
  MAXIMA -> ECL;
  MAXIMA -> PATCH;
  R -> BASE;
  R -> PYTHON;
  R -> ATLAS;
  R -> ICONV;
  R -> PATCH;
  SYMPY -> BASE;
  SYMPY -> PYTHON;
  SYMPY -> PATCH;
  CYTHON -> BASE;
  CYTHON -> PYTHON;
  CYTHON -> PATCH;
  FLINTQS -> BASE;
  FLINTQS -> MPIR;
  FLINTQS -> PATCH;
  FLINT -> BASE;
  FLINT -> MPIR;
  FLINT -> NTL;
  FLINT -> PATCH;
  EXTCODE -> BASE;
  EXTCODE -> MERCURIAL;
  M4RI -> BASE;
  M4RI -> PATCH;
  M4RIE -> BASE;
  M4RIE -> PATCH;
  M4RIE -> M4RI;
  M4RIE -> GIVARO;
  M4RIE -> NTL;
  ZN_POLY -> BASE;
  ZN_POLY -> MPIR;
  ZN_POLY -> PYTHON;
  ZN_POLY -> PATCH;
  SAGENB -> BASE;
  SAGENB -> SQLALCHEMY;
  SAGENB -> PATCH;
  SQLALCHEMY -> BASE;
  SQLALCHEMY -> SPHINX;
  SQLALCHEMY -> PATCH;
  SPHINX -> BASE;
  SPHINX -> JINJA2;
  SPHINX -> PATCH;
  JINJA2 -> BASE;
  JINJA2 -> PYGMENTS;
  JINJA2 -> PATCH;
  PYGMENTS -> BASE;
  PYGMENTS -> ZODB3;
  PYGMENTS -> PATCH;
  ZODB3 -> BASE;
  ZODB3 -> TWISTED;
  ZODB3 -> PATCH;
  TWISTED -> BASE;
  TWISTED -> PYTHON;
  TWISTED -> PYTHON_GNUTLS;
  TWISTED -> PEXPECT;
  TWISTED -> DOCUTILS;
  TWISTED -> SETUPTOOLS;
  TWISTED -> PATCH;
  SAGE -> BASE;
  SAGE -> ATLAS;
  SAGE -> CEPHES;
  SAGE -> CLIQUER;
  SAGE -> CYTHON;
  SAGE -> ECL;
  SAGE -> ECLIB;
  SAGE -> ECM;
  SAGE -> FLINT;
  SAGE -> LIBFPLLL;
  SAGE -> GD;
  SAGE -> GIVARO;
  SAGE -> GLPK;
  SAGE -> GSL;
  SAGE -> IML;
  SAGE -> JINJA2;
  SAGE -> LCALC;
  SAGE -> M4RI;
  SAGE -> M4RIE;
  SAGE -> LIBPNG;
  SAGE -> LINBOX;
  SAGE -> MERCURIAL;
  SAGE -> MPC;
  SAGE -> MPFI;
  SAGE -> MPFR;
  SAGE -> MPIR;
  SAGE -> NTL;
  SAGE -> NUMPY;
  SAGE -> PARI;
  SAGE -> POLYBORI;
  SAGE -> PPL;
  SAGE -> PYNAC;
  SAGE -> PYTHON;
  SAGE -> RATPOINTS;
  SAGE -> READLINE;
  SAGE -> SAGE_SCRIPTS;
  SAGE -> SCONS;
  SAGE -> SINGULAR;
  SAGE -> SYMMETRICA;
  SAGE -> ZN_POLY;
  SAGE_SCRIPTS -> BASE;
  GCC -> BASE;
  GCC -> MPIR;
  GCC -> MPFR;
  GCC -> MPC;
  GCC -> ZLIB;
  GCC -> PATCH;
  PIL -> BASE;
  PIL -> PYTHON;
  PIL -> PATCH;
  LAPACK -> BASE;
  LAPACK -> PATCH;
  BLAS -> BASE;
  BLAS -> PATCH;
  NUMPY -> BASE;
  NUMPY -> PYTHON;
  NUMPY -> LAPACK;
  NUMPY -> BLAS;
  NUMPY -> ATLAS;
  NUMPY -> PATCH;
  SCIPY -> BASE;
  SCIPY -> LAPACK;
  SCIPY -> BLAS;
  SCIPY -> NUMPY;
  SCIPY -> PATCH;
  CVXOPT -> BASE;
  CVXOPT -> LAPACK;
  CVXOPT -> BLAS;
  CVXOPT -> NUMPY;
  CVXOPT -> ATLAS;
  CVXOPT -> CEPHES;
  CVXOPT -> PATCH;
  CVXOPT -> GSL;
  CVXOPT -> GLPK;
  CVXOPT -> MATPLOTLIB;
  CEPHES -> BASE;
  CEPHES -> PATCH;
}


Reply to: