linbox-team / fflas-ffpack

FFLAS-FFPACK - Finite Field Linear Algebra Subroutines / Package
http://linbox-team.github.io/fflas-ffpack/
GNU Lesser General Public License v2.1
55 stars 22 forks source link

fflas-ffpack `master`: Build fails on macOS #391

Open mkoeppe opened 6 months ago

mkoeppe commented 6 months ago

On homebrew-macos-usrlocal-minimal, tested using

  /bin/bash ../../../libtool  --tag=CXX   --mode=link g++ -std=gnu++11 -std=gnu++11 -O2 -march=native -Wall -DNDEBUG -UDEBUG    -g -O2 -version-info 1:0:0 -no-undefined -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib  -o libfflas.la -rpath /Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib fflas_L1_inst.lo fflas_L2_inst.lo fflas_L3_inst.lo -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -lgivaro -lgmpxx -lgmp -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -lopenblas  -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -lopenblas
  libtool: link: g++ -std=gnu++11 -std=gnu++11 -dynamiclib  -o .libs/libfflas.1.dylib  .libs/fflas_L1_inst.o .libs/fflas_L2_inst.o .libs/fflas_L3_inst.o   -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -lgivaro -lgmpxx -lgmp -lopenblas  -O2 -march=native -g -O2 -Wl,-rpath -Wl,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath -Wl,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib   -install_name  /Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib/libfflas.1.dylib -compatibility_version 2 -current_version 2.0 -Wl,-single_module
  libtool: link: (cd ".libs" && rm -f "libfflas.dylib" && ln -s "libfflas.1.dylib" "libfflas.dylib")
  libtool: link: ( cd ".libs" && rm -f "libfflas.la" && ln -s "../libfflas.la" "libfflas.la" )
  /bin/bash ../../../libtool  --tag=CXX   --mode=link g++ -std=gnu++11 -std=gnu++11 -O2 -march=native -Wall -DNDEBUG -UDEBUG    -g -O2 -version-info 1:0:0 -no-undefined -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib  -o libfflas_c.la -rpath /Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib fflas_lvl1.lo fflas_lvl2.lo fflas_lvl3.lo fflas_sparse.lo libfflas.la -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -lopenblas
  libtool: link: g++ -std=gnu++11 -std=gnu++11 -dynamiclib  -o .libs/libfflas_c.1.dylib  .libs/fflas_lvl1.o .libs/fflas_lvl2.o .libs/fflas_lvl3.o .libs/fflas_sparse.o   -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib ./.libs/libfflas.dylib -lopenblas  -O2 -march=native -g -O2 -Wl,-rpath -Wl,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath -Wl,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib   -install_name  /Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib/libfflas_c.1.dylib -compatibility_version 2 -current_version 2.0 -Wl,-single_module
  Undefined symbols for architecture x86_64:
    "Givaro::Integer::operator%(unsigned long long) const", referenced from:
        Givaro::Modular<double, double, void>::init(double&, Givaro::Integer const&) const in fflas_lvl1.o
        Givaro::Modular<double, double, void>::init(double&, Givaro::Integer const&) const in fflas_lvl2.o
        Givaro::Modular<double, double, void>::init(double&, Givaro::Integer const&) const in fflas_lvl3.o
  ld: symbol(s) not found for architecture x86_64
  clang: error: linker command failed with exit code 1 (use -v to see invocation)
  make[7]: *** [libfflas_c.la] Error 1
  2 warnings generated.
  2 warnings generated.
  /bin/bash ../../../libtool  --tag=CXX   --mode=link g++ -std=gnu++11 -std=gnu++11 -O2 -march=native -Wall -DNDEBUG -UDEBUG    -g -O2 -version-info 1:0:0 -no-undefined -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib  -o libffpack.la -rpath /Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib ffpack_inst.lo libfflas.la -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -lopenblas
  libtool: link: g++ -std=gnu++11 -std=gnu++11 -dynamiclib  -o .libs/libffpack.1.dylib  .libs/ffpack_inst.o   -L/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib ./.libs/libfflas.dylib -lopenblas  -O2 -march=native -g -O2 -Wl,-rpath -Wl,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib -Wl,-rpath -Wl,/Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib   -install_name  /Users/runner/work/fflas-ffpack/fflas-ffpack/.tox/local-homebrew-macos-usrlocal-minimal/local/lib/libffpack.1.dylib -compatibility_version 2 -current_version 2.0 -Wl,-single_module
  Undefined symbols for architecture x86_64:
    "Givaro::Degree::deginfty", referenced from:
        Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense>::assign(std::__1::vector<double, std::__1::allocator<double> >&, std::__1::vector<double, std::__1::allocator<double> > const&) const in ffpack_inst.o
        Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense>::assign(std::__1::vector<float, std::__1::allocator<float> >&, std::__1::vector<float, std::__1::allocator<float> > const&) const in ffpack_inst.o
        Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::assign(std::__1::vector<long long, std::__1::allocator<long long> >&, std::__1::vector<long long, std::__1::allocator<long long> > const&) const in ffpack_inst.o
        Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense>::assign(std::__1::vector<double, std::__1::allocator<double> >&, std::__1::vector<double, std::__1::allocator<double> > const&) const in ffpack_inst.o
        Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense>::assign(std::__1::vector<float, std::__1::allocator<float> >&, std::__1::vector<float, std::__1::allocator<float> > const&) const in ffpack_inst.o
        Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense>::assign(std::__1::vector<long long, std::__1::allocator<long long> >&, std::__1::vector<long long, std::__1::allocator<long long> > const&) const in ffpack_inst.o
    "Givaro::Integer::Integer(double)", referenced from:
        void FFPACK::RandomNullSpaceVector<Givaro::ModularBalanced<float> >(Givaro::ModularBalanced<float> const&, FFLAS::FFLAS_SIDE, unsigned long, unsigned long, Givaro::ModularBalanced<float>::Element_ptr, unsigned long, Givaro::ModularBalanced<float>::Element_ptr, unsigned long) in ffpack_inst.o
        Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Element& FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense> >(Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense> const&, Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Element&, unsigned long, Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Domain_t::Element_ptr, unsigned long, FFPACK::FFPACK_CHARPOLY_TAG, unsigned long) in ffpack_inst.o
        ...
    "Givaro::Integer::operator double() const", referenced from:
        double FFLAS::Protected::computeFactorClassic<Givaro::ModularBalanced<double> >(Givaro::ModularBalanced<double> const&) in ffpack_inst.o
        double FFLAS::Protected::computeFactorClassic<Givaro::ModularBalanced<float> >(Givaro::ModularBalanced<float> const&) in ffpack_inst.o
        double FFLAS::Protected::computeFactorClassic<Givaro::Modular<double, double, void> >(Givaro::Modular<double, double, void> const&) in ffpack_inst.o
        double FFLAS::Protected::computeFactorClassic<Givaro::Modular<float, float, void> >(Givaro::Modular<float, float, void> const&) in ffpack_inst.o
    "Givaro::Integer::operator==(int) const", referenced from:
        unsigned long FFLAS::Protected::DotProdBoundClassic<Givaro::ModularBalanced<double> >(Givaro::ModularBalanced<double> const&, Givaro::ModularBalanced<double>::Element const&) in ffpack_inst.o
        unsigned long FFLAS::Protected::DotProdBoundClassic<Givaro::ModularBalanced<float> >(Givaro::ModularBalanced<float> const&, Givaro::ModularBalanced<float>::Element const&) in ffpack_inst.o
        unsigned long FFLAS::Protected::DotProdBoundClassic<Givaro::Modular<double, double, void> >(Givaro::Modular<double, double, void> const&, Givaro::Modular<double, double, void>::Element const&) in ffpack_inst.o
        unsigned long FFLAS::Protected::DotProdBoundClassic<Givaro::Modular<float, float, void> >(Givaro::Modular<float, float, void> const&, Givaro::Modular<float, float, void>::Element const&) in ffpack_inst.o
    "Givaro::Integer::operator<(unsigned long long) const", referenced from:
        std::__1::list<Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense>::Element> >& FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense> >(Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense> const&, std::__1::list<Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense>::Element> >&, unsigned long, Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense>::Domain_t::Element_ptr, unsigned long, Givaro::Poly1Dom<Givaro::ModularBalanced<double>, Givaro::Dense>::Domain_t::RandIter&, FFPACK::FFPACK_CHARPOLY_TAG, unsigned long) in ffpack_inst.o
        std::__1::list<Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense>::Element> >& FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense> >(Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense> const&, std::__1::list<Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense>::Element> >&, unsigned long, Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense>::Domain_t::Element_ptr, unsigned long, Givaro::Poly1Dom<Givaro::ModularBalanced<float>, Givaro::Dense>::Domain_t::RandIter&, FFPACK::FFPACK_CHARPOLY_TAG, unsigned long) in ffpack_inst.o
        std::__1::list<Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Element> >& FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense> >(Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense> const&, std::__1::list<Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Element> >&, unsigned long, Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Domain_t::Element_ptr, unsigned long, Givaro::Poly1Dom<Givaro::ModularBalanced<long long>, Givaro::Dense>::Domain_t::RandIter&, FFPACK::FFPACK_CHARPOLY_TAG, unsigned long) in ffpack_inst.o
        std::__1::list<Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense>::Element> >& FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense> >(Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense> const&, std::__1::list<Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense>::Element> >&, unsigned long, Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense>::Domain_t::Element_ptr, unsigned long, Givaro::Poly1Dom<Givaro::Modular<double, double, void>, Givaro::Dense>::Domain_t::RandIter&, FFPACK::FFPACK_CHARPOLY_TAG, unsigned long) in ffpack_inst.o
        std::__1::list<Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense>::Element> >& FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense> >(Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense> const&, std::__1::list<Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense>::Element> >&, unsigned long, Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense>::Domain_t::Element_ptr, unsigned long, Givaro::Poly1Dom<Givaro::Modular<float, float, void>, Givaro::Dense>::Domain_t::RandIter&, FFPACK::FFPACK_CHARPOLY_TAG, unsigned long) in ffpack_inst.o
        std::__1::list<Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense>::Element> >& FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense> >(Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense> const&, std::__1::list<Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense>::Element, std::__1::allocator<Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense>::Element> >&, unsigned long, Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense>::Domain_t::Element_ptr, unsigned long, Givaro::Poly1Dom<Givaro::Modular<long long, long long, void>, Givaro::Dense>::Domain_t::RandIter&, FFPACK::FFPACK_CHARPOLY_TAG, unsigned long) in ffpack_inst.o
    "Givaro::Integer::operator-(long long) const", referenced from:
        double FFLAS::Protected::computeFactorClassic<Givaro::ModularBalanced<double> >(Givaro::ModularBalanced<double> const&) in ffpack_inst.o
        double FFLAS::Protected::computeFactorClassic<Givaro::ModularBalanced<float> >(Givaro::ModularBalanced<float> const&) in ffpack_inst.o
        double FFLAS::Protected::computeFactorClassic<Givaro::Modular<double, double, void> >(Givaro::Modular<double, double, void> const&) in ffpack_inst.o
        double FFLAS::Protected::computeFactorClassic<Givaro::Modular<float, float, void> >(Givaro::Modular<float, float, void> const&) in ffpack_inst.o
    "Givaro::Integer::operator>>(int) const", referenced from:
        double FFLAS::Protected::computeFactorClassic<Givaro::ModularBalanced<double> >(Givaro::ModularBalanced<double> const&) in ffpack_inst.o
        double FFLAS::Protected::computeFactorClassic<Givaro::ModularBalanced<float> >(Givaro::ModularBalanced<float> const&) in ffpack_inst.o
  ld: symbol(s) not found for architecture x86_64
  clang: error: linker command failed with exit code 1 (use -v to see invocation)

https://github.com/linbox-team/fflas-ffpack/actions/runs/7382353719/job/20082049232?pr=386#step:12:2424

kwankyu commented 1 month ago

Can we hope this to be fixed soon?

@ClementPernet

kwankyu commented 1 month ago

fflas-ffpack v2.5.0, with system givaro and openblas, installs fine on my mac following the standard install guide here.

I suspect that the reported build failure is caused by peculiar sage build configurations and environment.

Hence I think it is unlikely that the reported issue (at least as presented here) may be fixed by developers here...