Ticket #12329 (closed enhancement: fixed)

Opened 16 months ago

Last modified 16 months ago

Remove unneeded dependencies of the Sage library

Reported by: jdemeyer Owned by: GeorgSWeber
Priority: minor Milestone: sage-5.0
Component: build Keywords:
Cc: Work issues:
Report Upstream: N/A Reviewers: François Bissey
Authors: Jeroen Demeyer Merged in: sage-5.0.beta2
Dependencies: Stopgaps:

Description (last modified by jdemeyer) (diff)

According to spkg/standard/deps, the sage library depends on:

$(INST)/$(SAGE): $(BASE) \
         $(INST)/$(SAGE_SCRIPTS) \
         $(INST)/$(ATLAS) \
         $(INST)/$(CEPHES) \
         $(INST)/$(CLIQUER) \
         $(INST)/$(CONWAY) \
         $(INST)/$(CYTHON) \
         $(INST)/$(DOCUTILS) \
         $(INST)/$(ECL) \
         $(INST)/$(ECLIB) \
         $(INST)/$(ECM) \
         $(INST)/$(ELLIPTIC_CURVES) \
         $(INST)/$(EXTCODE) \
         $(INST)/$(FLINT) \
         $(INST)/$(FPLLL) \
         $(INST)/$(GDMODULE) \
         $(INST)/$(GRAPHS) \
         $(INST)/$(GIVARO) \
         $(INST)/$(GLPK) \
         $(INST)/$(GSL) \
         $(INST)/$(IML) \
         $(INST)/$(IPYTHON) \
         $(INST)/$(LCALC) \
         $(INST)/$(LIBM4RI) \
         $(INST)/$(LIBM4RIE) \
         $(INST)/$(LINBOX) \
         $(INST)/$(MATPLOTLIB) \
         $(INST)/$(MERCURIAL) \
         $(INST)/$(MPFI) \
         $(INST)/$(MPFR) \
         $(INST)/$(MPIR) \
         $(INST)/$(MPMATH) \
         $(INST)/$(NETWORKX) \
         $(INST)/$(NTL) \
         $(INST)/$(NUMPY) \
         $(INST)/$(PARI) \
         $(INST)/$(PEXPECT) \
         $(INST)/$(POLYBORI) \
         $(INST)/$(PPL) \
         $(INST)/$(PYCRYPTO) \
         $(INST)/$(PYNAC) \
         $(INST)/$(PYTHON) \
         $(INST)/$(R) \
         $(INST)/$(RATPOINTS) \
         $(INST)/$(RUBIKS) \
         $(INST)/$(SAGENB) \
         $(INST)/$(SCONS) \
         $(INST)/$(SETUPTOOLS) \
         $(INST)/$(SINGULAR) \
         $(INST)/$(SYMMETRICA) \
         $(INST)/$(SYMPY) \
         $(INST)/$(ZNPOLY)

However, only components which are needed at build-time should be listed here.

Apply 12329_prune_deps.patch Download to the sage root repository.

With this patch, building just the Sage library using

cd spkg
./install installed/sage-4.8   # put the correct version here

works fine, also using a parallel build.

Just for information: using "make -j", this is the critical path to build the Sage library (every packge in this list depends on the one just above it):

(base)
patch
iconv
libgpg_error
libgcrypt
opencdk
gnutls
python
fortran
lapack
atlas
linbox
sage

Attachments

12329_prune_deps.patch Download (4.4 KB) - added by jdemeyer 16 months ago.

Change History

comment:1 Changed 16 months ago by jdemeyer

  • Description modified (diff)
  • Authors set to Jeroen Demeyer

comment:2 Changed 16 months ago by jdemeyer

  • Status changed from new to needs_review
  • Description modified (diff)
  • Summary changed from Removed unneeded dependencies of the Sage library to Remove unneeded dependencies of the Sage library

comment:3 Changed 16 months ago by jdemeyer

  • Description modified (diff)

comment:4 Changed 16 months ago by rohana

I'm fairly certain the sage library does not need $(INST)/$(ELLIPTIC_CURVES) either (all that package does is install a couple of databases to SAGE_DATA).

comment:5 Changed 16 months ago by jdemeyer

You are right, I confused with ECLIB (which certainly is needed). New patch, needs review.

comment:6 Changed 16 months ago by fbissey

Coming from sage-on-gentoo, I am not sure at all that GRAPHS needs to be there. We very much build sage without needing mercurial but we do things a bit differently so that one needs caution. I don't think mpmath is needed to build either if it is we have a bug in sage-on-gentoo.

comment:7 Changed 16 months ago by fbissey

While gdmodule is not needed gd actually is and so is png.

    Extension('sage.matrix.matrix_mod2_dense',
              sources = ['sage/matrix/matrix_mod2_dense.pyx'],
              libraries = ['gmp','m4ri', 'gd', 'png12', 'z'],
              depends = [SAGE_ROOT + "/local/include/png.h", SAGE_ROOT + "/local/include/m4ri/m4ri.h"]),

for example from module_list.py. Of course these two are needed for polybori so you are probably covered. readline is also there but other dependencies may include it. I cannot check right now.

comment:8 Changed 16 months ago by jdemeyer

  • Status changed from needs_review to needs_work

Okay, added GD, LIBPNG, READLINE. Removed GRAPHS, MPMATH. Testing now.

comment:9 Changed 16 months ago by jdemeyer

Mercurial is needed in the spkg-install (at least for upgrades), so we cannot remove that.

comment:10 Changed 16 months ago by jdemeyer

  • Status changed from needs_work to needs_review

The new patch works! Needs review.

comment:11 Changed 16 months ago by fbissey

  • Status changed from needs_review to positive_review
  • Reviewers set to François Bissey

Looks good to me, I fully agree with that list and cannot see it failing.

Changed 16 months ago by jdemeyer

comment:12 Changed 16 months ago by jdemeyer

I replaced the "sageruntime" target by a "$(SAGERUNTIME)" variable, similar to the "$(BASE)" variable.

comment:13 Changed 16 months ago by jdemeyer

  • Status changed from positive_review to closed
  • Resolution set to fixed
  • Merged in set to sage-5.0.beta2
Note: See TracTickets for help on using tickets.