Opened 5 years ago

Closed 4 years ago

#49824 closed defect (fixed)

Cannot install octave-control due to missing symbols in slicot library

Reported by: rolf.lochbuehler@… Owned by: Schamschula (Marius Schamschula)
Priority: Normal Milestone:
Component: ports Version: 2.3.4
Keywords: Cc: ken.huynh7455@…, shaeffer@…, jsalort (Julien Salort), shapovalow@…, crossd@…, fredowski
Port: octave-control

Description

(System: OS X 10.11.1, MacPorts 2.3.4)

Installation of octave-control aborts with the following message:

$ sudo port install octave-control
--->  Computing dependencies for octave-control
--->  Fetching archive for octave-control
--->  Attempting to fetch octave-control-2.8.5_0+gcc5.darwin_15.x86_64.tbz2 from http://nue.de.packages.macports.org/macports/packages/octave-control
--->  Attempting to fetch octave-control-2.8.5_0+gcc5.darwin_15.x86_64.tbz2 from http://lil.fr.packages.macports.org/octave-control
--->  Attempting to fetch octave-control-2.8.5_0+gcc5.darwin_15.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/octave-control
--->  Fetching distfiles for octave-control
--->  Verifying checksums for octave-control
--->  Extracting octave-control
--->  Configuring octave-control
Error: org.macports.configure for port octave-control returned: configure failure: command execution failed
Please see the log file for port octave-control for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave-control/octave-control/main.log
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets
Error: Processing of port octave-control failed

/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave-control/octave-control/main.log tells me this:

