Opened 3 years ago

Last modified 4 months ago

#27330 new task

Try to use as many system packages as possible — at Initial Version

Reported by: embray Owned by:
Priority: major Milestone: sage-9.7
Component: build: configure Keywords: spkg-configure, sd111
Cc: tmonteil, mjo, gh-timokau, fbissey, isuruf, mmezzarobba, thansen, gh-tobiasdiez Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges


#24919 implemented a mechanism for checking for checking for sagelib's direct and indirect dependencies at the time of running the main ./configure script. This was already done in an ad-hoc manner for a handful of packages (e.g. gcc, git, yasm, curl), but we wanted to be able to do the same for other packages, especially those that are common on Linux-like systems.

This has now been implemented for many other packages, or is in the process of being implemented. Those packages are listed below. However, there are many others yet to be done, and this ticket will attempt to list them in some rough order of priority. Unfortunately there is still not good documentation for how to implement these configure-time dependency checks. The documentation question is tracked at #26668.

Already Done

The following packages already have spkg-configure.m4 checks that are working on most or all supported platforms:

In Progress

The following packages have in-progress tickets to provide configure-time detection on the system:

Not Started

Have Tickets

The following packages have tickets for their conversions, but don't have working prototypes (i.e. branches) yet, although Dima has listed some sample config scripts for some of them:

Don't Have Tickets

These packages are direct build dependencies of sagelib, and should thus take priority (since if these can be found on the system then one can presume that so too can their dependencies). I have listed these roughly in order of the number of other dependent SPKGs these have. Packages with more dependents should generally take higher priority as well:

  • python2/python3: this one is of course a very special case; while it should be possible/desirable to use a system python, any additional Python packages should optionally be installable into a virtualenv instead of the system site-pacakges, including sagelib itself unless the system happens to meet all of sagelib's Python dependencies already. Listing some relevant Python packages below:
    • cysignals
    • cython
    • ipython
    • jinja2
    • jupyter_core
    • numpy
    • pip
    • setuptools
    • six
  • BLAS (openblas / atlas / etc): resolving how to handle finding a usable BLAS should be one of the highest priorities; it faces many of the same issues we faced with MPIR/GMP in #27212, but perhaps with even more complexity)
  • pari + cypari (these two are deeply intwined)
  • singular
  • gsl
  • m4ri + m4rie
  • glpk
  • gap (using the system GAP is obviously desirable, but non-trivial, esp. now that we need a working libgap)
  • zn_poly
  • pkgconfig
  • givaro
  • ecl
  • iml
  • symmetrica
  • rw
  • ppl
  • planarity
  • lrcalc
  • linbox
  • libhomfly
  • libbraiding
  • lcalc
  • ecm
  • eclib
  • brial

Other high priority packages:

  • r (getting R from the system has been desirable for a long time and will require more than just an spkg-configure.m4; see #25503)
  • iconv (common system package)
  • boost_cropped / boost (many systems should already have boost headers available)
  • maxima

Change History (0)

Note: See TracTickets for help on using tickets.