Opened 6 months ago
Last modified 6 months ago
#70105 new defect
oof2 opportunistically links to a random BLAS implementation
Reported by: | barracuda156 | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | snarkhunter (Steve Langer), szhorvat (Szabolcs Horvát), catap (Kirill A. Korinsky), michaelld (Michael Dickens) | |
Port: | oof2, flexiblas, OpenBLAS, blis |
Description
Deactivated FlexiBLAS and noticed that oof2
got reported as broken. Lo and behold,
Could not open /opt/local/lib/libflexiblas.3.dylib: Error opening or reading file (referenced from /opt/local/lib/liboof2common.dylib)
I did not tell it to link to FlexiBLAS, I simply had that port installed.
This looks like the same or related bug as in #69538 and #69326
Apparently either Pythons are at fault or MacPorts fails to control what they do.
This should be fixed somehow on a general level, hopefully not just by conflicts_build :)
Change History (6)
comment:1 follow-up: 2 Changed 6 months ago by snarkhunter (Steve Langer)
comment:2 Changed 6 months ago by barracuda156
Replying to snarkhunter:
oof2 uses CMake's findBLAS function, and then links to ${BLAS_LIBRARIES}. It is agnostic about which BLAS it uses. Since it can use Accelerate, it doesn't have an explicit BLAS dependency. Should it? Should it use a variant to specify which BLAS to link to?
We should certainly make this controllable, otherwise it links to a random BLAS, MacPorts does not know about that, so once a user deactivates/uninstalls/updates that BLAS, port is broken.
Probably just adding linear_algebra
port group gonna work, but needs to be tested.
- S. AFAIK
linear_algebra
itself has an issue now, and my PR with a fix is stuck in a limbo for no reason, but anyway. Alternatively, if you are sure that the port must use Accelerate (for example), then other BLAS could be declaredconflicts_build
, and then they will not be accidentally picked. But better handle it via configure args, either via PR or manually.
comment:3 follow-up: 5 Changed 6 months ago by szhorvat (Szabolcs Horvát)
Ports that use standard CMake features to detect BLAS can usually just use the linear_algebra portgroup. Something like:
PortGroup linear_algebra 1.0 pre-configure { # Link to chosen BLAS/LAPACK configure.args-append ${cmake_linalglib} }
This creates variants for each available BLAS.
Does this help? Note that I didn't look at oof2 in any detail.
comment:4 Changed 6 months ago by snarkhunter (Steve Langer)
Yes, that helps. I was unaware of that port group. I'll submit a PR after I'm done testing locally.
Thanks!
comment:5 Changed 6 months ago by barracuda156
Replying to szhorvat:
Ports that use standard CMake features to detect BLAS can usually just use the linear_algebra portgroup. Something like:
I think it does not work correctly now, and I have a PR with a provisional fix, but more testing is welcome, or maybe you have a better idea. https://github.com/macports/macports-ports/pull/23395
comment:6 Changed 6 months ago by snarkhunter (Steve Langer)
With linear_algebra, oof2 is using the selected blas variant, as far as I can tell. otool -L says it's linking to the correct library, and deactivating the the blas package breaks oof2. What can I do to see if the linear_algebra bug is affecting it? I don't have access to older versions of macOS.
oof2 uses CMake's findBLAS function, and then links to ${BLAS_LIBRARIES}. It is agnostic about which BLAS it uses. Since it can use Accelerate, it doesn't have an explicit BLAS dependency. Should it? Should it use a variant to specify which BLAS to link to?