#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.
For use of Python packages: See #29023 Meta-ticket: In a python 3 build, use system Python packages
Already done
The following packages already have spkg-configure.m4 checks that are working on most or all supported platforms:
4ti2 (Add spkg-configure.m4 for 4ti2, remove direct use of SAGE_LOCAL #30887 , optional package)
arb (spkg-configure.m4 for arb #27270 )
boost_cropped/boost (spkg-configure.m4 for boost and boost_cropped #29100 ) -- many systems have boost headers available
brial (spkg-configure.m4 for brial #29369 ) - see also fedora-30-standard: Doctests using system brial crash #29490 - where it was disabled due to crashes on Fedora 30
bzip2 (spkg-configure.m4 for bzip2 #27182 )
cbc (spkg-configure for cbc #28908 )
cddlib (spkg-configure for cddlib #28905 )
cliquer (spkg-configure for cliquer #28885 )
cmake (spkg-configure.m4 for cmake #27487 )
coxeter3 (coxeter3: Add spkg-configure.m4, use coxeter/ prefix for includes, move OptionalExtension options to .pyx file directives #29721 , optional)
curl (Generic mechanism for system package checks at configure time #24919 )
eclib (spkg-configure.m4 for eclib #28333 )
ecl (Support system installations of ECL and fix the kenzo SPKG build #29617 )
ecm (spkg-configure.m4 for ecm #27271 )
fflas-ffpack (Detect and use the system fflas-ffpack #29453 )
flint (spkg-configure.m4 for flint #27264 ) - merged by spkg-configure.m4 for arb #27270
flintqs (spkg-configure.m4 for flintqs #29430 )
fplll (spkg-configure for fplll #29245 )
freetype (spkg-configure.m4 for freetype #27168 )
gc (spkg-configure.m4 for gc #28991 )
gcc (Generic mechanism for system package checks at configure time #24919 )
gf2x (use system's gf2x if available #27238 )
gfan (spkg-configure for gfan #28985 )
gfortran (Generic mechanism for system package checks at configure time #24919 )
giac (spkg-configure.m4 for giac #29541 )
git (Generic mechanism for system package checks at configure time #24919 )
givaro (spkg-configure.m4 for m4ri, m4rie, givaro #28342 )
glpk (spkg-configure.m4 for glpk #28459 )
gmp (spkg-configure.m4 for gmp and mpir #27212 )
gp2c (spkg-configure.m4 for pari #28242 )
gsl (spkg-configure for GSL #28879 )
igraph (igraph, python-igraph: Update to 0.8.3 #30899 , optional package)
iml (spkg-configure.m4 for iml #27272 )
isl (spkg-configure.m4 for isl #27864 )
iconv (spkg-configure.m4 for iconv #27823 )
lcalc (spkg-configure.m4 for lcalc #28224 )
libatomic (spkg-configure.m4 for libatomic #28045 )
libbraiding (spkg-configure.m4 for libbraiding #29458 )
libffi (Package libffi #25900 , Further libffi fixes #27114 )
libgd (spkg-configure.m4 for libgd #27825 )
libhomfly (spkg-configure.m4 for libhomfly #29630 )
libpng (spkg-configure.m4 for libpng #27186 )
linbox (spkg-configure.m4 for linbox #29631 )
lrcalc (spkg-configure.m4 for lrcalc #28231 )
lrslib (spkg-configure.m4, system package info for lrslib #27804 , optional package)
m4ri(e) (spkg-configure.m4 for m4ri, m4rie, givaro #28342 )
maxima (spkg-configure.m4 for maxima #32867 )
mpc (spkg-configure.m4 for mpc #27259 ) - merged by Update configure with checks for mpfr, mpc, and ntl #27822
mpfi (spkg-configure.m4 for mpfi #28295 )
mpfr (spkg-configure.m4 for mpfr #27258 ) - merged by Update configure with checks for mpfr, mpc, and ntl #27822
mpir (spkg-configure.m4 for gmp and mpir #27212 ) - removed in Remove package mpir #32549 , complete mpir deletion #32727
nauty (spkg-configure.m4 for nauty #28958 )
ncurses (spkg-configure.m4 for ncurses and readline #27277 )
ninja-build (spkg-configure.m4 for ninja-build #27801 )
ntl (spkg-configure.m4 for NTL #27265 ) - merged by Update configure with checks for mpfr, mpc, and ntl #27822
openblas (spkg-configure.m4 for $(BLAS) (i.e. atlas and openblas) #27870 )
openssl (Add spkg-configure.m4 for openssl #30557 , {ubuntu-trusty, debian-jessie, linuxmint-17, fedora-{26,27,28}}-standard: system openssl too old for python3 #32580 )
palp (spkg-configure.m4 for palp #29672 )
pari (spkg-configure.m4 for pari #28242 )
pari's packages, apart from pari_jupyter (spkg-configure.m4 for pari #28242 )
patch (Generic mechanism for system package checks at configure time #24919 )
pcre (spkg-configure.m4 for pcre #27284 )
perl_term_readline_gnu (spkg-configure.m4 for perl_term_readline_gnu #27795 )
pkgconf (spkg-configure.m4 for pkgconf #27827 )
planarity (spkg-configure.m4 for planarity #29063 )
polymake (spkg-configure.m4 for polymake #31527 )
ppl (spkg-configure.m4 for ppl #29454 )
primecount (update and promote spkg primecount #25009 )
primesieve (update and promote spkg primecount #25009 )
pynac (spkg-configure.m4 for pynac #29542 )
python3 (spkg-configure.m4 for python3 #27824 ) this one is of course a very special case; see the ticket for details.
qepcad (QEPCAD: get rid of qepcad bits in src/bin/sage-location #21783 )
qhull (build/pkgs/qhull: Update, add spkg-configure.m4 #31161 )
r (spkg-configure for R #28884 ) (alternative view: getting R from the system has been desirable for a long time and will require more than just an spkg-configure.m4; see Allow the use of system's R installation #25503 )
readline (spkg-configure.m4 for ncurses and readline #27277 )
rw (Configure check for system "rw" library #27814 )
singular (spkg-configure.m4 for singular #29024 ; dup: spkg-configure for singular #29515 )
sqlite (spkg-configure.m4 for sqlite #29002 )
suitesparse (spkg-configure for suitesparse #29502 )
symmetrica (spkg-configure.m4 for symmetrica #28208 )
sympow (spkg-configure.m4 for sympow #29673 )
tachyon (spkg-configure for tachyon #28919 )
texlive (texlive: Add spkg-configure.m4 and system package information; remove install script #31529 )
tox (spkg-configure, system package info for tox #30544 )
xz (more system package checks #26286 )
yasm (Generic mechanism for system package checks at configure time #24919 )
zeromq (more system package checks #26286 )
zlib (more system package checks #26286 )
zn_poly (spkg-configure.m4 for zn_poly #29649 )
In Progress
The following packages have in-progress tickets to provide configure-time detection on the system:
Have tickets
The following packages have tickets for their conversions, but don't have working prototypes (i.e. branches) yet:
BLAS (atlas and other non-openblas): 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 spkg-configure.m4 for gmp and mpir #27212 , but perhaps with even more complexity). One can
already use system's openblas, though (spkg-configure.m4 for $(BLAS) (i.e. atlas and openblas) #27870 ), and we
removed ATLAS in Remove ATLAS #30350 .
csdp (spkg-configure and distros/ for csdp #31145 , optional package)
gap (using system GAP is desirable, but non-trivial,
especially now that we need a working libgap) (spkg-configure.m4 for gap #29644 )
jmol (Update jmol to 14.32.35, add spkg-configure for jmol #30316 )
lie (spkg-configure.m4 for lie #32055 , experimental package)
mathjax (System package information and spkg-configure for mathjax #30296 )
perl (Script package with spkg-configure.m4 for perl #31839 , script package)
symengine (spkg-configure for symengine #32421 , optional package)
No ticket yet
Use of system Python packages
This will be be handled by #29023 . Please do not add Python packages here.
The following are exceptions (because it does not run in the same Python as sage):
Testing infrastructure
Meta infrastructure
Documentation
Unfortunately there is still not good documentation for how to implement these configure-time dependency checks.
Bug-fixing
A number of bugs/deficiencies has been uncovered in spkg-configure.m4 files and related configuration, and a number of tickets opened/closed
CC: @sagetrac-tmonteil @orlitzky @timokau @kiwifb @isuruf @mezzarobba @tobihan @tobiasdiez
Component: build: configure
Keywords: sd111
Issue created by migration from https://trac.sagemath.org/ticket/27330
#24919 implemented a mechanism for checking for checking for sagelib's direct and indirect dependencies at the time of running the main
./configurescript. 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.
For use of Python packages: See #29023 Meta-ticket: In a python 3 build, use system Python packages
Already done
The following packages already have
spkg-configure.m4checks that are working on most or all supported platforms:spkg-configure.m4; see Allow the use of system's R installation #25503)In Progress
The following packages have in-progress tickets to provide configure-time detection on the system:
Have tickets
The following packages have tickets for their conversions, but don't have working prototypes (i.e. branches) yet:
finding a usable BLAS should be one of the highest priorities;
it faces many of the same issues we faced with MPIR/GMP
in spkg-configure.m4 for gmp and mpir #27212, but perhaps with even more complexity). One can
already use system's openblas, though (spkg-configure.m4 for $(BLAS) (i.e. atlas and openblas) #27870), and we
removed ATLAS in Remove ATLAS #30350.
especially now that we need a working libgap) (spkg-configure.m4 for gap #29644)
No ticket yet
Use of system Python packages
This will be be handled by #29023. Please do not add Python packages here.
The following are exceptions (because it does not run in the same Python as sage):
Testing infrastructure
Meta infrastructure
build/pkgs/*/repology.txtper spkgDocumentation
Unfortunately there is still not good documentation for how to implement these configure-time dependency checks.
Bug-fixing
A number of bugs/deficiencies has been uncovered in spkg-configure.m4 files and related configuration, and a number of tickets opened/closed
CC: @sagetrac-tmonteil @orlitzky @timokau @kiwifb @isuruf @mezzarobba @tobihan @tobiasdiez
Component: build: configure
Keywords: sd111
Issue created by migration from https://trac.sagemath.org/ticket/27330