...
:info:configure mkdir sltmp
:info:configure mv slicot/src/*.f ./sltmp
:info:configure mv slicot/src_aux/*.f ./sltmp
:info:configure cp TG04BX.fortran ./sltmp/TG04BX.f
:info:configure cp TB01ZD.fortran ./sltmp/TB01ZD.f
:info:configure cd sltmp; /opt/local/bin/mkoctfile-3.8.2 -c *.f
:info:configure ar -rc slicotlibrary.a ./sltmp/*.o
:info:configure rm -rf sltmp slicot
:info:configure LFLAGS="-L/opt/local/lib/octave/3.8.2 -L/opt/local/lib -L/opt/local/lib -L/opt/local/lib/gcc5/gcc/x86_64-apple-darwin15/5.2.0 -L/opt/local/lib/gcc5/gcc/x86_64-apple-darwin15/5.2.0/../../.. -lgfortran -lquadmath -lm -llapack -lcblas -lf77blas -latlas -L/opt/local/lib -L/opt/local/lib/gcc5/gcc/x86_64-apple-darwin15/5.2.0 -L/opt/local/lib/gcc5/gcc/x86_64-apple-darwin15/5.2.0/../../.. -lgfortran -lquadmath -lm" \
:info:configure     /opt/local/bin/mkoctfile-3.8.2 __control_slicot_functions__.cc common.cc slicotlibrary.a
:info:configure ld: warning: could not create compact unwind for _dhseqr_: stack subq instruction is too different from dwarf stack size
:info:configure Undefined symbols for architecture x86_64:
:info:configure   "_dgegs_", referenced from:
:info:configure       _sg03ad_ in slicotlibrary.a(SG03AD.o)
:info:configure       _sg03bd_ in slicotlibrary.a(SG03BD.o)
:info:configure   "_dlatzm_", referenced from:
:info:configure       _ab08nx_ in slicotlibrary.a(AB08NX.o)
:info:configure       _ag08by_ in slicotlibrary.a(AG08BY.o)
:info:configure       _sb01by_ in slicotlibrary.a(SB01BY.o)
:info:configure       _sb01fy_ in slicotlibrary.a(SB01FY.o)
:info:configure ld: symbol(s) not found for architecture x86_64
:info:configure clang: error: linker command failed with exit code 1 (use -v to see invocation)
:info:configure make: *** [__control_slicot_functions__.oct] Error 1
:info:configure 
:info:configure pkg: error running `make' for the control package.
:info:configure error: called from 'configure_make' in file /opt/local/share/octave/3.8.2/m/pkg/private/configure_make.m near line 82, column 9
:info:configure error: called from:
:info:configure error:   /opt/local/share/octave/3.8.2/m/pkg/private/install.m at line 199, column 5
:info:configure error:   /opt/local/share/octave/3.8.2/m/pkg/private/build.m at line 50, column 3
:info:configure error:   /opt/local/share/octave/3.8.2/m/pkg/pkg.m at line 516, column 7
:info:configure Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave-control/octave-control/work/control" && /opt/local/bin/octave -q -f --eval 'pkg build -verbose -nodeps /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave-control/octave-control/work/control /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave-control/octave-control/work/.tmp/control.tar.gz' 
:info:configure Exit code: 1
:error:configure org.macports.configure for port octave-control returned: configure failure: command execution failed
:debug:configure Error code: NONE
:debug:configure Backtrace: configure failure: command execution failed
    while executing
"portconfigure::configure_main org.macports.configure"
    ("eval" body line 1)
    invoked from within
"eval $procedure $targetname"
:info:configure Warning: targets not executed for octave-control: org.macports.activate org.macports.configure org.macports.build org.macports.destroot org.macports.install
:notice:configure Please see the log file for port octave-control for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave-control/octave-control/main.log

Attachments (1)

main.log (182.0 KB) - added by rolf.lochbuehler@… 5 years ago.
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave-control/octave-control/main.log

Download all attachments as: .zip

Change History (18)

Changed 5 years ago by rolf.lochbuehler@…

Attachment: main.log added

/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_math_octave-control/octave-control/main.log

comment:1 Changed 5 years ago by ryandesign (Ryan Schmidt)

Owner: changed from macports-tickets@… to mschamschula@…
Port: octave-control added

comment:2 Changed 5 years ago by ken.huynh7455@…

Cc: ken.huynh7455@… added

Cc Me!

comment:3 Changed 5 years ago by Schamschula (Marius Schamschula)

I'm running octave-control 3.0.0, which is waiting to be committed to MacPorts: #49540 under octave 4.0.0 (#48622). However, it experiences the same build failure under octave 3.8.2 as does version 2.8.5.

The release notes for control 2.8.0 only mention that it had an compatibility fix for octave 4.0.0, but does not mention that it no longer supports octave 3.8.2.

I have e-mailed the octave-maintainer list.

comment:4 Changed 5 years ago by shaeffer@…

Cc: shaeffer@… added

Cc Me!

comment:5 Changed 5 years ago by hraftery@…

This is a showstopper for me, since the very popular octave-signal requires octave-control.

I see that the release notes for slicot state that calls to the deprecated DGEG have been replaced with DGGES so maybe the resolution is to update the version of slicot used in octave-control.

comment:6 Changed 5 years ago by Schamschula (Marius Schamschula)

This issue seems to be connected with LAPACK. Are you using octave +atlas? If so what version of atlas?

comment:7 in reply to:  5 Changed 5 years ago by hraftery@…

I found a workaround: the slicot source package can be manually patched to replace the deprecated calls, and the octave-control will build just fine.

After a failed {{{sudo port install octave-control}} execute the following:

$ cd `port dir octave-control`/work/
$ sudo rmdir control/install/
$ sudo rmdir control/
$ sudo -u macports tar zxvf .tmp/control.tar.gz
$ cd control/src
$ sudo -u macports tar zxvf slicot.tar.gz
$ sudo -u macports sed -i '.orig' 's/DGEGS/DGGES/g' slicot/src/SG03AD.f slicot/src/SG03BD.f
$ sudo -u macports sed -i '.orig' 's/DLATZM/DORMRZ/g' slicot/src/AB08NX.f slicot/src/AG08BY.f slicot/src/SB01BY.f slicot/src/SB01FY.f
$ sudo -u macports sed -i '.orig' '/tar -xzf slicot.tar.gz/d' Makefile 
$ cd ../../..
$ sudo port install octave-control

I elected not to provide a patch file because un-tarring slicot makes for a 17MB diff.

This is clearly just a workaround, as the non-deprecated versions are not guaranteed to be backwards compatible. In fact, now that I've signed up to download the latest slicot, I see that the call to DGEGS/DGGES now looks like this:

IF ( LDWORK .LT. MINGG ) THEN
C
C           Use DGEGS for backward compatibilty with LDWORK value.
C           ( Workspace: >= MAX(1,4*N) )
C
            CALL DGEGS( 'Vectors', 'Vectors', N, A, LDA, E, LDE, ALPHAR,
     $                  ALPHAI, BETA, Q, LDQ, Z, LDZ, DWORK, LDWORK,
     $                  INFO1 )
         ELSE
C
C           Use DGGES. The workspace is increased to avoid an error
C           return, while it should not really be larger than above.
C           ( Workspace: >= MAX(1,8*N+16) )
C
            CALL DGGES( 'Vectors', 'Vectors', 'Not ordered', DELCTG, N,
     $                  A, LDA, E, LDE, I, ALPHAR, ALPHAI, BETA, Q, LDQ,
     $                  Z, LDZ, DWORK, LDWORK, BWORK, INFO1 )
         END IF

I was not able to get octave-control to compile with this latest version of slicot, so the workaround remains my best solution.

comment:8 in reply to:  6 Changed 5 years ago by hraftery@…

Replying to mschamschula@…:

This issue seems to be connected with LAPACK. Are you using octave +atlas? If so what version of atlas?

Yes, the default octave port seems to be the +atlas one (which took a loooooong time to build). I simply did port install octave and got:

octave @3.8.2_14+atlas+gcc5+glgui (active)
atlas @3.10.2_2 (active)
Last edited 5 years ago by hraftery@… (previous) (diff)

comment:9 Changed 5 years ago by jsalort (Julien Salort)

Cc: lists@… added

Cc Me!

comment:10 Changed 5 years ago by shapovalow@…

Cc: shapovalow@… added

Cc Me!

comment:11 Changed 5 years ago by gjolleyrogers (Garry Jolley-Rogers)

cc me

comment:12 Changed 5 years ago by crossd@…

Cc: crossd@… added

Cc Me!

comment:13 Changed 5 years ago by tkurita@…

Cc Me!

comment:14 Changed 5 years ago by fredowski

Cc: friedrich.beckmann@… added

Cc Me!

comment:15 Changed 5 years ago by ifernandolopez (Fernando López Hernández)

The workaround of hraftery has failed for me with this message:

Error: Requested variants "+gcc5" do not match those the build was started with: "+gcc49".

But worked after issuing:

$sudo port install octave-control +gcc49

comment:16 Changed 5 years ago by fredowski

I tested yesterday with octave-devel-release (which is 4.0.1). There I can install the package.

comment:17 Changed 4 years ago by Schamschula (Marius Schamschula)

Resolution: fixed
Status: newclosed

Fixed in r153772.

Note: See TracTickets for help on using tickets.