Sage no longer installs on Debian testing after make distclean

66 views
Skip to first unread message

Emmanuel Charpentier

unread,
Dec 18, 2021, 7:20:28 AM12/18/21
to sage-r...@googlegroups.com
On Debian testing running on core i7 + 16 GB RAM, an attempt at upgrading Sage 9.5.beta7 compiled from a git tree  to 9.5.beta8 initially succeeded ; however, after a routine upgrade of Testing, I saw Sage crashing at startup. An attempt to rebuild the Sage library failed, and led me to restort to "make distclean && make". This failed totally :see this report on sage-support.

Attached :
the initial crash report after Debian upgrade ;
the installation log after make-distclean ;
the compilation log of linbox, pointed to by the error messagesof install.log.

I'm somewhat stuck...
--
Emmanuel Charpentier

Sage_crash_report.txt
install.log
linbox-1.6.3.p1.log

Jonathan Kliem

unread,
Dec 18, 2021, 7:27:00 AM12/18/21
to sage-r...@googlegroups.com

I had this happen before. It's a bug a failed to report, but I suppose with an easy fix (at least it was easy for me). I'm not exactly sure how I fixed it. Something appears to be broken with the build chain.

Can you touch `src/sage/libs/flint/*` and recompile this part and see if this fixes your issue?

I had this problem when working on https://trac.sagemath.org/ticket/32211. And I believe I fixed it by touching the correct files indicated at startup and running `sage -b`.

Jonathan

--
You received this message because you are subscribed to the Google Groups "sage-release" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-release...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-release/aa10b1b927484eb0f369f722f9d0ca84dc1592f0.camel%40free.fr.

Emmanuel Charpentier

unread,
Dec 18, 2021, 9:11:58 AM12/18/21
to sage-release

No such bloody luck. From the linbox log :

libtool: compile:  g++ -std=gnu++11 -DHAVE_CONFIG_H -I. -I../.. -I../.. -fopenmp -fabi-version=6 -O2 -Wall -g -DNDEBUG -U_LB_DEBUG -DDISABLE_COMMENTATOR -g -O2 -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mfma -c diophantine-solver.C  -fPIC -DPIC -o .libs/diophantine-solver.o
In file included from ../../linbox/solutions/methods.h:25,
                 from ../../linbox/algorithms/rational-solver.h:41,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
