Opened 7 years ago

Closed 7 years ago

#43775 closed defect (fixed)

gmsh 2.8.3 rebuild fails

Reported by: Schamschula (Marius Schamschula) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: haspatch Cc:
Port: gmsh

Description (last modified by ryandesign (Ryan Schmidt))

As per a recent discussion on the MacPorts mailing list, I went and replaced XQuartz with the MacPorts xorg-server. When scanning for link errors, gmsh was kicked out. The rebuild fails, with a

:info:build ld: framework not found vecLib

This is strange as on my Mavericks system there is the symlink between /System/Library/Frameworks/Accelerate.framework and /System/Library/Frameworks/vecLib.framework.

Full main.log attached.

Attachments (3)

main.log (5.0 MB) - added by Schamschula (Marius Schamschula) 7 years ago.
Portfile-gmsh.diff (1.0 KB) - added by Schamschula (Marius Schamschula) 7 years ago.
patch-CMakeLists.txt.diff (521 bytes) - added by Schamschula (Marius Schamschula) 7 years ago.

Change History (10)

Changed 7 years ago by Schamschula (Marius Schamschula)

Attachment: main.log added

comment:1 Changed 7 years ago by Schamschula (Marius Schamschula)

I found a solution: The link errors were twofold: looking for vecLib, but also looking for atlas (they coexist?). Added patch file to link the Accelerate framework and atlas.

Also noticed that gmsh was out of date: bumped version to @2.8.4.

Changed 7 years ago by Schamschula (Marius Schamschula)

Attachment: Portfile-gmsh.diff added

Changed 7 years ago by Schamschula (Marius Schamschula)

Attachment: patch-CMakeLists.txt.diff added

comment:2 Changed 7 years ago by mf2k (Frank Schima)

Keywords: haspatch added

comment:3 Changed 7 years ago by ryandesign (Ryan Schmidt)

Description: modified (diff)

In other ports, we've added variants for whether to use atlas or Apple's accelerate framework; perhaps we need variants in gmsh as well.

comment:4 Changed 7 years ago by Schamschula (Marius Schamschula)

The problem is the following:

With the Accelerate framework added , but without atlas, I get missing symbols when linking (see the main.log).

With atlas, but without the Accelerate framework, I get a different set of missing symbols:

Undefined symbols for architecture x86_64:
  "_daxpy_", referenced from:
      fullVector<double>::axpy(fullVector<double> const&, double) in fullMatrix.cpp.o
      fullMatrix<double>::axpy(fullMatrix<double> const&, double) in fullMatrix.cpp.o
     (maybe you meant: _daxpy_chaco_)
  "_dcopy_", referenced from:
      fullVector<double>::setAll(fullVector<double> const&) in fullMatrix.cpp.o
      fullMatrix<double>::setAll(fullMatrix<double> const&) in fullMatrix.cpp.o
     (maybe you meant: _dcopy_chaco_)
  "_dgeev_", referenced from:
      fullMatrix<double>::eig(fullVector<double>&, fullVector<double>&, fullMatrix<double>&, fullMatrix<double>&, bool) in fullMatrix.cpp.o
  "_dgemm_", referenced from:
      fullMatrix<double>::mult(fullMatrix<double> const&, fullMatrix<double>&) const in fullMatrix.cpp.o
      fullMatrix<double>::gemm(fullMatrix<double> const&, fullMatrix<double> const&, double, double, bool, bool) in fullMatrix.cpp.o
      fullMatrix<double>::multOnBlock(fullMatrix<double> const&, int, int, int, int, fullVector<double>&) const in fullMatrix.cpp.o
  "_dgemv_", referenced from:
      fullMatrix<double>::mult(fullVector<double> const&, fullVector<double>&) const in fullMatrix.cpp.o
      fullMatrix<double>::multAddy(fullVector<double> const&, fullVector<double>&) const in fullMatrix.cpp.o
      fullMatrix<double>::multWithATranspose(fullVector<double> const&, double, double, fullVector<double>&) const in fullMatrix.cpp.o
  "_dgesv_", referenced from:
      fullMatrix<double>::luSolve(fullVector<double> const&, fullVector<double>&) in fullMatrix.cpp.o
      fullMatrix<double>::invertInPlace() in fullMatrix.cpp.o
  "_dgesvd_", referenced from:
      fullMatrix<double>::svd(fullMatrix<double>&, fullVector<double>&) in fullMatrix.cpp.o
  "_dgetrf_", referenced from:
      fullMatrix<double>::luFactor(fullVector<int>&) in fullMatrix.cpp.o
      fullMatrix<double>::invert(fullMatrix<double>&) const in fullMatrix.cpp.o
      fullMatrix<double>::determinant() const in fullMatrix.cpp.o
  "_dgetri_", referenced from:
      fullMatrix<double>::invert(fullMatrix<double>&) const in fullMatrix.cpp.o
  "_dgetrs_", referenced from:
      fullMatrix<double>::luSubstitute(fullVector<double> const&, fullVector<int>&, fullVector<double>&) in fullMatrix.cpp.o
  "_dscal_", referenced from:
      fullMatrix<double>::scale(double) in fullMatrix.cpp.o
  "_zcopy_", referenced from:
      fullVector<std::__1::complex<double> >::setAll(fullVector<std::__1::complex<double> > const&) in fullMatrix.cpp.o
      fullMatrix<std::__1::complex<double> >::setAll(fullMatrix<std::__1::complex<double> > const&) in fullMatrix.cpp.o
  "_zgemm_", referenced from:
      fullMatrix<std::__1::complex<double> >::mult(fullMatrix<std::__1::complex<double> > const&, fullMatrix<std::__1::complex<double> >&) const in fullMatrix.cpp.o
      fullMatrix<std::__1::complex<double> >::gemm(fullMatrix<std::__1::complex<double> > const&, fullMatrix<std::__1::complex<double> > const&, std::__1::complex<double>, std::__1::complex<double>, bool, bool) in fullMatrix.cpp.o
  "_zgemv_", referenced from:
      fullMatrix<std::__1::complex<double> >::mult(fullVector<std::__1::complex<double> > const&, fullVector<std::__1::complex<double> >&) const in fullMatrix.cpp.o
      fullMatrix<std::__1::complex<double> >::multAddy(fullVector<std::__1::complex<double> > const&, fullVector<std::__1::complex<double> >&) const in fullMatrix.cpp.o
  "_zscal_", referenced from:
      fullMatrix<std::__1::complex<double> >::scale(double) in fullMatrix.cpp.o

The only way I've gotten gmsh to compile is to have both.

Last edited 7 years ago by Schamschula (Marius Schamschula) (previous) (diff)

comment:5 Changed 7 years ago by seanfarley (Sean Farley)

I can take a look at this, Ryan, if you don't have a chance.

comment:6 Changed 7 years ago by seanfarley (Sean Farley)

Ok, I finally got some time to look at this. I've removed the dependence on ATLAS because it's really unneeded. Finite elements are sparse by their very nature and using the Accelerate framework should be perfectly fine. I'll update the gmsh-devel port and commit it soon.

comment:7 Changed 7 years ago by seanfarley (Sean Farley)

Resolution: fixed
Status: newclosed

Fixed in r120745.

Note: See TracTickets for help on using tickets.