Opened 7 years ago

Closed 7 years ago

#42675 closed defect (worksforme)

akonadi: build fails with Boost linking errors

Reported by: Polyergic (Shad Sterling) Owned by: NicosPavlov
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: Cc:
Port: akonadi

Description

akonadi-1.11.0_0+docs+mysql56.darwin_13.x86_64 on OSX 10.9.1

looks like it succeeds at building akonadiprivate_automoc.cpp.o (line 10367) and then fails at linking libakonadiprivate.a (line 10370)

:info:build Building CXX object server/CMakeFiles/akonadiprivate.dir/akonadiprivate_automoc.cpp.o
:info:build cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build/server && /usr/bin/clang++   -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_DEBUG_OUTPUT -DQT_NO_KEYWORDS -DQT_SQL_LIB -DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS -DQT_XML_LIB -pipe -Os -arch x86_64  -std=c++0x -Wnon-virtual-dtor -Wundef -Wcast-align -Wchar-subscripts -Wall -Wextra -Wpointer-arith -Wformat-security -fno-check-new -fno-common -fexceptions -DMYSQLD_EXECUTABLE="\"/opt/local/lib/mysql55/bin/mysqld\"" -DNDEBUG -arch x86_64 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build/server -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/akonadi-1.11.0/server -isystem /opt/local/include -isystem /opt/local/include/QtGui -isystem /opt/local/include/QtCore -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/akonadi-1.11.0 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build -I/opt/local/include/QtDesigner -I/opt/local/include/QtDeclarative -I/opt/local/include/QtScriptTools -I/opt/local/include/QtDBus -I/opt/local/include/QtXml -I/opt/local/include/QtSql -I/opt/local/include/QtOpenGL -I/opt/local/include/QtMultimedia -I/opt/local/include/QtNetwork -I/opt/local/include/phonon -I/opt/local/include/QtXmlPatterns -I/opt/local/include/QtWebKit -I/opt/local/include/QtHelp -I/opt/local/include/QtUiTools -I/opt/local/include/QtTest -I/opt/local/include/QtScript -I/opt/local/include/QtSvg -I/opt/local/include/Qt3Support -I/opt/local/share/qt4/mkspecs/default -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/akonadi-1.11.0/libs -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build/libs -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/akonadi-1.11.0/server/src -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/akonadi-1.11.0/server/src/handler -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/akonadi-1.11.0/server/src/nepomuk -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/akonadi-1.11.0/server/tests -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/akonadi-1.11.0/shared    -o CMakeFiles/akonadiprivate.dir/akonadiprivate_automoc.cpp.o -c /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build/server/akonadiprivate_automoc.cpp
:info:build clang: warning: argument unused during compilation: '-fno-check-new'
:info:build Linking CXX static library ../lib/libakonadiprivate.a
:info:build cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build/server && /opt/local/bin/cmake -P CMakeFiles/akonadiprivate.dir/cmake_clean_target.cmake
:info:build cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build/server && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/akonadiprivate.dir/link.txt --verbose=1
:info:build /usr/bin/ar cr ../lib/libakonadiprivate.a CMakeFiles/akonadiprivate.dir/src/akonadi.cpp.o CMakeFiles/akonadiprivate.dir/src/akonadiconnection.cpp.o CMakeFiles/akonadiprivate.dir/src/clientcapabilities.cpp.o CMakeFiles/akonadiprivate.dir/src/clientcapabilityaggregator.cpp.o CMakeFiles/akonadiprivate.dir/src/handler.cpp.o CMakeFiles/akonadiprivate.dir/src/handlerhelper.cpp.o CMakeFiles/akonadiprivate.dir/src/intervalcheck.cpp.o CMakeFiles/akonadiprivate.dir/src/response.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/akappend.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/append.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/copy.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/colcopy.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/colmove.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/create.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/capability.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/delete.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/expunge.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/fetch.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/fetchhelper.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/link.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/list.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/login.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/logout.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/modify.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/move.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/remove.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/resourceselect.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/scope.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/search.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/searchhelper.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/searchpersistent.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/select.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/subscribe.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/status.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/store.cpp.o CMakeFiles/akonadiprivate.dir/src/handler/transaction.cpp.o CMakeFiles/akonadiprivate.dir/src/search/agentsearchengine.cpp.o CMakeFiles/akonadiprivate.dir/src/search/searchmanager.cpp.o CMakeFiles/akonadiprivate.dir/src/search/xesamsearchengine.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/collectionqueryhelper.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/entity.cpp.o CMakeFiles/akonadiprivate.dir/entities.cpp.o CMakeFiles/akonadiprivate.dir/akonadischema.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/datastore.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbconfig.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbconfigmysql.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbconfigmysqlembedded.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbconfigpostgresql.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbconfigsqlite.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbconfigvirtuoso.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbexception.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbinitializer.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbinitializer_p.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbintrospector.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbintrospector_impl.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbupdater.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/dbtype.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/itemqueryhelper.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/itemretriever.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/itemretrievalmanager.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/itemretrievalthread.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/itemretrievaljob.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/notificationcollector.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/query.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/querybuilder.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/querycache.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/queryhelper.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/schematypes.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/transaction.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/parthelper.cpp.o CMakeFiles/akonadiprivate.dir/src/storage/storagedebugger.cpp.o CMakeFiles/akonadiprivate.dir/src/tracer.cpp.o CMakeFiles/akonadiprivate.dir/src/utils.cpp.o CMakeFiles/akonadiprivate.dir/src/dbustracer.cpp.o CMakeFiles/akonadiprivate.dir/src/filetracer.cpp.o CMakeFiles/akonadiprivate.dir/src/notificationmanager.cpp.o CMakeFiles/akonadiprivate.dir/src/notificationsource.cpp.o CMakeFiles/akonadiprivate.dir/src/resourcemanager.cpp.o CMakeFiles/akonadiprivate.dir/src/cachecleaner.cpp.o CMakeFiles/akonadiprivate.dir/src/xesamsearch.cpp.o CMakeFiles/akonadiprivate.dir/src/debuginterface.cpp.o CMakeFiles/akonadiprivate.dir/src/imapstreamparser.cpp.o CMakeFiles/akonadiprivate.dir/src/preprocessorinstance.cpp.o CMakeFiles/akonadiprivate.dir/src/preprocessormanager.cpp.o CMakeFiles/akonadiprivate.dir/src/storagejanitor.cpp.o CMakeFiles/akonadiprivate.dir/src/nepomuksearch.cpp.o CMakeFiles/akonadiprivate.dir/src/search/nepomuksearchengine.cpp.o CMakeFiles/akonadiprivate.dir/src/nepomuk/dbusoperators.cpp.o CMakeFiles/akonadiprivate.dir/src/nepomuk/queryserviceclient.cpp.o CMakeFiles/akonadiprivate.dir/src/nepomuk/dbusconnectionpool.cpp.o CMakeFiles/akonadiprivate.dir/src/nepomuk/result.cpp.o CMakeFiles/akonadiprivate.dir/queryserviceinterface.cpp.o CMakeFiles/akonadiprivate.dir/queryinterface.cpp.o CMakeFiles/akonadiprivate.dir/tracernotificationadaptor.cpp.o CMakeFiles/akonadiprivate.dir/traceradaptor.cpp.o CMakeFiles/akonadiprivate.dir/notificationmanageradaptor.cpp.o CMakeFiles/akonadiprivate.dir/serveradaptor.cpp.o CMakeFiles/akonadiprivate.dir/notificationsourceadaptor.cpp.o CMakeFiles/akonadiprivate.dir/storagedebuggeradaptor.cpp.o CMakeFiles/akonadiprivate.dir/debuginterfaceadaptor.cpp.o CMakeFiles/akonadiprivate.dir/resourcemanageradaptor.cpp.o CMakeFiles/akonadiprivate.dir/preprocessormanageradaptor.cpp.o CMakeFiles/akonadiprivate.dir/agentmanagerinterface.cpp.o CMakeFiles/akonadiprivate.dir/resourceinterface.cpp.o CMakeFiles/akonadiprivate.dir/preprocessorinterface.cpp.o CMakeFiles/akonadiprivate.dir/agentcontrolinterface.cpp.o CMakeFiles/akonadiprivate.dir/xesaminterface.cpp.o CMakeFiles/akonadiprivate.dir/qrc_akonadidb.cxx.o CMakeFiles/akonadiprivate.dir/akonadiprivate_automoc.cpp.o
:info:build /usr/bin/ranlib ../lib/libakonadiprivate.a
:info:build make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build'
:info:build /opt/local/bin/cmake -E cmake_progress_report /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build/CMakeFiles  23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
:info:build [ 57%] Built target akonadiprivate
:info:build make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build'
:info:build make: *** [all] Error 2
:info:build make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build'
:info:build Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/work/build" && /usr/bin/make -j4 -w all 
:info:build Exit code: 2
:error:build org.macports.build for port akonadi returned: command execution failed
:debug:build Error code: CHILDSTATUS 78463 2
:debug:build Backtrace: command execution failed
    while executing
