Re: patch to support output synchronization under -j

2011-05-03 Thread Stefano Lattarini
Hello Paul. Just my 2 cents regarding Automake ... On Tuesday 03 May 2011, Paul Smith wrote: The other thing I was thinking is that this feature might want to be enabled via a command-line argument. All the complex makefiles generated by automake, etc. for example cannot take advantage of

Re: patch to support output synchronization under -j

2011-05-03 Thread Paul Smith
On Tue, 2011-05-03 at 09:48 +0200, Stefano Lattarini wrote: The other thing I was thinking is that this feature might want to be enabled via a command-line argument. All the complex makefiles generated by automake, etc. for example cannot take advantage of this if you have to modify every

Re: patch to support output synchronization under -j

2011-05-03 Thread Eli Zaretskii
From: Paul Smith psm...@gnu.org Cc: bug-make@gnu.org Date: Tue, 03 May 2011 01:33:38 -0400 But, I've been playing with a makefile that I have, that builds a complete suite of GCC tools from scratch. I'm building them on larger systems with -j5 or -j10 (not much compared to what some are

Re: patch to support output synchronization under -j

2011-05-03 Thread David Boyce
On Tue, May 3, 2011 at 1:33 AM, Paul Smith psm...@gnu.org wrote: I wonder if we can figure out a way to make this work better, as Eli asked.  Can we work out a way to handle normal rules (rules with + or $(MAKE)) and sub-make rules differently, so that output from normal rules wasn't collected

Re: patch to support output synchronization under -j

2011-05-03 Thread Tim Murphy
On 3 May 2011 17:39, Eli Zaretskii e...@gnu.org wrote: That was exactly the scenario I had in mind when I wrote my message. Recursive Makefiles are the rule nowadays, at least with GNU software, and the top-level Makefile does little more than launch a make all job in each subdirectory.  GCC

Re: patch to support output synchronization under -j

2011-05-03 Thread Paul Smith
On Tue, 2011-05-03 at 13:00 -0400, David Boyce wrote: The other thing I was thinking is that this feature might want to be enabled via a command-line argument. All the complex makefiles generated by automake, etc. for example cannot take advantage of this if you have to modify every

Re: patch to support output synchronization under -j

2011-05-03 Thread David Boyce
On Tue, May 3, 2011 at 1:20 PM, Paul Smith psm...@gnu.org wrote: In that way, SYNC is a feature that the makefile USER selects, or not, and not something the makefile AUTHOR would choose. Does that make sense? It makes perfect sense when you put it that way and I agree wrt to both .ONESHELL

Re: patch to support output synchronization under -j

2011-05-02 Thread Paul Smith
On Fri, 2011-04-15 at 16:57 +0300, Eli Zaretskii wrote: Date: Fri, 15 Apr 2011 12:43:53 +0100 From: Tim Murphy tnmur...@gmail.com I think it's an inevitable consequence that if you have a long-running task then the output from it won't appear until it has completely finished and you

Re: patch to support output synchronization under -j

2011-04-21 Thread David Boyce
I've filed this as an enhancement request (https://savannah.gnu.org/bugs/index.php?33138) for better tracking. Unfortunately there's a typo in the headline which I can't fix. David ___ Bug-make mailing list Bug-make@gnu.org

Re: patch to support output synchronization under -j

2011-04-19 Thread David Boyce
Here's an updated version which is much closer to done at least from my POV. I believe most of the requested improvements are there, the semaphore code is factored, there's even a start on documentation. Despite what was said about ifdefs before, the entire patch is currently enclosed in #ifdef

Re: patch to support output synchronization under -j

2011-04-19 Thread David Boyce
On Tue, Apr 19, 2011 at 10:13 AM, Edward Welbourne e...@opera.com wrote: How about if we introduce a variable that can be set for specific targets (using the target-specific variable mechanism).  Targets that set this variable to some predefined value will not have their output redirected, so

Re: patch to support output synchronization under -j

2011-04-19 Thread David Boyce
On Tue, Apr 19, 2011 at 11:06 AM, David Boyce david.s.bo...@gmail.com wrote: Here's an updated version which is much closer to done Ignore this version, I found a bug :-( David ___ Bug-make mailing list Bug-make@gnu.org

Re: patch to support output synchronization under -j

2011-04-15 Thread Tim Murphy
Right, of course :-) That is the obvious reason for using files, thanks! I was biased against writing things to disc which is probably silly, because it's probably not slow when compared to the size of the job that's running. Stdout and stderr will now all be stdout, BTW (no matter what method

Re: patch to support output synchronization under -j

2011-04-15 Thread Eli Zaretskii
Date: Thu, 14 Apr 2011 16:30:42 -0400 From: David Boyce david.s.bo...@gmail.com Cc: Eli Zaretskii e...@gnu.org, bug-make@gnu.org I don't know why this hasn't occurred to me or the authors of similar programs before, but it appears to be possible to get a lock on any writable file

Re: patch to support output synchronization under -j

2011-04-15 Thread Tim Murphy
I replied to this without using reply all and I apologise. :-) The order of the output from separate recipes may be anything - depends on how make schedules them but at least the output from any particular recipe will be grouped together and not mixed with the output from others, hence allowing