../../linbox/field/field-traits.h:88:12: error: redefinition of 'struct LinBox::ClassifyRing<Givaro::ZRing<Givaro::Integer> >'
   88 |     struct ClassifyRing<Givaro::IntegerDom> {
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../linbox/field/field-traits.h:84:12: note: previous definition of 'struct LinBox::ClassifyRing<Givaro::ZRing<Givaro::Integer> >'
   84 |     struct ClassifyRing<Givaro::ZRing<Givaro::Integer>> {
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../linbox/matrix/densematrix/blas-matrix.h:43,
                 from ../../linbox/matrix/dense-matrix.h:79,
                 from ../../linbox/solutions/methods.h:26,
                 from ../../linbox/algorithms/rational-solver.h:41,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
../../linbox/field/hom.h:274:42: error: invalid use of incomplete type 'LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::Source' {aka 'class Givaro::QField<Givaro::Rational>'}
  274 |                 typedef typename Source::Element SrcElt;
      |                                          ^~~~~~~
In file included from ../../linbox/field/field-traits.h:28,
                 from ../../linbox/solutions/methods.h:25,
                 from ../../linbox/algorithms/rational-solver.h:41,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
/usr/include/givaro/givrational.h:49:11: note: declaration of 'LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::Source' {aka 'class Givaro::QField<Givaro::Rational>'}
   49 |     class QField;
      |           ^~~~~~
In file included from ../../linbox/matrix/densematrix/blas-matrix.h:43,
                 from ../../linbox/matrix/dense-matrix.h:79,
                 from ../../linbox/solutions/methods.h:26,
                 from ../../linbox/algorithms/rational-solver.h:41,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
../../linbox/field/hom.h:305:24: error: field '_source' has incomplete type 'LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::Source' {aka 'Givaro::QField<Givaro::Rational>'}
  305 |                 Source _source;
      |                        ^~~~~~~
In file included from ../../linbox/field/field-traits.h:28,
                 from ../../linbox/solutions/methods.h:25,
                 from ../../linbox/algorithms/rational-solver.h:41,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
/usr/include/givaro/givrational.h:49:11: note: declaration of 'LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::Source' {aka 'class Givaro::QField<Givaro::Rational>'}
   49 |     class QField;
      |           ^~~~~~
In file included from ../../linbox/matrix/densematrix/blas-matrix.h:43,
                 from ../../linbox/matrix/dense-matrix.h:79,
                 from ../../linbox/solutions/methods.h:26,
                 from ../../linbox/algorithms/rational-solver.h:41,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
../../linbox/field/hom.h: In member function 'LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::Elt& LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::image(LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::Elt&, const SrcElt&)':
../../linbox/field/hom.h:281:45: error: request for member 'deno' in 's', which is of non-class type 'const SrcElt' {aka 'const int'}
  281 |                         if (_source.isOne(s.deno())) {
      |                                             ^~~~
../../linbox/field/hom.h:282:57: error: request for member 'nume' in 's', which is of non-class type 'const SrcElt' {aka 'const int'}
  282 |                                 return _target.init(t,s.nume());
      |                                                         ^~~~
../../linbox/field/hom.h:284:50: error: request for member 'nume' in 's', which is of non-class type 'const SrcElt' {aka 'const int'}
  284 |                         else if (_source.isOne(s.nume())) {
      |                                                  ^~~~
../../linbox/field/hom.h:285:50: error: request for member 'deno' in 's', which is of non-class type 'const SrcElt' {aka 'const int'}
  285 |                                 _target.init(t,s.deno());
      |                                                  ^~~~
../../linbox/field/hom.h:289:55: error: request for member 'deno' in 's', which is of non-class type 'const SrcElt' {aka 'const int'}
  289 |                                 _target. init (tmp, s.deno());
      |                                                       ^~~~
../../linbox/field/hom.h:290:53: error: request for member 'nume' in 's', which is of non-class type 'const SrcElt' {aka 'const int'}
  290 |                                 _target. init (t, s.nume());
      |                                                     ^~~~
../../linbox/field/hom.h: In member function 'LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::SrcElt& LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::preimage(LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::SrcElt&, const Elt&)':
../../linbox/field/hom.h:296:45: error: request for member 'nume' in 's', which is of non-class type 'LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::SrcElt' {aka 'int'}
  296 |                         _target. convert (s.nume(), t);
      |                                             ^~~~
../../linbox/field/hom.h:297:45: error: request for member 'nume' in 's', which is of non-class type 'LinBox::Hom<Givaro::QField<Givaro::Rational>, _Target>::SrcElt' {aka 'int'}
  297 |                         _source. init (s, s.nume());
      |                                             ^~~~
../../linbox/field/hom.h: At global scope:
../../linbox/field/hom.h:315:33: error: invalid use of incomplete type 'LinBox::Hom<Givaro::QField<Givaro::Rational>, Givaro::QField<Givaro::Rational> >::Domain' {aka 'class Givaro::QField<Givaro::Rational>'}
  315 |                 typedef Domain::Element Elt;
      |                                 ^~~~~~~
In file included from ../../linbox/field/field-traits.h:28,
                 from ../../linbox/solutions/methods.h:25,
                 from ../../linbox/algorithms/rational-solver.h:41,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
/usr/include/givaro/givrational.h:49:11: note: declaration of 'LinBox::Hom<Givaro::QField<Givaro::Rational>, Givaro::QField<Givaro::Rational> >::Domain' {aka 'class Givaro::QField<Givaro::Rational>'}
   49 |     class QField;
      |           ^~~~~~
In file included from ../../linbox/matrix/densematrix/blas-matrix.h:43,
                 from ../../linbox/matrix/dense-matrix.h:79,
                 from ../../linbox/solutions/methods.h:26,
                 from ../../linbox/algorithms/rational-solver.h:41,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
../../linbox/field/hom.h:318:17: error: 'Elt' does not name a type
  318 |                 Elt& image(Elt& t, const Elt& s) const { return t=s; }
      |                 ^~~
../../linbox/field/hom.h:320:17: error: 'Elt' does not name a type
  320 |                 Elt& preimage(Elt& s, const Elt& t) const { return s=t; }
      |                 ^~~
In file included from ../../linbox/algorithms/rational-reconstruction.h:40,
                 from ../../linbox/algorithms/rational-solver.inl:38,
                 from ../../linbox/algorithms/rational-solver.h:1050,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
../../linbox/algorithms/rational-reconstruction-base.h: In member function 'bool LinBox::RReconstructionBase<Givaro::ZRing<Givaro::Integer> >::reconstructRational(LinBox::RReconstructionBase<Givaro::ZRing<Givaro::Integer> >::Element&, LinBox::RReconstructionBase<Givaro::ZRing<Givaro::Integer> >::Element&, const Element&, const Element&)':
../../linbox/algorithms/rational-reconstruction-base.h:337:41: error: 'LinBox::RReconstructionBase<Givaro::ZRing<Givaro::Integer> >::Ring' {aka 'class Givaro::ZRing<Givaro::Integer>'} has no member named 'reconstructRational'
  337 |                         return _intRing.reconstructRational(a,b,x,m,a_bound,a_bound);
      |                                         ^~~~~~~~~~~~~~~~~~~
../../linbox/algorithms/rational-reconstruction-base.h: In member function 'bool LinBox::RReconstructionBase<Givaro::ZRing<Givaro::Integer> >::reconstructRational(LinBox::RReconstructionBase<Givaro::ZRing<Givaro::Integer> >::Element&, LinBox::RReconstructionBase<Givaro::ZRing<Givaro::Integer> >::Element&, const Element&, const Element&, const Element&)':
../../linbox/algorithms/rational-reconstruction-base.h:342:34: error: 'LinBox::RReconstructionBase<Givaro::ZRing<Givaro::Integer> >::Ring' {aka 'class Givaro::ZRing<Givaro::Integer>'} has no member named 'reconstructRational'
  342 |                         _intRing.reconstructRational(a,b,x,m,a_bound);
      |                                  ^~~~~~~~~~~~~~~~~~~
make[9]: *** [Makefile:685: diophantine-solver.lo] Error 1

Still stuck…

Matthias Köppe

unread,
Dec 18, 2021, 1:01:43 PM12/18/21
to sage-release

Emmanuel Charpentier

unread,
Dec 18, 2021, 1:10:25 PM12/18/21
to sage-release


Le samedi 18 décembre 2021 à 19:01:43 UTC+1, matthia...@gmail.com a écrit :
This is https://trac.sagemath.org/ticket/33042

Thanks a lot !

Is there a workaround ? I’m thinking of a way to ./configure Sage to force the use of “acceptable” versions. Would --with-system-givaro suffice ?

Emmanuel Charpentier

unread,
Dec 18, 2021, 1:48:55 PM12/18/21
to sage-release

It seems to : while rebuilding from scratch, linbox compilation just completed successfully. More after ptestlong

Emmanuel Charpentier

unread,
Dec 18, 2021, 6:53:00 PM12/18/21
to sage-release

On a system recompiled with ./configure --with-system-givaro==no, ptestlong reports no new failures (= not already seen in previous versions). Mattias’ diagnosis seems exact and my workaround seems to work.

Reply all
Reply to author
Forward
0 new messages