Opened 7 years ago
Closed 7 years ago
#54911 closed defect (fixed)
octave @4.2.1: dyld: Library not loaded: /opt/local/lib/libgcc/libgfortran.3.dylib
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | Schamschula (Marius Schamschula) | |
Port: | octave, octave-devel, octave-devel-rc, octave-devel-release |
Description
The octave port provides a broken binary:
dyld: Library not loaded: /opt/local/lib/libgcc/libgfortran.3.dylib Referenced from: /opt/local/bin/octave-cli Reason: image not found
Looks like it links with an old gcc6 version of the gfortran library. If you want to continue to use the old version of the library, change the libgcc dependency to libgcc6.
I assume this also applies to octave-devel, octave-devel-rc and octave-devel-release.
Change History (10)
comment:1 Changed 7 years ago by Schamschula (Marius Schamschula)
comment:2 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
Then there should be a comment in the gcc* ports reminding the developer working on the gcc* ports to do that. But in this case, I assume a mere revbump will be insufficient.
comment:3 Changed 7 years ago by Schamschula (Marius Schamschula)
comment:4 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
As I said, a revbump alone is insufficient. You're building with gcc6, which uses libgfortran.3.dylib. That's no longer part of libgcc; it's now part of libgcc6. So you either need to build with gcc7, which uses libgfortran.4.dylib which is part of libgcc, or you need to change the libgcc dependency to libgcc6.
comment:5 Changed 7 years ago by Schamschula (Marius Schamschula)
Perhaps my rebuild worked because I have libgcc6 and gcc6 installed, with mp-gcc6 selected?
comment:6 follow-up: 9 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
The rebuild will work, but the dependencies will not be correctly recorded. A user will then be able to uninstall libgcc6, without MacPorts complaining, which will break octave. Meanwhile MacPorts will prevent the user from uninstalling libgcc, alleging that octave uses it, even though it no longer does.
comment:7 Changed 7 years ago by Schamschula (Marius Schamschula)
Cc: | Schamschula added |
---|
comment:8 Changed 7 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
The creation of libgcc6 seems to have created some difficulties with the compilers PortGroup, so this problem probably goes beyond octave.
comment:9 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to ryandesign:
The rebuild will work, but the dependencies will not be correctly recorded. A user will then be able to uninstall libgcc6, without MacPorts complaining, which will break octave.
And since the buildbot deactivates all ports between builds, and because octave wants to run octave-cli in its post-activate block, all ports that depend on octave will fail on the buildbot, because octave will fail to activate:
DEBUG: Executing proc-post-org.macports.activate-activate-0 DEBUG: system: /opt/local/bin/octave-cli -q -f -H --eval 'try; pkg prefix /opt/local/share/octave/packages /opt/local/lib/octave/packages; pkg -verbose -global rebuild; disp(lasterror.message); catch; exit(1); end_try_catch;' dyld: Library not loaded: /opt/local/lib/libgcc/libgfortran.3.dylib Referenced from: /opt/local/bin/octave-cli Reason: image not found Command failed: /opt/local/bin/octave-cli -q -f -H --eval 'try; pkg prefix /opt/local/share/octave/packages /opt/local/lib/octave/packages; pkg -verbose -global rebuild; disp(lasterror.message); catch; exit(1); end_try_catch;' Killed by signal: 5
comment:10 Changed 7 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Resolution: | → fixed |
---|---|
Status: | new → closed |
octave* always need to be revbumped for a libgcc/gcc update