"system -nice 0 $fullcmdstring"
    ("eval" body line 1)
    invoked from within
"eval system $notty $nice \$fullcmdstring"
    invoked from within
"command_exec build"
    (procedure "portbuild::build_main" line 8)
    invoked from within
"$procedure $targetname"
:info:build Warning: targets not executed for akonadi: org.macports.activate org.macports.build org.macports.destroot org.macports.install
:notice:build Please see the log file for port akonadi for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_akonadi/akonadi/main.log

Attachments (1)

main.log (1.4 MB) - added by Polyergic (Shad Sterling) 7 years ago.

Download all attachments as: .zip

Change History (6)

Changed 7 years ago by Polyergic (Shad Sterling)

Attachment: main.log added

comment:1 Changed 7 years ago by larryv (Lawrence Velázquez)

Owner: changed from macports-tickets@… to nicos@…
Summary: akonadi build failureakonadi: build fails with Boost linking errors

The snippet you pasted contains no failing commands; you’re getting mixed up because of the parallel build. The actual errors occur farther up in the log; search for “linker command failed”.

comment:2 Changed 7 years ago by Polyergic (Shad Sterling)

Ah, I see it's not finding some symbols in boost. The active boost is boost @1.55.0_1+gcc49+no_single+no_static+python33+regex_match_extra.

