Bug 183239

Summary: multimedia/smpeg fails to build due to linker error with clang
Product: Ports & Packages Reporter: Chess Griffin <chess>
Component: Individual Port(s)Assignee: Jose Alonso Cardenas Marquez <acm>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description Chess Griffin 2013-10-23 14:00:01 UTC
I built smpeg on my poudriere-devel package building machine and it failed to build during a rebuild of packages with this error:

3 warnings generated.
libtool: compile:  clang++ -DPACKAGE=\"smpeg\" -DVERSION=\"0.4.4\" -I. -I. -I/usr/local/include -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -fno-exceptions -fno-rtti -c MPEGsystem.cpp -o MPEGsystem.o >/dev/null 2>&1
/bin/sh /usr/local/bin/libtool --mode=compile clang -DPACKAGE=\"smpeg\" -DVERSION=\"0.4.4\"  -I. -I.    -I/usr/local/include  -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -c MPEGfilter.c
libtool: compile:  clang -DPACKAGE=\"smpeg\" -DVERSION=\"0.4.4\" -I. -I. -I/usr/local/include -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -c MPEGfilter.c  -fPIC -DPIC -o .libs/MPEGfilter.o
libtool: compile:  clang -DPACKAGE=\"smpeg\" -DVERSION=\"0.4.4\" -I. -I. -I/usr/local/include -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -c MPEGfilter.c -o MPEGfilter.o >/dev/null 2>&1
/bin/sh /usr/local/bin/libtool --mode=compile clang++ -DPACKAGE=\"smpeg\" -DVERSION=\"0.4.4\"  -I. -I.    -I/usr/local/include  -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -fno-exceptions -fno-rtti -c smpeg.cpp
libtool: compile:  clang++ -DPACKAGE=\"smpeg\" -DVERSION=\"0.4.4\" -I. -I. -I/usr/local/include -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -fno-exceptions -fno-rtti -c smpeg.cpp  -fPIC -DPIC -o .libs/smpeg.o
libtool: compile:  clang++ -DPACKAGE=\"smpeg\" -DVERSION=\"0.4.4\" -I. -I. -I/usr/local/include -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -fno-exceptions -fno-rtti -c smpeg.cpp -o smpeg.o >/dev/null 2>&1
/bin/sh /usr/local/bin/libtool --mode=link clang++  -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -fno-exceptions -fno-rtti  -o libsmpeg.la -rpath /usr/local/lib -version-info 1:3:1 MPEG.lo MPEGring.lo MPEGlist.lo MPEGstream.lo MPEGsystem.lo MPEGfilter.lo smpeg.lo audio/libaudio.la		video/libvideo.la -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -pthread -lm
libtool: link: cc -shared  -fPIC -DPIC  .libs/MPEG.o .libs/MPEGring.o .libs/MPEGlist.o .libs/MPEGstream.o .libs/MPEGsystem.o .libs/MPEGfilter.o .libs/smpeg.o  -Wl,--whole-archive audio/.libs/libaudio.a video/.libs/libvideo.a -Wl,--no-whole-archive  -Wl,-rpath -Wl,/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib -L/usr/local/lib /usr/local/lib/libSDL.so /usr/local/lib/libiconv.so -lvgl /usr/local/lib/libaa.so -lncurses -lusbhid -lm  -O2 -Wl,-rpath -Wl,/usr/local/lib -pthread   -pthread -Wl,-soname -Wl,libsmpeg.so.1 -o .libs/libsmpeg.so.1
libtool: link: (cd ".libs" && rm -f "libsmpeg.so" && ln -s "libsmpeg.so.1" "libsmpeg.so")
libtool: link: (cd ".libs" && rm -f "libsmpeg.so" && ln -s "libsmpeg.so.1" "libsmpeg.so")
libtool: link: (cd .libs/libsmpeg.lax/libaudio.a && ar x "/wrkdirs/usr/ports/multimedia/smpeg/work/smpeg-0.4.4/audio/.libs/libaudio.a")
libtool: link: (cd .libs/libsmpeg.lax/libvideo.a && ar x "/wrkdirs/usr/ports/multimedia/smpeg/work/smpeg-0.4.4/video/.libs/libvideo.a")
libtool: link: ar cru .libs/libsmpeg.a  MPEG.o MPEGring.o MPEGlist.o MPEGstream.o MPEGsystem.o MPEGfilter.o smpeg.o  .libs/libsmpeg.lax/libaudio.a/MPEGaudio.o .libs/libsmpeg.lax/libaudio.a/bitwindow.o .libs/libsmpeg.lax/libaudio.a/filter.o .libs/libsmpeg.lax/libaudio.a/filter_2.o .libs/libsmpeg.lax/libaudio.a/huffmantable.o .libs/libsmpeg.lax/libaudio.a/mpeglayer1.o .libs/libsmpeg.lax/libaudio.a/mpeglayer2.o .libs/libsmpeg.lax/libaudio.a/mpeglayer3.o .libs/libsmpeg.lax/libaudio.a/mpegtable.o .libs/libsmpeg.lax/libaudio.a/mpegtoraw.o  .libs/libsmpeg.lax/libvideo.a/MPEGvideo.o .libs/libsmpeg.lax/libvideo.a/decoders.o .libs/libsmpeg.lax/libvideo.a/floatdct.o .libs/libsmpeg.lax/libvideo.a/gdith.o .libs/libsmpeg.lax/libvideo.a/jrevdct.o .libs/libsmpeg.lax/libvideo.a/mmxflags_asm.o .libs/libsmpeg.lax/libvideo.a/mmxidct_asm.o .libs/libsmpeg.lax/libvideo.a/motionvector.o .libs/libsmpeg.lax/libvideo.a/parseblock.o .libs/libsmpeg.lax/libvideo.a/readfile.o .libs/libsmpeg.lax/libvideo.a/util.o .
 libs/libsmpeg.lax/libvideo.a/vhar128.o .libs/libsmpeg.lax/libvideo.a/video.o 
