Opened 10 years ago

Closed 10 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 Carsten 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) 10 years ago.
Portfile-gmsh.diff (1.0 KB) - added by Schamschula (Marius Schamschula) 10 years ago.
patch-CMakeLists.txt.diff (521 bytes) - added by Schamschula (Marius Schamschula) 10 years ago.

Change History (10)

Changed 10 years ago by Schamschula (Marius Schamschula)

Attachment: main.log added

comment:1 Changed 10 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 10 years ago by Schamschula (Marius Schamschula)

Attachment: Portfile-gmsh.diff added

Changed 10 years ago by Schamschula (Marius Schamschula)

Attachment: patch-CMakeLists.txt.diff added

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

Keywords: haspatch added

comment:3 Changed 10 years ago by ryandesign (Ryan Carsten 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 10 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 10 years ago by Schamschula (Marius Schamschula) (previous) (diff)

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

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

comment:6 Changed 10 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 10 years ago by seanfarley (Sean Farley)

Resolution: fixed
Status: newclosed

Fixed in r120745.

Note: See TracTickets for help on using tickets.