Re: patch to support output synchronization under -j

2011-04-15 Thread Paul Smith
On Fri, 2011-04-15 at 07:18 +0100, Tim Murphy wrote: Right, of course :-) That is the obvious reason for using files, thanks! I was biased against writing things to disc which is probably silly, because it's probably not slow when compared to the size of the job that's running. I think you

Re: patch to support output synchronization under -j

2011-04-15 Thread David Boyce
On Fri, Apr 15, 2011 at 6:45 AM, Eli Zaretskii e...@gnu.org wrote: I lack the higher-level picture.  Can you describe in a few words how will this work in a running Make?  I don't mean the details of how files are locked and unlocked (I understand that part), I mean the larger picture, like

Re: patch to support output synchronization under -j

2011-04-15 Thread Eli Zaretskii
Date: Fri, 15 Apr 2011 12:43:53 +0100 From: Tim Murphy tnmur...@gmail.com Cc: David Boyce david.s.bo...@gmail.com, bug-make@gnu.org I think it's an inevitable consequence that if you have a long-running task then the output from it won't appear until it has completely finished and you

Re: patch to support output synchronization under -j

2011-04-15 Thread David Boyce
On Thu, Apr 14, 2011 at 4:30 PM, David Boyce david.s.bo...@gmail.com wrote: I don't know why this hasn't occurred to me or the authors of similar programs before, but it appears to be possible to get a lock on any writable file descriptor - for instance stdout or stderr, or one of the

Re: patch to support output synchronization under -j

2011-04-15 Thread Stefano Lattarini
Hello everybody. On Friday 15 April 2011, Eli Zaretskii wrote: Btw, there will be other side effects, at least on non-Posix platforms, due to the fact that stuff that was supposed to go to the screen is redirected to a file instead. Some programs sense that and behave differently, e.g. with

Re: patch to support output synchronization under -j

2011-04-15 Thread David Boyce
On Fri, Apr 15, 2011 at 9:48 AM, Eli Zaretskii e...@gnu.org wrote: So effectively, whenever a job finishes, its parent Make takes the semaphore, outputs all of the output of that job to the screen, then releases the semaphore, is that right? Yes, exactly. And how do you communicate the name

Re: patch to support output synchronization under -j

2011-04-15 Thread Eli Zaretskii
Date: Fri, 15 Apr 2011 10:37:13 -0400 From: David Boyce david.s.bo...@gmail.com Cc: psm...@gnu.org, bug-make@gnu.org Finally, wouldn't it be a potential problem top inherit so many handles to subordinate processes (2 for each running job)?  We could run out of available handles in

Re: patch to support output synchronization under -j

2011-04-15 Thread David Boyce
On Fri, Apr 15, 2011 at 11:09 AM, Eli Zaretskii e...@gnu.org wrote: But this new option uses up 2 additional files per job, doesn't it? One or two, as discussed elsewhere in this thread. Each sub-Make inherits all the file descriptors of all its parents, grandparents, etc.  If a sub-Make was

Re: patch to support output synchronization under -j

2011-04-15 Thread Eli Zaretskii
Date: Fri, 15 Apr 2011 12:39:56 -0400 From: David Boyce david.s.bo...@gmail.com Cc: psm...@gnu.org, bug-make@gnu.org On Fri, Apr 15, 2011 at 11:09 AM, Eli Zaretskii e...@gnu.org wrote: But this new option uses up 2 additional files per job, doesn't it? One or two, as discussed elsewhere