Is this actually a bug in boost, for not providing those symbols? I have three ports active that are dependents of boost: LyX @2.0.6_0+python27, OpenSceneGraph @3.2.0_0, and strigi @0.7.8_1+docs. Are they unaffected because they just don't use those particular symbols?

I doubt it's related, but I recently filed bug #42497 against boost - boost build fails with variant +universal.

comment:3 Changed 7 years ago by NicosPavlov

For what I tested, the errors are coming from the fact you are using different compilers. You have requested the +gcc49 variant for boost, while the default compiler for akonadi is clang. When running

sudo port install akonadi configure.compiler=macports-gcc-4.9

it then compiles fine. It seems thus required to stay consistent with compilers, so that dependents may also have to be built with gcc49, or boost would have to be built with clang. Considering the issues with different underlying libraries (libc++ vs. libstdc++) employed by different compilers which has been identified when Mavericks came out, it is unlikely this issue could be solved easily.

comment:4 in reply to:  3 ; Changed 7 years ago by Polyergic (Shad Sterling)

If it is required to use the same compiler, shouldn't akonadi's dependance on boost specify one of boost's 24 compiler-specifying variants? If akonadi compiles without error on other compilers, it could also have compiler-specifying variants; is the best practice to define variants or to have the user specify configure.compiler?

I reinstalled boost with clang, +clang35 and +clang34 failed with different incompatible type errors, +clang33 worked; with boost +clang33 installed, akonadi built & installed successfully.

comment:5 in reply to:  4 Changed 7 years ago by NicosPavlov

Resolution: worksforme
Status: newclosed

Replying to me@…:

If it is required to use the same compiler, shouldn't akonadi's dependance on boost specify one of boost's 24 compiler-specifying variants?

Requiring a specific variant of a port is not supported: #126.

If akonadi compiles without error on other compilers, it could also have compiler-specifying variants; is the best practice to define variants or to have the user specify configure.compiler? I reinstalled boost with clang, +clang35 and +clang34 failed with different incompatible type errors, +clang33 worked; with boost +clang33 installed, akonadi built & installed successfully.

Variants are usually used when specific configuration flags are required, while configure.compiler is the basic option to select a compiler. But first, the usually simplest solution is to use the default behaviour, which is to not manually specify variants, unless specifically needed. In the case you describe, building boost with +clang33 is close to default, as apple clang on Mavericks is also version 3.3. In principle, building boost without specifying compiler variants should lead to a similar result.

I'll consider this as a worksforme for now, as the build worked, and the underlying issue is related to tickets in Macports which won't be fixed in the near future.

Note: See TracTickets for help on using tickets.