BIC changes and ninja

Aleix Pol aleixpol at kde.org
Thu Jul 2 23:14:32 UTC 2015


On Thu, Jul 2, 2015 at 10:58 PM, Milian Wolff <mail at milianw.de> wrote:
> On Thursday 02 July 2015 11:09:34 Aleix Pol wrote:
>> On Thu, Jul 2, 2015 at 9:30 AM, Milian Wolff <mail at milianw.de> wrote:
>> > Hey all, esp. Aleix.
>> >
>> > I'm using ninja for a while now and really like the performance I get. But
>> > today / yesterday night I hit a really bad issue. In
>> > kdevplatform:8fc6453bfaf6d85e51071a0bd460701c63e95df7 I introduced a
>> > binary
>> > incompatible change. I used that then e.g. for the feature in
>> > kdevelop:28cc1e5fd43ec4f21477251e4104e3a42b221640, and the unit tests
>> > worked fine. But running the real KDevelop I saw tons of strange crashes.
>> > Debugging it, I saw that quite some plugins, such as the CMakeBuilder,
>> > did not get recompiled by ninja and thus still referenced the old, now
>> > broken interface of the IPluginController. This lead to
>> > loadPlugin(QString) being called instead of pluginForExtension(...),
>> > causing all kinds of havoc. I now make cleaned both kdevplatform and
>> > kdevelop and build from scratch - lo and behold, it works properly now...
>> >
>> > But this is really unacceptable to me. With make, I never had any such
>> > issues. Have anyone of you noticed similar behavior with ninja? Or is
>> > maybe something else going one on my machine? Also note that I use an
>> > ext4 file system mounted with noatime (it's on a SSD) - could that be the
>> > reason?
>> >
>> > Can anyone reproduce the above issue maybe? Just checkout the latest
>> > master
>> > and build, then see whether it works or crashes in strange places, or
>> > asserts when not finding some plugin.
>>
>> I've had to trigger updates at some point when modifying other
>> projects. If you know how to reproduce it, maybe it would be worth
>> reporting as a bug in cmake...
>
> Another thing I've now noticed in two projects is something like this:
>
> [14/22 Linking CXX shared library src/libKF5PimTextEdit.so.4.84.0
> FAILED: : && /usr/bin/clang++  -fPIC -pipe -DQT_STRICT_ITERATORS -
> DQURL_NO_CAST_FROM_STRING -DQT_NO_HTTP -DQT_NO_FTP -Wformat -Werror=format-
> security -Werror=return-type -Wno-variadic-macros -std=c++0x -fno-exceptions -
> Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -
> Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-
> type -g  -Wl,--no-undefined -Wl,--fatal-warnings -Wl,--enable-new-dtags -
> shared -Wl,-soname,libKF5PimTextEdit.so.5 -o src/libKF5PimTextEdit.so.4.84.0
> src/CMakeFiles/KF5PimTextEdit.dir/emailquotehighlighter.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/emoticontexteditaction.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/emoticontexteditselector.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/htmlhighlighter.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/inserthtmldialog.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/insertimagedialog.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/insertimagewidget.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/inserttabledialog.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/selectspecialchardialog.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/tableactionmenu.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/tablecellformatdialog.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/tableformatdialog.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/textedit.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/textutils.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/inserttablewidget.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/emailquotedecorator.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/syntaxhighlighterbase.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/texteditorcompleter.cpp.o
> src/CMakeFiles/KF5PimTextEdit.dir/KF5PimTextEdit_automoc.cpp.o
> /home/milian/projects/compiled/kf5/lib64/libKF5TextWidgets.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5Emoticons.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5SonnetUi.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5KIOWidgets.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5KIOCore.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5Service.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5JobWidgets.so.5.12.0
> /usr/lib/libQt5Network.so.5.4.2
> /home/milian/projects/compiled/kf5/lib64/libKF5Completion.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5Codecs.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5WidgetsAddons.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5I18n.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5ConfigCore.so.5.12.0
> /home/milian/projects/compiled/kf5/lib64/libKF5CoreAddons.so.5.12.0
> /usr/lib/libQt5Widgets.so.5.4.2 /usr/lib/libQt5Gui.so.5.4.2
> /usr/lib/libQt5Core.so.5.4.2 -Wl,-
> rpath,/home/milian/projects/compiled/kf5/lib64: -Wl,-rpath-
> link,/home/milian/projects/compiled/kf5/lib64 && :
> src/CMakeFiles/KF5PimTextEdit.dir/syntaxhighlighterbase.cpp.o: In function
> `SyntaxHighlighterBase':
> /home/milian/projects/kf5/src/kde/pim/kpimtextedit/src/syntaxhighlighterbase.cpp:25:
> undefined reference to `vtable for KPIMTextEdit::SyntaxHighlighterBase'
> src/CMakeFiles/KF5PimTextEdit.dir/syntaxhighlighterbase.cpp.o: In function
> `~SyntaxHighlighterBase':
> /home/milian/projects/kf5/src/kde/pim/kpimtextedit/src/syntaxhighlighterbase.cpp:30:
> undefined reference to `vtable for KPIMTextEdit::SyntaxHighlighterBase'
> src/CMakeFiles/KF5PimTextEdit.dir/texteditorcompleter.cpp.o: In function
> `TextEditorCompleter':
> /home/milian/projects/kf5/src/kde/pim/kpimtextedit/src/texteditorcompleter.cpp:150:
> undefined reference to `vtable for KPIMTextEdit::TextEditorCompleter'
> /home/milian/projects/kf5/src/kde/pim/kpimtextedit/src/texteditorcompleter.cpp:157:
> undefined reference to `vtable for KPIMTextEdit::TextEditorCompleter'
> src/CMakeFiles/KF5PimTextEdit.dir/texteditorcompleter.cpp.o: In function
> `~TextEditorCompleter':
> /home/milian/projects/kf5/src/kde/pim/kpimtextedit/src/texteditorcompleter.cpp:162:
> undefined reference to `vtable for KPIMTextEdit::TextEditorCompleter'
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
>
> i.e. it looks as if moc did not run properly. Rerunning ninja and the error
> goes away... Have you ever seen anything like that as well?
> --
> Milian Wolff
> mail at milianw.de
> http://milianw.de

Re-running ninja hasn't ever solved such things for me. Re-running
cmake has, though.

Aleix


More information about the KDevelop-devel mailing list