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)
Change History (10)
Changed 10 years ago by Schamschula (Marius Schamschula)
comment:1 Changed 10 years ago by Schamschula (Marius Schamschula)
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.
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: | new → closed |
Fixed in r120745.
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.