Created attachment 150698 [details] patch to unbreak x11-fm/sushi build on FreeBSD 8 After the patch in PR 196031 to unbreak the build of www/webkit-gtk3 on FreeBSD 8, the build of x11-fm/sushi fails with these errors: GISCAN Sushi-1.0.gir /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZSt25__throw_bad_function_callv@GLIBCXX_3.4.14' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11' /usr/local/lib/libjavascriptcoregtk-3.0.so: undefined reference to `_ZNSt6chrono3_V212system_clock3nowEv@GLIBCXX_3.4.19' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZSt15__once_callable@GLIBCXX_3.4.11' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZNSt8__detail15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.15' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZSt11__once_call@GLIBCXX_3.4.11' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZNSt18condition_variableD1Ev@GLIBCXX_3.4.11' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZSt20__throw_system_errori@GLIBCXX_3.4.11' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZNSt18condition_variable10notify_oneEv@GLIBCXX_3.4.11' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZNSt18condition_variableC1Ev@GLIBCXX_3.4.11' /usr/local/lib/libjavascriptcoregtk-3.0.so: undefined reference to `_ZNSt18condition_variable10notify_allEv@GLIBCXX_3.4.11' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `_ZNSt6chrono3_V212steady_clock3nowEv@GLIBCXX_3.4.19' /usr/local/lib/libwebkitgtk-3.0.so: undefined reference to `__once_proxy@GLIBCXX_3.4.11' Makefile:672: recipe for target 'sushi-start' failed This patch adds USES=compiler:c++11-lib, which should be a no-op if the base compiler is clang, but should force the use of gcc and binutils from ports and also adds -L/usr/local/lib/gcc48 to LDFLAGS. After that change, the build still fails, but with this error: GISCAN Sushi-1.0.gir /libexec/ld-elf.so.1: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.14 required b y /usr/local/lib/libwebkitgtk-3.0.so.0 not found Command '['/wrkdirs/usr/ports/x11-fm/sushi/work/sushi-3.12.0/src/tmp-introspectj KttWB/Sushi-1.0', '--introspect-dump=/wrkdirs/usr/ports/x11-fm/sushi/work/sushi- 3.12.0/src/tmp-introspectjKttWB/functions.txt,/wrkdirs/usr/ports/x11-fm/sushi/wo rk/sushi-3.12.0/src/tmp-introspectjKttWB/dump.xml']' returned non-zero exit stat us 1 /usr/local/share/gobject-introspection-1.0/Makefile.introspection:153: recipe fo r target 'Sushi-1.0.gir' failed gmake[2]: *** [Sushi-1.0.gir] Error 1 For some reason, the linker is using libstdc++.so from base instead of version installed by the gcc port. Fortunately, just adding -lstdc++ to LDFLAGS fixes this problem, so that change is also included in the patch. I don't know if this is the best fix, but it unbreaks the build for me.
Auto-assigned to maintainer gnome@FreeBSD.org
Even with this patch, the sushi dies with a SIGSEGV on startup. GNU gdb (GDB) 7.8.2 [GDB v7.8.2 for FreeBSD] Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i386-portbld-freebsd8.4". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/local/libexec/sushi-start...(no debugging symbols found)...done. (gdb) run Starting program: /usr/local/libexec/sushi-start [New Thread 3c201140 (LWP 100834 initial thread)] [New Thread 3cb57580 (LWP 100226)] [New Thread 3cb57440 (LWP 100838)] [New Thread 3cb56400 (LWP 100852)] Gjs-Message: JS LOG: Register mimetype audio/3gpp Gjs-Message: JS LOG: Register mimetype audio/ac3 Gjs-Message: JS LOG: Register mimetype audio/AMR Gjs-Message: JS LOG: Register mimetype audio/AMR-WB Gjs-Message: JS LOG: Register mimetype audio/basic Gjs-Message: JS LOG: Register mimetype audio/flac Gjs-Message: JS LOG: Register mimetype audio/midi Gjs-Message: JS LOG: Register mimetype audio/mp2 Gjs-Message: JS LOG: Register mimetype audio/mp4 Gjs-Message: JS LOG: Register mimetype audio/mpeg Gjs-Message: JS LOG: Register mimetype audio/ogg Gjs-Message: JS LOG: Register mimetype audio/prs.sid Gjs-Message: JS LOG: Register mimetype audio/vnd.rn-realaudio Gjs-Message: JS LOG: Register mimetype audio/x-aiff Gjs-Message: JS LOG: Register mimetype audio/x-ape Gjs-Message: JS LOG: Register mimetype audio/x-flac Gjs-Message: JS LOG: Register mimetype audio/x-gsm Gjs-Message: JS LOG: Register mimetype audio/x-it Gjs-Message: JS LOG: Register mimetype audio/x-m4a Gjs-Message: JS LOG: Register mimetype audio/x-matroska Gjs-Message: JS LOG: Register mimetype audio/x-mod Gjs-Message: JS LOG: Register mimetype audio/x-mp3 Gjs-Message: JS LOG: Register mimetype audio/x-mpeg Gjs-Message: JS LOG: Register mimetype audio/x-ms-asf Gjs-Message: JS LOG: Register mimetype audio/x-ms-asx Gjs-Message: JS LOG: Register mimetype audio/x-ms-wax Gjs-Message: JS LOG: Register mimetype audio/x-ms-wma Gjs-Message: JS LOG: Register mimetype audio/x-musepack Gjs-Message: JS LOG: Register mimetype audio/x-pn-aiff Gjs-Message: JS LOG: Register mimetype audio/x-pn-au Gjs-Message: JS LOG: Register mimetype audio/x-pn-wav Gjs-Message: JS LOG: Register mimetype audio/x-pn-windows-acm Gjs-Message: JS LOG: Register mimetype audio/x-realaudio Gjs-Message: JS LOG: Register mimetype audio/x-real-audio Gjs-Message: JS LOG: Register mimetype audio/x-s3m Gjs-Message: JS LOG: Register mimetype audio/x-sbc Gjs-Message: JS LOG: Register mimetype audio/x-speex Gjs-Message: JS LOG: Register mimetype audio/x-stm Gjs-Message: JS LOG: Register mimetype audio/x-tta Gjs-Message: JS LOG: Register mimetype audio/x-wav Gjs-Message: JS LOG: Register mimetype audio/x-wavpack Gjs-Message: JS LOG: Register mimetype audio/x-vorbis Gjs-Message: JS LOG: Register mimetype audio/x-vorbis+ogg Gjs-Message: JS LOG: Register mimetype audio/x-xm Gjs-Message: JS LOG: Register mimetype application/x-flac Gjs-Message: JS LOG: Register mimetype image/tiff Gjs-Message: JS LOG: Register mimetype application/postscript Gjs-Message: JS LOG: Register mimetype application/x-bzpostscript Gjs-Message: JS LOG: Register mimetype application/x-gzpostscript Gjs-Message: JS LOG: Register mimetype image/x-eps Gjs-Message: JS LOG: Register mimetype image/x-bzeps Gjs-Message: JS LOG: Register mimetype image/x-gzeps Gjs-Message: JS LOG: Register mimetype application/x-ext-ps Gjs-Message: JS LOG: Register mimetype application/x-ext-eps Gjs-Message: JS LOG: Register mimetype application/pdf Gjs-Message: JS LOG: Register mimetype application/x-bzpdf Gjs-Message: JS LOG: Register mimetype application/x-gzpdf Gjs-Message: JS LOG: Register mimetype application/x-xzpdf Gjs-Message: JS LOG: Register mimetype application/x-ext-pdf Gjs-Message: JS LOG: Register mimetype application/oxps Gjs-Message: JS LOG: Register mimetype application/vnd.ms-xpsdocument Gjs-Message: JS LOG: Register mimetype application/x-dvi Gjs-Message: JS LOG: Register mimetype application/x-bzdvi Gjs-Message: JS LOG: Register mimetype application/x-gzdvi Gjs-Message: JS LOG: Register mimetype application/x-ext-dvi Gjs-Message: JS LOG: Register mimetype application/x-cbr Gjs-Message: JS LOG: Register mimetype application/x-cbz Gjs-Message: JS LOG: Register mimetype application/x-cb7 Gjs-Message: JS LOG: Register mimetype application/x-cbt Gjs-Message: JS LOG: Register mimetype application/x-ext-cbr Gjs-Message: JS LOG: Register mimetype application/x-ext-cbz Gjs-Message: JS LOG: Register mimetype application/x-ext-cb7 Gjs-Message: JS LOG: Register mimetype application/x-ext-cbt Gjs-Message: JS LOG: Register mimetype application/vnd.oasis.opendocument.text Gjs-Message: JS LOG: Register mimetype application/vnd.oasis.opendocument.presentation Gjs-Message: JS LOG: Register mimetype application/vnd.oasis.opendocument.spreadsheet Gjs-Message: JS LOG: Register mimetype application/msword Gjs-Message: JS LOG: Register mimetype application/vnd.ms-excel Gjs-Message: JS LOG: Register mimetype application/vnd.ms-powerpoint Gjs-Message: JS LOG: Register mimetype application/rtf Gjs-Message: JS LOG: Register mimetype application/x-font-ttf Gjs-Message: JS LOG: Register mimetype application/x-font-otf Gjs-Message: JS LOG: Register mimetype application/x-font-pcf Gjs-Message: JS LOG: Register mimetype application/x-font-type1 Gjs-Message: JS LOG: Register mimetype application/mxf Gjs-Message: JS LOG: Register mimetype application/ogg Gjs-Message: JS LOG: Register mimetype application/ram Gjs-Message: JS LOG: Register mimetype application/sdp Gjs-Message: JS LOG: Register mimetype application/vnd.apple.mpegurl Gjs-Message: JS LOG: Register mimetype application/vnd.ms-wpl Gjs-Message: JS LOG: Register mimetype application/vnd.rn-realmedia Gjs-Message: JS LOG: Register mimetype application/x-extension-m4a Gjs-Message: JS LOG: Register mimetype application/x-extension-mp4 Gjs-Message: JS LOG: Register mimetype application/x-flash-video Gjs-Message: JS LOG: Register mimetype application/x-matroska Gjs-Message: JS LOG: Register mimetype application/x-netshow-channel Gjs-Message: JS LOG: Register mimetype application/x-ogg Gjs-Message: JS LOG: Register mimetype application/x-quicktimeplayer Gjs-Message: JS LOG: Register mimetype application/x-shorten Gjs-Message: JS LOG: Register mimetype image/vnd.rn-realpix Gjs-Message: JS LOG: Register mimetype image/x-pict Gjs-Message: JS LOG: Register mimetype misc/ultravox Gjs-Message: JS LOG: Register mimetype text/x-google-video-pointer Gjs-Message: JS LOG: Register mimetype video/3gp Gjs-Message: JS LOG: Register mimetype video/3gpp Gjs-Message: JS LOG: Register mimetype video/dv Gjs-Message: JS LOG: Register mimetype video/divx Gjs-Message: JS LOG: Register mimetype video/fli Gjs-Message: JS LOG: Register mimetype video/flv Gjs-Message: JS LOG: Register mimetype video/mp2t Gjs-Message: JS LOG: Register mimetype video/mp4 Gjs-Message: JS LOG: Register mimetype video/mp4v-es Gjs-Message: JS LOG: Register mimetype video/mpeg Gjs-Message: JS LOG: Register mimetype video/msvideo Gjs-Message: JS LOG: Register mimetype video/ogg Gjs-Message: JS LOG: Register mimetype video/quicktime Gjs-Message: JS LOG: Register mimetype video/vivo Gjs-Message: JS LOG: Register mimetype video/vnd.divx Gjs-Message: JS LOG: Register mimetype video/vnd.mpegurl Gjs-Message: JS LOG: Register mimetype video/vnd.rn-realvideo Gjs-Message: JS LOG: Register mimetype video/vnd.vivo Gjs-Message: JS LOG: Register mimetype video/webm Gjs-Message: JS LOG: Register mimetype video/x-anim Gjs-Message: JS LOG: Register mimetype video/x-avi Gjs-Message: JS LOG: Register mimetype video/x-flc Gjs-Message: JS LOG: Register mimetype video/x-fli Gjs-Message: JS LOG: Register mimetype video/x-flic Gjs-Message: JS LOG: Register mimetype video/x-flv Gjs-Message: JS LOG: Register mimetype video/x-m4v Gjs-Message: JS LOG: Register mimetype video/x-matroska Gjs-Message: JS LOG: Register mimetype video/x-mpeg Gjs-Message: JS LOG: Register mimetype video/x-mpeg2 Gjs-Message: JS LOG: Register mimetype video/x-ms-asf Gjs-Message: JS LOG: Register mimetype video/x-ms-asx Gjs-Message: JS LOG: Register mimetype video/x-msvideo Gjs-Message: JS LOG: Register mimetype video/x-ms-wm Gjs-Message: JS LOG: Register mimetype video/x-ms-wmv Gjs-Message: JS LOG: Register mimetype video/x-ms-wmx Gjs-Message: JS LOG: Register mimetype video/x-ms-wvx Gjs-Message: JS LOG: Register mimetype video/x-nsv Gjs-Message: JS LOG: Register mimetype video/x-ogm+ogg Gjs-Message: JS LOG: Register mimetype video/x-theora+ogg Gjs-Message: JS LOG: Register mimetype video/x-totem-stream Gjs-Message: JS LOG: Register mimetype audio/x-pn-realaudio Gjs-Message: JS LOG: Register mimetype text/html Gjs-Message: JS LOG: Register mimetype image/x-gdkpixdata Gjs-Message: JS LOG: Register mimetype application/x-navi-animation Gjs-Message: JS LOG: Register mimetype image/bmp Gjs-Message: JS LOG: Register mimetype image/x-bmp Gjs-Message: JS LOG: Register mimetype image/x-MS-bmp Gjs-Message: JS LOG: Register mimetype image/gif Gjs-Message: JS LOG: Register mimetype image/x-icns Gjs-Message: JS LOG: Register mimetype image/x-icon Gjs-Message: JS LOG: Register mimetype image/x-ico Gjs-Message: JS LOG: Register mimetype image/x-win-bitmap Gjs-Message: JS LOG: Register mimetype image/jp2 Gjs-Message: JS LOG: Register mimetype image/jpeg2000 Gjs-Message: JS LOG: Register mimetype image/jpx Gjs-Message: JS LOG: Register mimetype image/jpeg Gjs-Message: JS LOG: Register mimetype image/x-pcx Gjs-Message: JS LOG: Register mimetype image/png Gjs-Message: JS LOG: Register mimetype image/x-portable-anymap Gjs-Message: JS LOG: Register mimetype image/x-portable-bitmap Gjs-Message: JS LOG: Register mimetype image/x-portable-graymap Gjs-Message: JS LOG: Register mimetype image/x-portable-pixmap Gjs-Message: JS LOG: Register mimetype image/x-quicktime Gjs-Message: JS LOG: Register mimetype image/qtif Gjs-Message: JS LOG: Register mimetype image/x-cmu-raster Gjs-Message: JS LOG: Register mimetype image/x-sun-raster Gjs-Message: JS LOG: Register mimetype image/x-tga Gjs-Message: JS LOG: Register mimetype image/tiff Gjs-Message: JS LOG: Register mimetype image/vnd.wap.wbmp Gjs-Message: JS LOG: Register mimetype image/x-xbitmap Gjs-Message: JS LOG: Register mimetype image/x-xpixmap Gjs-Message: JS LOG: Register mimetype image/x-adobe-dng Gjs-Message: JS LOG: Register mimetype image/x-canon-cr2 Gjs-Message: JS LOG: Register mimetype image/x-canon-crw Gjs-Message: JS LOG: Register mimetype image/x-nikon-nef Gjs-Message: JS LOG: Register mimetype image/x-olympus-orf Gjs-Message: JS LOG: Register mimetype image/x-pentax-pef Gjs-Message: JS LOG: Register mimetype image/x-sony-arw Gjs-Message: JS LOG: Register mimetype image/x-epson-erf Gjs-Message: JS LOG: Register mimetype image/x-minolta-mrw Gjs-Message: JS LOG: Register mimetype image/svg+xml Gjs-Message: JS LOG: Register mimetype image/svg Gjs-Message: JS LOG: Register mimetype image/svg-xml Gjs-Message: JS LOG: Register mimetype image/vnd.adobe.svg+xml Gjs-Message: JS LOG: Register mimetype text/xml-svg Gjs-Message: JS LOG: Register mimetype image/svg+xml-compressed Gjs-Message: JS LOG: Register mimetype text/plain Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 3c201140 (LWP 100834 initial thread)] 0x379e071e in memcpy () from /lib/libc.so.7 (gdb) bt #0 0x379e071e in memcpy () from /lib/libc.so.7 #1 0x377688a3 in g_memdup () from /usr/local/lib/libglib-2.0.so.0 #2 0x37045487 in g_type_module_register_type () from /usr/local/lib/libgobject-2.0.so.0 #3 0x33d8242f in ?? () from /usr/local/lib/libgjs.so.0 #4 0x37b158e7 in ?? () from /usr/local/lib/libmozjs-24.so #5 0x37b10979 in ?? () from /usr/local/lib/libmozjs-24.so #6 0x37b0acbe in ?? () from /usr/local/lib/libmozjs-24.so #7 0x37b15a3b in ?? () from /usr/local/lib/libmozjs-24.so #8 0x37bff686 in ?? () from /usr/local/lib/libmozjs-24.so #9 0x37b158e7 in ?? () from /usr/local/lib/libmozjs-24.so #10 0x37b10979 in ?? () from /usr/local/lib/libmozjs-24.so #11 0x37b0acbe in ?? () from /usr/local/lib/libmozjs-24.so #12 0x37b15a3b in ?? () from /usr/local/lib/libmozjs-24.so #13 0x37bff686 in ?? () from /usr/local/lib/libmozjs-24.so #14 0x37b158e7 in ?? () from /usr/local/lib/libmozjs-24.so #15 0x37b10979 in ?? () from /usr/local/lib/libmozjs-24.so #16 0x37b0acbe in ?? () from /usr/local/lib/libmozjs-24.so #17 0x37b15a3b in ?? () from /usr/local/lib/libmozjs-24.so #18 0x37b16082 in ?? () from /usr/local/lib/libmozjs-24.so #19 0x37c00377 in ?? () from /usr/local/lib/libmozjs-24.so #20 0x37b15f2a in ?? () from /usr/local/lib/libmozjs-24.so #21 0x37b0f236 in ?? () from /usr/local/lib/libmozjs-24.so ---Type <return> to continue, or q <return> to quit--- #22 0x37b0acbe in ?? () from /usr/local/lib/libmozjs-24.so #23 0x37b163c6 in ?? () from /usr/local/lib/libmozjs-24.so #24 0x37b164e3 in ?? () from /usr/local/lib/libmozjs-24.so #25 0x37bb5509 in JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned int, JS::Value*) () from /usr/local/lib/libmozjs-24.so #26 0x37bb565d in JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned int, JS::Value*) () from /usr/local/lib/libmozjs-24.so #27 0x33d6e39f in gjs_eval_with_scope () from /usr/local/lib/libgjs.so.0 #28 0x33d699e3 in ?? () from /usr/local/lib/libgjs.so.0 #29 0x33d68cc0 in ?? () from /usr/local/lib/libgjs.so.0 #30 0x37c454ed in ?? () from /usr/local/lib/libmozjs-24.so #31 0x37b1ce97 in ?? () from /usr/local/lib/libmozjs-24.so #32 0x37b0cd7b in ?? () from /usr/local/lib/libmozjs-24.so #33 0x37b0acbe in ?? () from /usr/local/lib/libmozjs-24.so #34 0x37b163c6 in ?? () from /usr/local/lib/libmozjs-24.so #35 0x37b164e3 in ?? () from /usr/local/lib/libmozjs-24.so #36 0x37bb5509 in JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned int, JS::Value*) () from /usr/local/lib/libmozjs-24.so #37 0x37bb565d in JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned int, JS::Value*) () ---Type <return> to continue, or q <return> to quit--- from /usr/local/lib/libmozjs-24.so #38 0x33d6e39f in gjs_eval_with_scope () from /usr/local/lib/libgjs.so.0 #39 0x33d699e3 in ?? () from /usr/local/lib/libgjs.so.0 #40 0x33d68cc0 in ?? () from /usr/local/lib/libgjs.so.0 #41 0x37c454ed in ?? () from /usr/local/lib/libmozjs-24.so #42 0x37b1ce97 in ?? () from /usr/local/lib/libmozjs-24.so #43 0x37b0cd7b in ?? () from /usr/local/lib/libmozjs-24.so #44 0x37b0acbe in ?? () from /usr/local/lib/libmozjs-24.so #45 0x37b163c6 in ?? () from /usr/local/lib/libmozjs-24.so #46 0x37b164e3 in ?? () from /usr/local/lib/libmozjs-24.so #47 0x37bb5509 in JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned int, JS::Value*) () from /usr/local/lib/libmozjs-24.so #48 0x37bb565d in JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, char const*, unsigned int, JS::Value*) () from /usr/local/lib/libmozjs-24.so #49 0x33d6e39f in gjs_eval_with_scope () from /usr/local/lib/libgjs.so.0 #50 0x33d66bb3 in gjs_context_eval () from /usr/local/lib/libgjs.so.0 #51 0x08048e8c in ?? () #52 0x08048fd7 in ?? () #53 0x08048f48 in ?? () #54 0x00000000 in ?? ()
*** Bug 196705 has been marked as a duplicate of this bug. ***
If I convert lang/gjs and lang/spidermonkey24 from USES=compiler:c11 to USES=compiler:c++11-lib, sushi builds and appears to run correctly without needing any modification. I can't totally verify functionality because I still can't start a GNOME session. On FreeBSD 8 and 9, this change causes gjs and spidermonkey24 to be build with gcc 4.8 from ports and link to its bundled copy of libstdc++ instead of being built with clang and linked the version of libstdc++ in base. Converting sushi to USES=compiler:c11 and forcing it to link to libstdc++ is the wrong approach because sushi appears to be entirely written in C and does not directly need a C++ library. The link errors were happening because libwebkitgtk-3.0 requires the newer libstdc++ from the gcc 4.8 port, but the other libraries were linked to the base libstdc++, and the version chosen by the linker when building sushi seems depend on the order of the libraries since it wasn't being forced to pick the gcc 4.8 port version by sushi. The libgraphite2 library is still linked to libstdc++ in base but doesn't seem to cause any problems.
A commit references this bug: Author: truckman Date: Wed Apr 29 22:13:11 UTC 2015 New revision: 385016 URL: https://svnweb.freebsd.org/changeset/ports/385016 Log: Convert lang/gjs and lang/spidermonkey24 to USES=compiler:c++11-lib to unbreak x11-fm/sushi on FreeBSD 8 and 9. lang/gjs and lang/spidermonkey24 are currently built with USES=compiler:c11. On FreeBSD 8, this causes them to be compiled with clang from ports, and on FreeBSD 9, they are built with clang from base. In both cases, they are linked to libstdc++ from base. These two ports are dependencies of x11-fm/sushi, which also depends on webkit-gtk3, which is compiled with USES=compiler:c++11-lib. On FreeBSD 8 and 9 webkit-gtk3 is compiled with gcc from ports and linked to its newer bundled libstdc++. Sushi is compiled with gcc from base and consists of pure C code, so it does not link directly to libstdc++. The build fails because ld links in the base version of libstdc++ before it links in webkit-gtk3, and then discovers that the newer libstdc++ ABI needed by webkit-gtk3 is missing. Converting sushi to USES=compiler:c++11-lib does not fix the build failure, and just changes the error message, probably because sushi does not directly link to any version of libstdc++. If sushi is further hacked to force it to link directly to the newer version of libstdc++ bundled with the gcc port, the build succeeds, but the resulting executable segfaults inside libstdc++ with a stack trace that traverses a bunch of functions contained in the gjs and spidermonkey24 libraries. Converting gjs and spidermonkey24 to USES=compiler:c++11-lib forces them to be compiled with the ports version of gcc on FreeBSD 8 and 9 and link to its bundled libstdc++ (and is a no-op on FreeBSD 10 and higher). Because these libraries are linked into sushi before webkit-gtk3, they load the version of libstdc++ which meets the requirements of webkit-gtk3, and the resulting executable is functional. No modifications to sushi are necessary. PR: 196078, 199434, 199435 Differential Revision: https://reviews.freebsd.org/D2396 Approved by: mat (mentor) MFH: 2015Q2 Changes: head/lang/gjs/Makefile head/lang/spidermonkey24/Makefile
A commit references this bug: Author: truckman Date: Wed Apr 29 23:50:29 UTC 2015 New revision: 385017 URL: https://svnweb.freebsd.org/changeset/ports/385017 Log: MFH: r385016 Convert lang/gjs and lang/spidermonkey24 to USES=compiler:c++11-lib to unbreak x11-fm/sushi on FreeBSD 8 and 9. This change causes these libraries to link to the newer version of libstdc++ bundled with lang/gcc. This causes rtld to load this version when it is linking sushi at runtime, which is needed by webkit-gtk3, another shared library linked into sushi. PR: 196078, 199434, 199435 Approved by: portmgr (delphij) Changes: _U branches/2015Q2/ branches/2015Q2/lang/gjs/Makefile branches/2015Q2/lang/spidermonkey24/Makefile