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.
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…
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 ?
It seems to : while rebuilding from scratch, linbox
compilation just completed successfully. More after ptestlong
…
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.