Re: patch to support output synchronization under -j

2011-04-15 Thread Tim Murphy
What about the other issue: with the fact that output from a recipe is only shown when the entire recipe is done. I think this is a serious drawback, at least in some use cases. Can anything be done about that? The only thing that I can imagine is that one would allow one recipe to have the

Re: patch to support output synchronization under -j

2011-04-15 Thread David Boyce
On Fri, Apr 15, 2011 at 1:03 PM, Eli Zaretskii e...@gnu.org wrote: Can Make be invoked with its stdout closed by the parent process?  If it is, will this still work? I've tried to code it such that if anything goes wrong setting up the sync, of which a closed stdout would be one example, it

Re: patch to support output synchronization under -j

2011-04-15 Thread Howard Chu
Eli Zaretskii wrote: Date: Fri, 15 Apr 2011 10:37:13 -0400 From: David Boycedavid.s.bo...@gmail.com it's more a question of how many parallel jobs a given make process is managing since limits on file handles/descriptors are per process. What about people who use make -j without limits?

Re: patch to support output synchronization under -j

2011-04-15 Thread Paul Smith
On Fri, 2011-04-15 at 19:54 +0300, Eli Zaretskii wrote: What about the other issue: with the fact that output from a recipe is only shown when the entire recipe is done. I think this is a serious drawback, at least in some use cases. Can anything be done about that? I don't see how. The

Re: patch to support output synchronization under -j

