Opened 17 months ago

Last modified 4 months ago

#67262 assigned defect

lapack @3.11.0_0+accelerate+gcc10: Undefined symbols _scabs1_

Reported by: brolcz Owned by: tenomoto (Takeshi Enomoto)
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: Cc: Dave-Allured (Dave Allured), spinicist (Tobias Wood)
Port: lapack

Description

When attempting to update lapack, it fails to build. I have tried cleaning, and it still failed. I am using Mac OS 10.14.6. I am attaching the log below. Thank you!

Attachments (1)

main.log (1.4 MB) - added by brolcz 17 months ago.

Download all attachments as: .zip

Change History (16)

Changed 17 months ago by brolcz

Attachment: main.log added

comment:1 Changed 17 months ago by jmroot (Joshua Root)

Cc: tenomoto removed
Owner: set to tenomoto
Status: newassigned
:info:build Undefined symbols for architecture x86_64:
:info:build   "_scabs1_", referenced from:
:info:build       _scabs1sub_ in scabs1sub.f.o
:info:build ld: symbol(s) not found for architecture x86_64
:info:build collect2: error: ld returned 1 exit status
:info:build make[2]: *** [lib/libcblas.3.11.0.dylib] Error 1

comment:2 Changed 8 months ago by ryandesign (Ryan Carsten Schmidt)

Cc: Dave-Allured added
Summary: lapack @3.11.0_0+accelerate+gcc10 failed to buildlapack @3.11.0_0+accelerate+gcc10: Undefined symbols _scabs1_

comment:3 Changed 8 months ago by Dave-Allured (Dave Allured)

Lapack was recently updated to 3.12.0. Please run a port selfupdate, then try again with the updated lapack.

comment:4 Changed 8 months ago by Dave-Allured (Dave Allured)

Oh sorry, I did not look at the timeline on this ticket before replying. This is an old issue. It may no longer be a problem. If lapack is still getting this problem after update, then please follow up on this ticket, or else start a new ticket.

comment:5 in reply to:  4 Changed 8 months ago by Gandoon (Erik Hedlund)

Replying to Dave-Allured:

Oh sorry, I did not look at the timeline on this ticket before replying. This is an old issue. It may no longer be a problem. If lapack is still getting this problem after update, then please follow up on this ticket, or else start a new ticket.

As this ticket is still open and it seems to have something in common with my #69295 from the other day, I am including that reference here just in case they indeed are connected. This ticket are for a build on an even older OS than the one I am using, using an older gcc, and presumably older accelerate framework. Thus they may only superficially resemble each other, while the root cause lies somewhere else.

comment:6 Changed 4 months ago by Dave-Allured (Dave Allured)

Has duplicate #69991. Same failure on lapack @3.12.0_1+accelerate+gfortran.

comment:7 Changed 4 months ago by spinicist (Tobias Wood)

I found this old numpy/scipy bug report that looks relevant: https://bugs.archlinux.org/task/9905.html That suggests the Makefile is broken.

comment:8 Changed 4 months ago by Dave-Allured (Dave Allured)

@spinicist As a temporary workaround, can you build without +accelerate, and does that work with Eigen, albeit slower?

comment:9 Changed 4 months ago by spinicist (Tobias Wood)

I can already use the Eigen versions of the algorithms, the point of trying this is to see if the Accelerate versions are faster (particularly the SVD).

The patch for the Makefile in the link above looks very simple. Is there a tutorial for how to edit ports? I did look in the documentation but I couldn't see one. I've done vcpkg ports before.

comment:10 in reply to:  9 Changed 4 months ago by Dave-Allured (Dave Allured)

I found this old numpy/scipy bug report

I do not think that 16 year old bug report is relevant. +accelerate for this port is supposed to use alternate optimized routines from port vecLibFort. That old bug report is something different. Linkage to vecLibFort is what needs to be debugged here. I will take a look at the build log that was posted on that other ticket.

Is there a tutorial for how to edit ports? I did look in the documentation but I couldn't see one.

I am not aware of any tutorial. There is the main Macports documentation, and the Wiki with FAQ's and other things.

You can make a local copy of the Portfile, edit it, and test your changes locally. You can test either in the default install location /opt/local, or make a custom Macports installation within a private $prefix.

comment:11 Changed 4 months ago by Dave-Allured (Dave Allured)

Linkage to vecLibFort is what needs to be debugged here.

I might be wrong about that. Another possibility is that scabs1 should always come from lapack, and that +accelerate is somehow blocking that from getting built with lapack.

My own Macports install includes a 2 year old build of vecLibFort, which is supposed to be the current version. To my surprise, scabs1 is not included. This contradicts my first assumption, except it is possible that this vecLibFort is incomplete. I.e. this might be where the real problem is.

Can you please study lapack and vecLibFort sources, and determine the correct intention for scabs1? I am out of time for today.

Last edited 4 months ago by Dave-Allured (Dave Allured) (previous) (diff)

comment:12 Changed 4 months ago by spinicist (Tobias Wood)

Cc: spinicist added

comment:13 Changed 4 months ago by Dave-Allured (Dave Allured)

I am starting from scratch. Here is Apple Developer's documentation for Accelerate framework.
https://developer.apple.com/documentation/accelerate

Conversation about the major upgrade to Accelerate in macOS Ventura 13.3, released 2023 May 1. New API's added.
https://github.com/icl-utk-edu/lapackpp/issues/43

vecLibFort current release was 2022 January 22. Upstream is not responding to update requests since then. This predates the 13.3 update to Accelerate.
https://github.com/mcg1969/vecLibFort

comment:14 Changed 4 months ago by Dave-Allured (Dave Allured)

Documentation for vecLibFort says that Apple's vecLib framework provides both C and FORTRAN bindings for BLAS and LAPACK. However, Apple's Accelerate documentatation seems to mention only the C API. Does anyone know where the Fortran documentation for Accelerate is? ​https://developer.apple.com/documentation/accelerate

comment:15 Changed 4 months ago by Dave-Allured (Dave Allured)

where the Fortran documentation

Never mind about that! I just noticed that vecLibFort uses the C bindings exclusively, to create the desired new bindings for GNU Fortran. So Fortran bindings from Accelerate are not relevant.

Note: See TracTickets for help on using tickets.