libtool: link: ranlib .libs/libsmpeg.a
libtool: link: rm -fr .libs/libsmpeg.lax
libtool: link: ( cd ".libs" && rm -f "libsmpeg.la" && ln -s "../libsmpeg.la" "libsmpeg.la" )
clang -DPACKAGE=\"smpeg\" -DVERSION=\"0.4.4\"  -I. -I.    -I/usr/local/include  -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -c plaympeg.c
plaympeg.c:265:21: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
    fprintf(stderr, answer + 4);
                    ^~~~~~~~~~
1 warning generated.
/bin/sh /usr/local/bin/libtool --mode=link clang  -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video  -o plaympeg  plaympeg.o libsmpeg.la -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -pthread -lm
libtool: link: clang -O2 -pipe -fno-strict-aliasing -I/usr/local/include/SDL -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -D_THREAD_SAFE -DTHREADED_AUDIO -DNDEBUG -I.. -DNOCONTROLS -I. -I./audio -I./video -o .libs/plaympeg plaympeg.o -Wl,-rpath -Wl,/usr/local/lib -pthread  ./.libs/libsmpeg.so -L/usr/local/lib /usr/local/lib/libSDL.so /usr/local/lib/libiconv.so -lvgl /usr/local/lib/libaa.so -lncurses -lusbhid -lm -pthread -Wl,-rpath -Wl,/usr/local/lib
./.libs/libsmpeg.so: undefined reference to `operator delete[](void*)'
./.libs/libsmpeg.so: undefined reference to `operator new(unsigned long)'
./.libs/libsmpeg.so: undefined reference to `operator delete(void*)'
./.libs/libsmpeg.so: undefined reference to `operator new[](unsigned long)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[1]: *** [plaympeg] Error 1
gmake[1]: Leaving directory `/wrkdirs/usr/ports/multimedia/smpeg/work/smpeg-0.4.4'
gmake: *** [all-recursive] Error 1
*** [do-build] Error code 1

Stop in /usr/ports/multimedia/smpeg.
===>  Cleaning for smpeg-0.4.4_10
build of /usr/ports/multimedia/smpeg ended at Wed Oct 23 08:40:08 EDT 2013
build time: 00:01:44

How-To-Repeat: Build multimedia/smpeg on poudriere-devel with clang.
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-10-23 14:00:20 UTC
Responsible Changed
From-To: freebsd-ports-bugs->acm

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Tijl Coosemans freebsd_committer freebsd_triage 2013-10-23 14:08:59 UTC
Hi,

Can you try building the port with USE_AUTOTOOLS=libtool removed
from the Makefile?
Comment 3 Chess Griffin 2013-10-23 14:25:59 UTC
On 23.10.2013 09:08, Tijl Coosemans wrote:
> Hi,
> 
> Can you try building the port with USE_AUTOTOOLS=libtool removed
> from the Makefile?

Yes, that fixes the problem - thank you very much!

-- 
Chess Griffin
Comment 4 Matthieu Volat 2014-03-07 17:33:53 UTC
I also stumbled on this problem, but I see more problems when removing the USE_AUTOTOOLS flag as there seems to be no links to libsmpeg.so.1.3 generated:

[...]
===>  Checking if multimedia/smpeg already installed
===>   Registering installation for smpeg-0.4.4_1
pkg-static: lstat(/usr/ports/multimedia/smpeg/work/stage/usr/local/lib/libsmpeg.so): No such file or directory
pkg-static:
lstat(/usr/ports/multimedia/smpeg/work/stage/usr/local/lib/libsmpeg.so.1):
No such file or directory

Would not it better to properly add libc++ to LDFLAGS?

-- 
Matthieu Volat <mazhe@alkumuna.eu>