ports/186657: C++ API clash in octave and octave-forge ports
Steven G. Kargl
kargl at troutmask.apl.washington.edu
Tue Feb 11 18:00:01 UTC 2014
>Number: 186657
>Category: ports
>Synopsis: C++ API clash in octave and octave-forge ports
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Feb 11 18:00:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator: Steven G. Kargl
>Release: FreeBSD 11.0-CURRENT amd64
>Organization:
pl-uw
>Environment:
System: FreeBSD troutmask.apl.washington.edu 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r261721M: Mon Feb 10 13:05:20 PST 2014 kargl at troutmask.apl.washington.edu:/usr/obj/usr/src/sys/SPEW amd64
>Description:
On an up-tp-date FreeBSD-current,
% uname -a
FreeBSD troutmask.apl.washington.edu 11.0-CURRENT FreeBSD 11.0-CURRENT #0
r261721M: Mon Feb 10 13:05:20 PST 2014
kargl at troutmask.apl.washington.edu:/usr/obj
where all remnants of base gcc have been removed via 'make delete-old delete-old-libs'
Installation of octave and octave-forge-netcdf and octave-forge-octcdf leads to a
clash of libc++ API.
% octave
octave:1> pkg load netcdf
octave:2> test_netcdf
error: import_netcdf: /usr/local/lib/octave/packages/netcdf-1.0.1/amd64-portbld-freebsd11.0-api-v49+/__netcdf__.oct: failed to load: /usr/local/lib/octave/packages/netcdf-1.0.1/amd64-portbld-freebsd11.0-api-v49+/__netcdf__.oct: Undefined symbol "_ZNK5ArrayISsE17resize_fill_valueEv"
error: called from:
error: /usr/local/share/octave/packages/netcdf-1.0.1/import_netcdf.m at line 2, column 20
error: /usr/local/share/octave/packages/netcdf-1.0.1/test_netcdf.m at line 6, column 1
Clearly, _ZNK5ArrayISsE17resize_fill_valueEv is a name-mangled entity. So, lets look at ldd output.
% ldd ./netcdf.oct
./netcdf.oct:
liboctinterp.so.2 => not found (0)
liboctave.so.2 => not found (0)
libstdc++.so.6 => /usr/local/lib/gcc46/libstdc++.so.6 (0x201631000)
libm.so.5 => /lib/libm.so.5 (0x201930000)
libgcc_s.so.1 => /usr/local/lib/gcc46/libgcc_s.so.1 (0x201b58000)
libthr.so.3 => /lib/libthr.so.3 (0x201d6d000)
libc.so.7 => /lib/libc.so.7 (0x20081d000)
troutmask:fvwm:kargl[251] ldd /usr/local./
/usr/local./ not found
% ldd /usr/local/bin/octave
/usr/local/bin/octave:
libX11.so.6 => /usr/local/lib/libX11.so.6 (0x20081f000)
libxcb.so.2 => /usr/local/lib/libxcb.so.2 (0x200b52000)
libXau.so.6 => /usr/local/lib/libXau.so.6 (0x200d70000)
libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x200f72000)
libpthread-stubs.so.0 => /usr/local/lib/libpthread-stubs.so.0 (0x201177000)
librpcsvc.so.5 => /usr/lib/librpcsvc.so.5 (0x201378000)
libm.so.5 => /lib/libm.so.5 (0x201581000)
libc++.so.1 => /usr/lib/libc++.so.1 (0x2017a9000)
libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x201a68000)
libgcc_s.so.1 => /usr/local/lib/gcc46/libgcc_s.so.1 (0x201c82000)
libthr.so.3 => /lib/libthr.so.3 (0x201e97000)
libc.so.7 => /lib/libc.so.7 (0x2020bc000)
Whoops. octave-forge-netcdf was built with /usr/local/bin/g++46.
>How-To-Repeat:
Install freebsd-current
Install octave
Install octave-forge-netcdf
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list