2011-04-15 Thread Tim Murphy
I wish I could play with one of those Connection machines and find out about the bottlenecks at j=0.25*cpus that I can see on some machines :-( Regards, Tim On 15 April 2011 19:32, Howard Chu h...@highlandsun.com wrote: Eli Zaretskii wrote: Date: Fri, 15 Apr 2011 10:37:13 -0400 From: David

Re: patch to support output synchronization under -j

2011-04-15 Thread Eli Zaretskii
From: Paul Smith psm...@gnu.org CC: David Boyce david.s.bo...@gmail.com, bug-make@gnu.org Date: Fri, 15 Apr 2011 14:53:52 -0400 On Fri, 2011-04-15 at 19:54 +0300, Eli Zaretskii wrote: What about the other issue: with the fact that output from a recipe is only shown when the entire recipe

Re: patch to support output synchronization under -j

2011-04-14 Thread David Boyce
On Tue, Apr 12, 2011 at 1:46 PM, David Boyce david.s.bo...@gmail.com wrote: So I've made a proof-of-concept patch against 3.82.90 which seems to work without that overhead and my question is, would this be of interest towards 3.83? Ping? The original patch attachment was made by hand using

Re: patch to support output synchronization under -j

2011-04-14 Thread Paul Smith
On Thu, 2011-04-14 at 11:01 -0400, David Boyce wrote: On Tue, Apr 12, 2011 at 1:46 PM, David Boyce david.s.bo...@gmail.com wrote: So I've made a proof-of-concept patch against 3.82.90 which seems to work without that overhead and my question is, would this be of interest towards 3.83?

Re: patch to support output synchronization under -j

2011-04-14 Thread Eli Zaretskii
From: Paul Smith psm...@gnu.org Date: Thu, 14 Apr 2011 13:29:09 -0400 On Thu, 2011-04-14 at 11:01 -0400, David Boyce wrote: On Tue, Apr 12, 2011 at 1:46 PM, David Boyce david.s.bo...@gmail.com wrote: So I've made a proof-of-concept patch against 3.82.90 which seems to work without

Re: patch to support output synchronization under -j

2011-04-14 Thread David Boyce
On Thu, Apr 14, 2011 at 1:29 PM, Paul Smith psm...@gnu.org wrote: I've looked at it and as a concept I don't have too many issues with it Thanks. One example: I think saving stdout and stderr to different files and then printing them separately is problematic; consider if your recipe prints

Re: patch to support output synchronization under -j

2011-04-14 Thread Paul Smith
On Thu, 2011-04-14 at 20:48 +0300, Eli Zaretskii wrote: From: Paul Smith psm...@gnu.org Date: Thu, 14 Apr 2011 13:29:09 -0400 On Thu, 2011-04-14 at 11:01 -0400, David Boyce wrote: On Tue, Apr 12, 2011 at 1:46 PM, David Boyce david.s.bo...@gmail.com wrote: So I've made a

Re: patch to support output synchronization under -j

2011-04-14 Thread David Boyce
On Thu, Apr 14, 2011 at 1:48 PM, Eli Zaretskii e...@gnu.org wrote: David, can you explain why you needed to lock the files?  Also, what region(s) of the file you are locking?  fcntl with F_WRLCK won't work on Windows, so the question is how to emulate it. I was about to write this up but I see

Re: patch to support output synchronization under -j

2011-04-14 Thread Tim Murphy
File locking would be the exclusion mechanism with a shell implementation, right? With Talon we used a system semaphore with timeout-wait semantics . I would assume that one doesn't need it if the code is in make since make can choose when to start and stop reading from any particular file

Re: patch to support output synchronization under -j

2011-04-14 Thread Eli Zaretskii
Date: Thu, 14 Apr 2011 14:12:16 -0400 From: David Boyce david.s.bo...@gmail.com Cc: psm...@gnu.org, bug-make@gnu.org On Thu, Apr 14, 2011 at 1:48 PM, Eli Zaretskii e...@gnu.org wrote: David, can you explain why you needed to lock the files?  Also, what region(s) of the file you are

Re: patch to support output synchronization under -j

2011-04-14 Thread J.T. Conklin
Paul Smith psm...@gnu.org writes: One example: I think saving stdout and stderr to different files and then printing them separately is problematic; consider if your recipe prints lots of information lines, with errors (to stdout) interspersed. If you throw all the errors to the end you lose a

Re: patch to support output synchronization under -j

2011-04-14 Thread David Boyce
On Thu, Apr 14, 2011 at 2:10 PM, Paul Smith psm...@gnu.org wrote: There is no specific region of the file that's locked: the lockfile is basically a file-based, system-wide semaphore. Yes, it's conceptually a semaphore. In fact a Windows port might prefer to use real semaphores. The reason I

Re: patch to support output synchronization under -j

2011-04-14 Thread David Boyce
On Thu, Apr 14, 2011 at 3:00 PM, Eli Zaretskii e...@gnu.org wrote: Yes, but a few words about how is this semaphore supposed to get job done, and in fact what kind of synchronization will this bring to Make, would be appreciated.  I don't think you described the feature too much in your

Fwd: patch to support output synchronization under -j

2011-04-14 Thread Tim Murphy
-- Forwarded message -- From: Tim Murphy tnmur...@gmail.com Date: 14 April 2011 20:43 Subject: Re: patch to support output synchronization under -j To: psm...@gnu.org The reason for splitting stderr and stdout is to do with deadlock and reading pipes. IIRC.  e.g. blocking

Re: patch to support output synchronization under -j

2011-04-14 Thread Tim Murphy
Murphy tnmur...@gmail.com wrote: -- Forwarded message -- From: Tim Murphy tnmur...@gmail.com Date: 14 April 2011 20:43 Subject: Re: patch to support output synchronization under -j To: psm...@gnu.org The reason for splitting stderr and stdout is to do with deadlock

Re: patch to support output synchronization under -j

2011-04-14 Thread Paul Smith
On Thu, 2011-04-14 at 20:59 +0100, Tim Murphy wrote: To prevent any kind of deadlock you sort of want to empty everything the stderr and stdout pipe buffers may contain. It is conceivable that the stdout pipe might contain two lines of text and stderr pipe might contain 1 by the time your

Re: patch to support output synchronization under -j

2011-04-14 Thread David Boyce
On Thu, Apr 14, 2011 at 3:08 PM, David Boyce david.s.bo...@gmail.com wrote: On Thu, Apr 14, 2011 at 2:10 PM, Paul Smith psm...@gnu.org wrote: I'm not sure I like the idea of having to define a lockfile to enable this feature though.  It feels a little too much like exposing the implementation

patch to support output synchronization under -j

2011-04-12 Thread David Boyce
I recently wrote a little program called syncsh (https://github.com/boyski/SYNCSH) to synchronize the output of make -j such that the results of a given job stay together. It's based on ideas from a few posts on this list and an old Ask Mr Make article