[Interest] Problems with Qt5's build form git (release branch) due to qtjsondb and a nasty build setup

Thiago Macieira thiago.macieira at intel.com
Wed Dec 11 17:01:45 CET 2013


On quarta-feira, 11 de dezembro de 2013 14:02:16, Jan Kundrát wrote:
> It does make a difference -- running `make` did not produce any more object
> files after the build failed for the first time (with plenty of targets
> still not being built), while `make all` did the right thing.

Did you clean in-between? Like I said, the build rules for first and all should 
be exactly the same. 

For the subdir-type Makefiles, they pass the argument to the subdir. That is, 
make first will run make first in each subdir, make all will run make all in 
each subdir. But the non-subdir type Makefiles have this:

first: all

So the targets are identical, the build product is identical and make's 
behaviour is identical too.

> Which is why I'm raising this here -- I propose to change the default
> target from "first" to "all".

I don't see the point.

We have an expression in Portuguese for that: "exchanging six for half a 
dozen". In English, we'd probably say "distinction without a difference". 

Or maybe "you're barking up the wrong tree": I don't think you have identified 
a problem nor a workaround here.

> As I said, I expect make to include the string "error" on at least one of
> the last three screens of scrollback. That is *not* the case on this
> system, which is why I'm complaining here.
> 
> > 	http://savannah.gnu.org/projects/make/
> 
> So what exactly would you do if you were the upstream maintainer and
> someone sent you this bugreport? "Please provide a small, self-reproducing
> example" would be the obvious response. I am celarly *not* in the position
> to do that; I do not know anything about how Qt builds itself, and quite
> frankly, I do not have any motivation to spend hours digging through the
> generated Makefiles to see what the difference in targets between "first"
> and "all" is.

This might do it:

all: target1 target2
target1:
	$(MAKE) sub-target1
target2:
	$(MAKE) sub-target2
sub-target1:
	sleep 1s; yes | sed 10000q
sub-target2:
	echo "Error"
	false

Run it with make -j2. It will run two sub-makes, one of which will run a 
command that will fail very quickly, the other will print 10000 lines of "y" 
killing your scrollback buffer.

When both sub-makes exit, the top-level make will exit too, with an error 
condition. What it should *also* do is print a message saying the build 
failed.

Make can't do anything if the actual "Error" message has scrolled out of view. 
That's out of scope for Make and for Qt.

> In the meanwhile, I've at least changed the wiki so that it talks about
> `make all` instead of just `make`.

It should not make a difference.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20131211/e7be180d/attachment.sig>


More information about the Interest mailing list