Priority: P2: Important
Affects Version/s: 5.0.0
Fix Version/s: None
Component/s: Build System
- Make sure you have a clean source tree at qtbase 10eb62b71b15189f3fc6f97a115743d3d0cf7b24 (e.g. git reset --hard 10eb62b71b15189f3fc6f97a115743d3d0cf7b24 && git clean -dqffx)
- ./configure -nokia-developer -verbose 2>&1 | tee configure.log
- Observe that configure succeeds.
- less tests/auto/Makefile
- Observe that tests/auto/Makefile only contains subtargets for v8, SUBTARGETS = sub-v8, and contains a Command indicating that the makefile was generated from v8.pro, e.g. # Command: /home/rmcgover/build/qt/qt5/qtbase/bin/qmake -spec ../../mkspecs/linux-g++ -o Makefile v8.pro
- expected behavior: tests/auto/Makefile was generated from tests/auto/auto.pro and contains one subtarget for each thing mentioned in tests/auto/auto.pro's SUBDIRS
- Only if unconvinced: do the build (make), and observe that no errors occurred, but no autotests other than tests/auto/v8 were built.
Some analysis of the bug:
- bug was triggered by the addition of v8 into qtbase, http://codereview.qt.nokia.com/3092
- this bug is the reason why http://pulse.test.qt.nokia.com:8080/browse/projects/QtBase%20master%20Integration/builds/498/ displays >9000 qpa autotests, while http://pulse.test.qt.nokia.com:8080/browse/projects/QtBase%20master%20Integration/builds/499/ displays exactly 4 qpa autotests. Build 499 is the build which integrated http://codereview.qt.nokia.com/3092 , at which point the build system started silently disabling almost all of the autotests in some configurations.
- the bug is in configure, and the behavior may be affected by:
- whether or not `fast' mode is enabled
- the order in which the `find' command prints filenames
- Basically, the bug is that configure incorrectly assumes that a .pro file located at foo/bar/something.pro will always result in a file named foo/bar/Makefile when qmake'd, which is false for various reasons, and in particular is false for tests/auto/*.pro . The "Creating makefiles" section is the part with the bug. Read the logic and you will see that, if a directory contains multiple .pro files, qmake will be invoked in such a way that the different projects may clobber each other's makefiles.
I've attached my configure log, notice it says
It skipped running qmake over auto.pro because tests/auto/Makefile already existed from v8.pro . Other incidences of "skipping" in the log are also suspicious.
|For Gerrit Dashboard: QTBUG-21168|
|3878,1||Make sure tests/auto/v8.pro doesn't clobber auto.pro||master||qt/qtbase||Status: MERGED||+2||0|
|17135,1||Fixed tst_qlogging app silently not compiled in some -fast builds.||master||qt/qtbase||Status: MERGED||+2||0|