Opened 14 years ago

Closed 13 years ago

#26640 closed defect (fixed)

octave-devel @3.3.52 +gcc44: mkoctfile doesn't find BLAS and LAPACK

Reported by: lukas.reichlin@… Owned by: michaelld (Michael Dickens)
Priority: Normal Milestone:
Component: ports Version: 1.9.1
Keywords: Cc:
Port: octave-devel

Description (last modified by mf2k (Frank Schima))

Hello,

There is a problem with mkoctfile in octave-devel 3.3.52 when Fortran code requires BLAS and LAPACK: If I don't add the options "-Wl,-framework" "-Wl,vecLib" to each call of mkoctfile in Makefile [2], the control package [1] fails to build. However, adding these options would break package installation on non-macintosh platforms. This is not an option. Therefore, it looks like a modified Portfile or a patch to octave-devel is needed which includes "-Wl,-framework" "-Wl,vecLib" by default.

BTW:

  • There are no problems building "control" when using MacPorts octave-3.2.4, neither PPC nor Intel.
  • Note that is possible to compile individual oct-files by src/makefile_*.m and they include the "-Wl,-framework" "-Wl,vecLib" option
  • The only thing that works for me without "-Wl,-framework" "-Wl,vecLib" with octave 3.3.52 is src/makefile_helpers.m, probably because those functions are pure C++.
  • inst/test_control.m executes all tests at once.

Please let me know if you have any questions or comments.
Best Regards,
Lukas

[1] http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/control/

[2] http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/control/src/Makefile

## transmission zeros of state-space models[[BR]]
mkoctfile slab08nd.cc \[[BR]]
          AB08ND.f AB08NX.f TB01ID.f MB03OY.f MB03PY.f[[BR]]

## transmission zeros of state-space models[[BR]]
mkoctfile "-Wl,-framework" "-Wl,vecLib" \[[BR]]
          slab08nd.cc \[[BR]]
          AB08ND.f AB08NX.f TB01ID.f MB03OY.f MB03PY.f[[BR]]

running "pkg install control*" from octave results in errors like

Undefined symbols:
 "_dlaset_", referenced from:
     _ab08nd_ in AB08ND.o
     _ab08nd_ in AB08ND.o
     _ab08nx_ in AB08NX.o
     _ab08nx_ in AB08NX.o
     _ab08nx_ in AB08NX.o
     _ab08nx_ in AB08NX.o
 "_dggev_", referenced from:
     Fslab08nd(octave_value_list const&, int) in slab08nd.o
 "_dlapmt_", referenced from:
     _ab08nx_ in AB08NX.o
 "_dlarfg_", referenced from:
     _ab08nx_ in AB08NX.o
     _mb03oy_ in MB03OY.o
     _mb03py_ in MB03PY.o
 "_dlatzm_", referenced from:
     _ab08nx_ in AB08NX.o
 "_dlacpy_", referenced from:
     _ab08nd_ in AB08ND.o
     _ab08nd_ in AB08ND.o
     _ab08nd_ in AB08ND.o
     _ab08nd_ in AB08ND.o
     _ab08nd_ in AB08ND.o
     _ab08nd_ in AB08ND.o
 "_dtzrzf_", referenced from:
     _ab08nd_ in AB08ND.o
 "_dormqr_", referenced from:
     _ab08nx_ in AB08NX.o
 "_dormrq_", referenced from:
     _ab08nx_ in AB08NX.o
     _ab08nx_ in AB08NX.o
 "_dlaic1_", referenced from:
     _mb03oy_ in MB03OY.o
     _mb03oy_ in MB03OY.o
     _mb03py_ in MB03PY.o
     _mb03py_ in MB03PY.o
 "_dlamch_", referenced from:
     _ab08nd_ in AB08ND.o
     _tb01id_ in TB01ID.o
     _tb01id_ in TB01ID.o
 "_dormrz_", referenced from:
     _ab08nd_ in AB08ND.o
     _ab08nd_ in AB08ND.o
 "_dlange_", referenced from:
     _ab08nd_ in AB08ND.o
 "_dlarf_", referenced from:
     _mb03oy_ in MB03OY.o
     _mb03py_ in MB03PY.o
 "_ilaenv_", referenced from:
     _ab08nd_ in AB08ND.o
     _ab08nd_ in AB08ND.o
     _ab08nx_ in AB08NX.o
     _ab08nx_ in AB08NX.o
     _ab08nx_ in AB08NX.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Undefined symbols:
 "_dlartg_", referenced from:
     _ag08by_ in AG08BY.o
     _ag08by_ in AG08BY.o
 "_dlaset_", referenced from:
     _ag08bd_ in AG08BD.o
     _ag08by_ in AG08BY.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
 "_dggev_", referenced from:
     Fslag08bd(octave_value_list const&, int) in slag08bd.o
 "_dlapmt_", referenced from:
     _ag08by_ in AG08BY.o
 "_dlarfg_", referenced from:
     _ag08by_ in AG08BY.o
     _mb03oy_ in MB03OY.o
 "_dlatzm_", referenced from:
     _ag08by_ in AG08BY.o
 "_dlacpy_", referenced from:
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
 "_dtzrzf_", referenced from:
     _ag08bd_ in AG08BD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
 "_dormqr_", referenced from:
     _ag08by_ in AG08BY.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
 "_dlaic1_", referenced from:
     _ag08by_ in AG08BY.o
     _ag08by_ in AG08BY.o
     _mb03oy_ in MB03OY.o
     _mb03oy_ in MB03OY.o
 "_dlamch_", referenced from:
     _ag08bd_ in AG08BD.o
     _ag08by_ in AG08BY.o
     _tg01ad_ in TG01AD.o
     _tg01fd_ in TG01FD.o
 "_dormrz_", referenced from:
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
 "_dlange_", referenced from:
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
 "_dlarf_", referenced from:
     _mb03oy_ in MB03OY.o
 "_ilaenv_", referenced from:
     _ag08bd_ in AG08BD.o
     _ag08bd_ in AG08BD.o
     _ag08by_ in AG08BY.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
     _tg01fd_ in TG01FD.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Package Download Link: http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/control/?view=tar

You can get my package from [1] by clicking the "Download GNU tarball" link. Rename the file from octave-control.tar.gz to control.tar.gz and install it inside octave by
cd <location of the package>
pkg install control*
If installation succeeds, try "pkg list" and "test_control". Please be patient, the installation may take several minutes. There's no output during a (successful) installation, just wait until the next octave:#> prompt shows up.

Sorry for the bad formatting!

Change History (7)

comment:1 Changed 14 years ago by mf2k (Frank Schima)

Description: modified (diff)
Keywords: octave blas lapack fortran removed

comment:2 Changed 13 years ago by michaelld (Michael Dickens)

Cc: michaelld@… added

Cc Me!

comment:3 Changed 13 years ago by jmroot (Joshua Root)

Cc: michaelld@… removed
Owner: changed from macports-tickets@… to michaelld@…

comment:4 Changed 13 years ago by michaelld (Michael Dickens)

As of r78773, octave-devel is at version 3.4.0; does this issue still apply?

comment:5 Changed 13 years ago by michaelld (Michael Dickens)

Lukas - Is this ticket still an issue with Octave 3.4.3?

comment:6 Changed 13 years ago by lukas.reichlin@…

No, it isn't.

comment:7 Changed 13 years ago by michaelld (Michael Dickens)

Resolution: fixed
Status: newclosed

Great; then I'll close out this ticket.

Note: See TracTickets for help on using tickets.