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)

octave* always need to be revbumped for a libgcc/gcc update

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 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 in reply to:  6 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: newclosed

In 0d6033f133f27bc350f7e232e3f2ff1824268e85/macports-ports:

compilers PG: add libgcc45 and libgcc6 dependencies for older GCCs

Fixes #54911

Note: See TracTickets for help on using tickets.