sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.31k stars 449 forks source link

Various packages in Debian stable (bullseye) are unusable for Sage #33909

Open edd8e884-f507-429a-b577-5d554626c0fe opened 2 years ago

edd8e884-f507-429a-b577-5d554626c0fe commented 2 years ago

I am running Debian stable (bullseye), with all packages from SAGE_ROOT/src/doc/en/installation/debian*.txt installed. However, the ./configure complains that some of them should be installed, otherwise the corresponding spkgs will be installed (while they are not required).

33904 is an instance of this error (which i noticed because building polymake eats a lot of ressources).

The logs are attached. The configure.log file contains the output of running the ./configure script.

The 25 packages for which the mechanism does not work are:

Component: packages: standard

Issue created by migration from https://trac.sagemath.org/ticket/33909

edd8e884-f507-429a-b577-5d554626c0fe commented 2 years ago

Attachment: configure.log

edd8e884-f507-429a-b577-5d554626c0fe commented 2 years ago

Attachment: config.log

edd8e884-f507-429a-b577-5d554626c0fe commented 2 years ago
comment:1

Attachment: config.status.gz

Just to be sure, i run the recommended commands :

root@debian:~# apt-get install  libcdd-dev libcdd-tools ecl libec-dev eclib-tools libfplll-dev libgiac-dev xcas lcalc liblfunction-dev liblinbox-dev liblrcalc-dev pari-gp2c libpari-dev pari-doc pari-elldata pari-galdata pari-galpol pari-seadata libqhull-dev singular singular-doc libsingular4-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libcdd-dev is already the newest version (094l-2).
libcdd-tools is already the newest version (094l-2).
ecl is already the newest version (20.4.24+ds-2).
eclib-tools is already the newest version (20190909-3+b1).
libec-dev is already the newest version (20190909-3+b1).
libfplll-dev is already the newest version (5.4.0-2).
libgiac-dev is already the newest version (1.6.0.41+dfsg1-1).
xcas is already the newest version (1.6.0.41+dfsg1-1).
pari-gp2c is already the newest version (0.0.12-2).
lcalc is already the newest version (1.23+dfsg-11+b1).
liblfunction-dev is already the newest version (1.23+dfsg-11+b1).
liblinbox-dev is already the newest version (1.6.3-3).
liblrcalc-dev is already the newest version (1.2-2+b1).
libpari-dev is already the newest version (2.13.1-1).
pari-doc is already the newest version (2.13.1-1).
pari-elldata is already the newest version (0.20190911-1).
pari-galdata is already the newest version (0.20080411-3).
pari-galpol is already the newest version (4.0-1.1).
pari-seadata is already the newest version (0.20090618-2).
libqhull-dev is already the newest version (2020.2-3).
libsingular4-dev is already the newest version (1:4.1.1-p2+ds-4+b2).
singular is already the newest version (1:4.1.1-p2+ds-4+b2).
singular-doc is already the newest version (1:4.1.1-p2+ds-4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

root@debian:~# apt-get install  4ti2 pari-gp2c libigraph-dev texinfo polymake libpolymake-dev default-jdk libavdevice-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
4ti2 is already the newest version (1.6.9+ds-2).
pari-gp2c is already the newest version (0.0.12-2).
libigraph-dev is already the newest version (0.8.5+ds1-1).
default-jdk is already the newest version (2:1.11-72).
libpolymake-dev is already the newest version (4.3-4).
polymake is already the newest version (4.3-4).
texinfo is already the newest version (6.7.0.dfsg.2-6).
libavdevice-dev is already the newest version (7:4.3.4-0+deb11u1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
edd8e884-f507-429a-b577-5d554626c0fe commented 2 years ago

Description changed:

--- 
+++ 
@@ -3,3 +3,32 @@
 #33904 is an instance of this error (which i noticed because building polymake eats a lot of ressources).

 The logs are attached. The `configure.log` file contains the output of running the `./configure` script.
+
+The 25 packages for which the mechanism does not work are:
+
+- 4ti2
+- cddlib
+- coxeter3
+- ecl
+- eclib
+- fplll
+- giac
+- gp2c
+- igraph
+- info
+- lcalc
+- libsemigroups
+- linbox
+- lrcalc
+- pari
+- pari_elldata
+- pari_galdata
+- pari_galpol
+- pari_nftables
+- pari_seadata
+- pari_seadata_small
+- polymake
+- primecount
+- qhull
+- singular
+
mkoeppe commented 2 years ago
comment:4

If you read the log:

Checking whether SageMath should install SPKG pari...
314 checking whether any of gmp readline is installed as or will be installed as SPKG... no
315 checking for gp... /usr/bin/gp
316 checking for gphelp... /usr/bin/gphelp
317 checking whether gphelp has access to the documentation... yes
318 checking is pari_elldata installed? ... yes
319 checking is pari_galdata installed? ... yes
320 checking is pari_galpol installed? ... yes
321 checking is pari_seadata installed? ... yes
322 checking whether rnfdisc bug of pari 2.13.1 is fixed... no; cannot use system pari/GP with known bug
323 configure: Upgrade your system package and reconfigure.
324 configure: Otherwise Sage will build its own pari/GP.
325 configure: no suitable system package found for SPKG pari

What's the problem with this?

mkoeppe commented 2 years ago

Replying to @sagetrac-tmonteil:

the ./configure complains that some of them should be installed

It doesn't complain, it only gives you a hint.

mkoeppe commented 2 years ago

Description changed:

--- 
+++ 
@@ -27,7 +27,7 @@
 - pari_nftables
 - pari_seadata
 - pari_seadata_small
-- polymake
+- #33904: polymake
 - primecount
 - qhull
 - singular
edd8e884-f507-429a-b577-5d554626c0fe commented 2 years ago
comment:8

Replying to @mkoeppe:

Replying to @sagetrac-tmonteil:

the ./configure complains that some of them should be installed

It doesn't complain, it only gives you a hint.

And the hint is wrong.

mkoeppe commented 2 years ago
comment:9

No, it's correct and carefully phrased:

    hint: installing the following system packages, if not
    already present, is recommended and may avoid having to
    build them (though some may have to be built anyway):

What you are observing is why it says "MAY AVOID", not "WILL AVOID".

edd8e884-f507-429a-b577-5d554626c0fe commented 2 years ago
comment:10

OK, i will try to deal with that.

Then, what would be the procedure to decide whether the distro package is broken or the spkg-configure.m4 script misses something (when build/pkgs/spkg/spkg-configure.m4 and build/pkgs/spkg/distros/distro.txt are conflicting) ?

mkoeppe commented 2 years ago
comment:11

Replying to @sagetrac-tmonteil:

[...] when build/pkgs/spkg/spkg-configure.m4 and build/pkgs/spkg/distros/distro.txt are conflicting

The debian.txt files capture many versions of Debian, not just debian-stable - also debian-testing and ubuntu-... and linuxmint-... etc.

If you are testing on debian-stable, it is to be expected that many packages are just outdated and not suitable for our needs.

If you look at the logs for all Debian variants and it turns out that none of the packages work for us, then we may want to remove the debian.txt file.

edd8e884-f507-429a-b577-5d554626c0fe commented 2 years ago
comment:13

There is another related issue: some packages have a distro/debian.txt file and no spkg-configure.m4 file: gap, lie, maxima, rubiks, so that the semantics of those files is unclear to me.

mkoeppe commented 2 years ago
comment:14

Great question.

In part, these files have been added in preparation for spkg-configure.m4 that is in development somewhere. See #27330 for a list of tickets.

sage -info (which also creates the documentation at https://doc.sagemath.org/html/en/reference/spkg/gap.html#equivalent-system-packages) shows these packages and then points out "these system packages will not be used for building Sage". This is an entry point for developers.

Optional packages such as rubiks are also discovered at runtime via Features.

And finally, in our portability CI, we have a configuration called -maximal that installs these system packages despite having no spkg-configure.m4. (If you have Docker installed, you can type tox -e docker-debian-bullseye-maximal to run this.) This is useful for testing that the existence of these system packages does not leak in and break our build.