Details
Description
The manifestation currently looks like this:
ERROR: Conflicting rules for producing Host-Qt5-stable-debug/.obj/Debugger/debuggerprotocol.cpp.o [obj] while trying to apply: qbs-build/share/qbs/modules/cpp/GenericGCC.qbs:286:18 [objc, objcpp, asm_cpp, asm, c, cpp] -> [obj] was already defined in: qbs-build/share/qbs/modules/cpp/GenericGCC.qbs:286:18 [objc, objcpp, asm_cpp, asm, c, cpp] -> [obj] The input artifacts are: qtcreator-master/src/plugins/debugger/debuggerprotocol.cpp, qtcreator-master/src/plugins/debugger/debuggerprotocol.cpp
Running in verbose mode shows that the build graph is already corrupted at this point:
DEBUG: Sanity checking artifact 'debuggerprotocol.cpp.o'
TRACE: The transformer output children are:
TRACE: debuggerprotocol.h
TRACE: debuggerprotocol.h
TRACE: debuggerprotocol.cpp
TRACE: debuggerprotocol.cpp
TRACE: debuggerprotocol.cpp
TRACE: The transformer inputs are:
TRACE: debuggerprotocol.cpp
As one can see, there are three different artifacts for the source file debuggerprotocol.cpp, which leads to the error message later.
This is hard to reproduce (but most likely related to change tracking), so we have to solve it incrementally. As a first measure, I will tighten the sanity checks to catch this condition earlier. If we are lucky, hitting that new assertion will lead us right to the problem without a further indirection.