Opened 11 years ago

Closed 11 years ago

#12329 closed enhancement (fixed)

Remove unneeded dependencies of the Sage library

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

Status badges

Description (last modified by Jeroen Demeyer)

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 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 (1)

12329_prune_deps.patch (4.4 KB) - added by Jeroen Demeyer 11 years ago.

Download all attachments as: .zip

Change History (14)

comment:1 Changed 11 years ago by Jeroen Demeyer

Authors: Jeroen Demeyer
Description: modified (diff)

comment:2 Changed 11 years ago by Jeroen Demeyer

Description: modified (diff)
Status: newneeds_review
Summary: Removed unneeded dependencies of the Sage libraryRemove unneeded dependencies of the Sage library

comment:3 Changed 11 years ago by Jeroen Demeyer

Description: modified (diff)

comment:4 Changed 11 years ago by R. Andrew Ohana

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 11 years ago by Jeroen Demeyer

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

comment:6 Changed 11 years ago by François Bissey

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 11 years ago by François Bissey

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 11 years ago by Jeroen Demeyer

Status: needs_reviewneeds_work

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

comment:9 Changed 11 years ago by Jeroen Demeyer

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

comment:10 Changed 11 years ago by Jeroen Demeyer

Status: needs_workneeds_review

The new patch works! Needs review.

comment:11 Changed 11 years ago by François Bissey

Reviewers: François Bissey
Status: needs_reviewpositive_review

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

Changed 11 years ago by Jeroen Demeyer

Attachment: 12329_prune_deps.patch added

comment:12 Changed 11 years ago by Jeroen Demeyer

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

comment:13 Changed 11 years ago by Jeroen Demeyer

Merged in: sage-5.0.beta2
Resolution: fixed
Status: positive_reviewclosed
Note: See TracTickets for help on using tickets.