Re: [bug #33138] .PARLLELSYNC enhancement with patch

2013-04-27 Thread Eli Zaretskii
 From: Paul Smith psm...@gnu.org
 Cc: Frank Heckenbach f.heckenb...@fh-soft.de, bug-make@gnu.org
 Date: Sun, 21 Apr 2013 19:30:05 -0400
 
 On Fri, 2013-04-19 at 14:09 +0300, Eli Zaretskii wrote:
   Date: Fri, 19 Apr 2013 11:54:05 +0200
   Cc: bo...@kolpackov.net, bug-make@gnu.org
   From: Frank Heckenbach f.heckenb...@fh-soft.de
   
Is there a simple enough Makefile somewhere that could be used to test
this feature, once implemented?
   
   We have a test in the test suite (output-sync). Can you use that?
  
  I hoped for something simpler and not involving Perl or Unixy shell
  features, because I'd like to use this in the native Windows
  environment, where the Windows port of Make runs.  However, if that's
  the best possibility, I guess I'd craft something based on that test.
 
 The basic feature can be tested trivially like this:
 
   all: one two
 
   one two:
   @echo start $@
   @sleep 1
   @echo stop $@
 
 Now if you run this using make -j you'll get:
 
   start one
   start two
   stop one
   stop two
 
 If you run this using make -j -O you should get:
 
   start one
   stop one
   start two
   stop two
 
 There's more to test than that: before it's done we need to test
 recursive make invocations for example.  But the above is simple.

Thanks, I tested this, and also the recursive behavior.  But I'm not
sure whether the results in some less-than-trivial cases are as
intended (although I see exactly the same behavior on GNU/Linux, so
the questions below are not Windows-specific).

E.g., with this Makefile, called mkfsync, (indented 2 spaces for
clarity):

  all: simple recursive

  simple: one two

  one two:
  @echo start $@
  @sleep 1
  @echo stop $@
  @-false

  recursive: rec1 rec2

  rec1 rec2:
  @echo start $@
  $(MAKE) -f mkfsync simple
  @echo stop $@

and invoking Make as gnumake -j -O -f mkfsync, I get this output:

  gnumake -f mkfsync simple
  gnumake -f mkfsync simple
  mkfsync:6: recipe for target 'one' failed
  gnumake: [one] Error 1 (ignored)
  start one
  stop one
  mkfsync:6: recipe for target 'two' failed
  gnumake: [two] Error 1 (ignored)
  start two
  stop two
  start rec1
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  mkfsync:6: recipe for target 'one' failed
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: [one] Error 1 (ignored)
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  start one
  stop one
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  mkfsync:6: recipe for target 'two' failed
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: [two] Error 1 (ignored)
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  start two
  stop two
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  stop rec1
  start rec2
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  mkfsync:6: recipe for target 'one' failed
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: [one] Error 1 (ignored)
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  start one
  stop one
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  mkfsync:6: recipe for target 'two' failed
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: [two] Error 1 (ignored)
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Entering directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  start two
  stop two
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  gnumake[1]: Leaving directory 'D:/gnu/make-3.82.90_GIT_2013-04-20'
  stop rec2

Is this intended behavior that these two messages:

  mkfsync:6: recipe for target 'two' failed
  gnumake[1]: [two] Error 1 (ignored)

are separated and wrapped by separate Entering...Leaving blocks,
instead of being produced together?  They are both produced by a call
to 'message', which outputs the message to stdout, so it's not like
they went to two different 

Re: [bug #33138] .PARLLELSYNC enhancement with patch

2013-04-27 Thread Eli Zaretskii
 Date: Sat, 27 Apr 2013 13:09:02 +0300
 From: Eli Zaretskii e...@gnu.org
 Cc: f.heckenb...@fh-soft.de, bug-make@gnu.org
 
  The basic feature can be tested trivially like this:
  
all: one two
  
one two:
@echo start $@
@sleep 1
@echo stop $@
  
  Now if you run this using make -j you'll get:
  
start one
start two
stop one
stop two
  
  If you run this using make -j -O you should get:
  
start one
stop one
start two
stop two
  
  There's more to test than that: before it's done we need to test
  recursive make invocations for example.  But the above is simple.
 
 Thanks, I tested this, and also the recursive behavior.

The changes needed to make -O work on MS-Windows are now committed to
the master repository, see commits da7df54 and 049f8e8.  Please review
and comment.

I also took liberty in committing a small change posted by Frank in
this thread, whereby, if taking the semaphore fails, output is dumped
unsynchronized, instead of being silently ignored.  (Btw, I don't see
Frank's assignment on file for Make, so I marked this change tiny,
per the FSF procedures.)

Thanks to all who contributed to this (lengthy) discussion and allowed
me to understand how to implement this feature on Windows.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [bug #33138] .PARLLELSYNC enhancement with patch

2013-04-27 Thread Paul Smith
On Sat, 2013-04-27 at 13:09 +0300, Eli Zaretskii wrote:
 Is this intended behavior that these two messages:
 
   mkfsync:6: recipe for target 'two' failed
   gnumake[1]: [two] Error 1 (ignored)
 
 are separated and wrapped by separate Entering...Leaving blocks,
 instead of being produced together?  They are both produced by a call
 to 'message', which outputs the message to stdout, so it's not like
 they went to two different streams.  Am I missing something?

Frank mentioned this as well and it's a bug that needs to be fixed.
I'll look into it this weekend.  I need to check the algorithm; one
simple fix, if it's too complex to do it another way, would be to have
make write (append) the error message to the temp file rather than
printing it directly.  That way we know it will come out in the right
order when the temp file is dumped to stdout.

However that may not be necessary.

 If this is intended behavior, can we somehow cut down on these
 Entering...Leaving pairs?  They add a lot of clutter and make it
 hard to read the output of a Make run.

Yes, this was also discussed: I've been thinking about a separate way to
allow the user to choose.  We also need to ensure, as best as we can,
that extra unneeded lines are not being generated.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [bug #33138] .PARLLELSYNC enhancement with patch

2013-04-27 Thread Paul Smith
On Sat, 2013-04-27 at 14:39 +0300, Eli Zaretskii wrote:
 The changes needed to make -O work on MS-Windows are now committed to
 the master repository, see commits da7df54 and 049f8e8.  Please review
 and comment.

Thanks Eli!!

I'll take a look over the next few days.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: .ONESEHLL not working as expected in 3.82

2013-04-27 Thread Eli Zaretskii
 Date: Mon, 30 Aug 2010 17:09:51 +0100
 From: Anjum Naseer a.nas...@resilientplc.com
 
 I have built the 3.82 version of GNU Make using the Microsoft Visual C++
 compiler and it seems to work fine.
 However, I cannot get it to work correctly with the .ONESHELL option.
 I created a dummy makefile (dummy.mak) with this content:
 
 .ONESHELL:
 
 .PHONY: dummy
 
 dummy:
   set xyz=abc
   @echo xyz=%xyz%
 
 
 If I invoke this with make -d -r -f dummy.mak I get:
 Vvvv
 GNU Make 3.82
 Built for Windows32
 Copyright (C) 2010  Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later
 http://gnu.org/licenses/gpl.html
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
 Reading makefiles...
 Reading makefile `dummy.mak'...
 Updating makefiles
  Considering target file `dummy.mak'.
   Looking for an implicit rule for `dummy.mak'.
   No implicit rule found for `dummy.mak'.
   Finished prerequisites of target file `dummy.mak'.
  No need to remake target `dummy.mak'.
 Updating goal targets
 Considering target file `dummy'.
  File `dummy' does not exist.
  Finished prerequisites of target file `dummy'.
 Must remake target `dummy'.
 Invoking recipe from dummy.mak:6 to update target `dummy'.
 Creating temporary batch file
 C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat
 Batch file contents:
 @echo off
 set xyz=abc
 set xyz=abc
 CreateProcess(C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat,C:\
 Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat,...)
 Putting child 0094AFB8 (dummy) PID 9620224 on the chain.
 Live child 0094AFB8 (dummy) PID 9620224
 Main thread handle = 0054
 Reaping winning child 0094AFB8 PID 9620224
 Cleaning up temp batch file
 C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat
 Creating temporary batch file
 C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat
 Batch file contents:
 @echo off
 echo xyz=%xyz%
 CreateProcess(C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat,C:\
 Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat,...)
 Live child 0094AFB8 (dummy) PID 9620224
 xyz=
 Reaping winning child 0094AFB8 PID 9620224
 Cleaning up temp batch file
 C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat
 Removing child 0094AFB8 PID 9620224 from chain.
 Successfully remade target file `dummy'.
 
 
 As you can see from the debug trace above, it looks like it is still
 loading a separate SHELL for each line of the recipe. Have I
 misunderstood the .ONESHELL feature or is this a bug?

(Yes, this was almost 3 years ago.  Sorry for a long delay.)

The .ONESHELL feature is now supported on MS-Windows, for the default
Windows shell (cmd.exe) or compatible replacements, in the development
version (commit e56aad4).

I realize that one of the important use cases for .ONESHELL is to use
a shell that Make knows nothing about, but as such shells are not yet
supported by the Windows build, I didn't feel it was right to postpone
.ONESHELL any longer.  Volunteers are welcome to contribute support
for foreign shells.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #38827] Make tool does not work for pre-build steps with parallel build option

2013-04-27 Thread Paul D. Smith
Update of bug #38827 (project make):

  Status:None = Not A Bug  
 Open/Closed:Open = Closed 

___

Follow-up Comment #1:

This is not a bug.  By declaring dummyfolder to be a prerequisite of
my-main-rule, make must either build it or it must already exist.  It doesn't
exist, and there's no rule to build it (make has no way to know that the
pre-build rule will create the dummyfolder target).

Further, although my-main-rule will not start until after pre-build and
dummyfolder are both built, there is nothing at all here that says that
dummyfolder can't start as soon as possible, before pre-build is complete.  So
make tries to build dummyfolder and fails.

In general it's best if you never try to have rules do tricky things like
build targets which are not specifically declared in makefiles.  However, the
bug tracker is not the best place for these kinds of discussions.  Please
request assistance on the help-m...@gnu.org mailing list.

___

Reply to this item at:

  http://savannah.gnu.org/bugs/?38827

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #2520] Add option for alternate default makefile

2013-04-27 Thread Paul D. Smith
Update of bug #2520 (project make):

  Status:None = Not A Bug  
 Open/Closed:Open = Closed 

___

Follow-up Comment #1:

This bug seems to have been corrupted, or else no description was given:
either way I don't know what it's asking.

___

Reply to this item at:

  http://savannah.gnu.org/bugs/?2520

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #37065] $(wildcard dir/*/.) is wrong (worked fine in 3.81)

2013-04-27 Thread Eli Zaretskii
Update of bug #37065 (project make):

   Triage Status:None = Need Info  


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?37065

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #31150] The make doesn't work on Windows x64 platforms

2013-04-27 Thread Eli Zaretskii
Update of bug #31150 (project make):

   Triage Status:None = Need Info  

___

Follow-up Comment #1:

Hi,

Could you perhaps show a minimal Makefile that reproduces the problem?

Also, is this a 64-bit build of Make or a 32-bit build?  If this is a 64-bit
build, which compiler was used to build it?


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?31150

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #30730] SHELL does not work correctly on Windows

2013-04-27 Thread Eli Zaretskii
Update of bug #30730 (project make):

Severity:  3 - Normal = 1 - Wish   
  Item Group: Bug = Enhancement
  Status:None = Later  
   Triage Status:None = Major Effort   

___

Follow-up Comment #1:

Make on Windows currently supports only the default Windows shell cmd.exe or
compatible replacements, or ports of Unixy shells, such as the ported Bash.

Volunteers are welcome to contribute code for other shells, including
PowerShell.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?30730

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #24405] BATCH_MODE_ONLY_SHELL configuration fails with unixy shells

2013-04-27 Thread Eli Zaretskii
Update of bug #24405 (project make):

  Status:None = Fixed  
 Open/Closed:Open = Closed 
   Fixed Release:None = 3.82   
   Triage Status:None = Verified   

___

Follow-up Comment #2:

This bug was fixed in Make 3.82.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?24405

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #20550] Crash with setting SHELL from the commandline

2013-04-27 Thread Eli Zaretskii
Update of bug #20550 (project make):

  Status:None = Fixed  
 Open/Closed:Open = Closed 
   Fixed Release:None = 3.82   
   Triage Status:None = Verified   

___

Follow-up Comment #6:

This bug was fixed in Make 3.82.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?20550

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #20542] Regression: windows gnumake + MKS shell + Special Shell Chars

2013-04-27 Thread Eli Zaretskii
Update of bug #20542 (project make):

  Item Group: Bug = Enhancement
  Status:None = Works for me   
   Triage Status:None = Need Info  


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?20542

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #17433] Enhancement in process creation functions in sub_proc.c

2013-04-27 Thread Eli Zaretskii
Update of bug #17433 (project make):

Severity:  3 - Normal = 1 - Wish   
  Status:None = Fixed  
 Open/Closed:Open = Closed 
   Fixed Release:None = 3.82   

___

Follow-up Comment #2:

I'm closing this bug because most of it was already fixed, and the rest isn't
important enough IMO.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?17433

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #17277] Pathes longer than 128 Chars fail with make under windows

2013-04-27 Thread Eli Zaretskii
Update of bug #17277 (project make):

 Open/Closed:Open = Closed 
   Fixed Release:None = 3.82   
   Triage Status:None = Verified   


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?17277

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #16476] WINDOWS32 vs. HAVE_ANSI_COMPILER macros

2013-04-27 Thread Eli Zaretskii
Update of bug #16476 (project make):

 Open/Closed:Open = Closed 
   Fixed Release:None = 3.82   

___

Follow-up Comment #6:

I'm closing this bug because too much time has passed, and the code in
question has likely changed beyond recognition.  So have the MS compilers and
environments.

If this problem is still relevant, please reopen with the current state of
affairs, and we will take it from there.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?16476

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #7201] Windows Path search works incorrectly

2013-04-27 Thread Eli Zaretskii
Update of bug #7201 (project make):

  Status:None = Wont Fix   
 Open/Closed:Open = Closed 

___

Follow-up Comment #4:

I'm closing this bug because I think Make on Windows behaves exactly as the
shell would if it were to invoke the program.

If there are situations where the above is incorrect, please feel free to
reopen with relevant information.


___

Reply to this item at:

  http://savannah.gnu.org/bugs/?7201

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: .ONESEHLL not working as expected in 3.82

2013-04-27 Thread Eli Zaretskii
 From: Paul Smith p...@mad-scientist.net
 Cc: make-...@gnu.org, bug-make@gnu.org
 Date: Sat, 27 Apr 2013 12:54:10 -0400
 
 Also, I wonder if you have a few minutes to go through the open Windows
 bugs in Savannah and make a comment or whatever to those which are still
 waiting (some are waiting for other people, not us).  Looks like 18 bugs
 total, some pretty old.  Here's a link I hope will work for you:
 
 https://savannah.gnu.org/bugs/index.php?go_report=Applygroup=makefunc=browseset=custommsort=0report_id=141advsrch=0status_id=1platform_version_id=105fix_release_id=100

Thanks.  I went through that list and closed several bugs, either
because they were fixed or because they sound no longer relevant.
There are now only 11 open issues in that list.

Out of those 11, I will try to find time to work on about 2 or 3; the
rest are either enhancements (4 of them) that don't sound too
important to me (volunteers are welcome, of course), or await for
additional information without which I cannot advance in my
investigation of the issue.

Note: there's one more major feature in current git repo that needs to
be made available on Windows: dynamic loading of extensions.  That is
my highest priority for Make todo list.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: .ONESEHLL not working as expected in 3.82

2013-04-27 Thread Paul Smith
On Sat, 2013-04-27 at 20:55 +0300, Eli Zaretskii wrote:
 Note: there's one more major feature in current git repo that needs to
 be made available on Windows: dynamic loading of extensions.  That is
 my highest priority for Make todo list.

Yes.  I wonder if there are features of gnulib which make this work in a
cross-platform way?  I've often wondered if we might get some win out of
utilizing gnulib more in GNU make code.

However, I think that investigation and reworking will need to wait
until after the next release.  I don't want to open that can of worms
yet... at least not widely.  But if you see something there that would
make your work for load simpler let me know and we'll look into it.


One other thing: I want to make a format cleanup commit at some point to
deal with a number of annoying issues related to TABs, EOL syntax, etc.,
as well as update copyright dates, etc.  I don't want to do that when it
will conflict with major work anyone else is doing, so let me know when
a good time is for you.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: .ONESEHLL not working as expected in 3.82

2013-04-27 Thread Eli Zaretskii
 From: Paul Smith psm...@gnu.org
 Cc: make-...@gnu.org, bug-make@gnu.org
 Date: Sat, 27 Apr 2013 14:28:18 -0400
 
 On Sat, 2013-04-27 at 20:55 +0300, Eli Zaretskii wrote:
  Note: there's one more major feature in current git repo that needs to
  be made available on Windows: dynamic loading of extensions.  That is
  my highest priority for Make todo list.
 
 Yes.  I wonder if there are features of gnulib which make this work in a
 cross-platform way?  I've often wondered if we might get some win out of
 utilizing gnulib more in GNU make code.

AFAICS, gnulib does not offer any modules that support dynamic loading
of shared libraries.

 However, I think that investigation and reworking will need to wait
 until after the next release.  I don't want to open that can of worms
 yet... at least not widely.  But if you see something there that would
 make your work for load simpler let me know and we'll look into it.

I added a similar facility to Gawk, but there a problem was much
simpler, because Gawk itself was tracking the loaded extensions in
platform-independent code.  So my emulation of dlopen didn't need to
support NULL as its first argument, and didn't care about RTLD_GLOBAL.

By contrast, the way Make's code in load.c is written, it relies on
dlopen to track the shared libraries already loaded.  This is a PITA
on Windows, because there's no similar functionality built in, and the
emulation of dlopen will have to record each loaded extension in some
internal data structure, and search that when dlopen is called with
its 1st argument NULL.  Not rocket science, granted, but it does make
the job larger and the required testing more extensive.

If Make could behave like Gawk, I could have simply copied the code I
wrote for Gawk and reuse it almost verbatim.

 One other thing: I want to make a format cleanup commit at some point to
 deal with a number of annoying issues related to TABs, EOL syntax, etc.,
 as well as update copyright dates, etc.  I don't want to do that when it
 will conflict with major work anyone else is doing, so let me know when
 a good time is for you.

As far as I'm concerned, you can do it whenever you want.  I'd be
greatly surprised if git couldn't figure out how to merge stuff like
that cleanly.  CVS could have barfed, but not git (or any other modern
VCS that tracks the history DAG).

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: .ONESEHLL not working as expected in 3.82

2013-04-27 Thread Paul Smith
I took with make-w32 list off.

On Sat, 2013-04-27 at 22:18 +0300, Eli Zaretskii wrote:
 I added a similar facility to Gawk, but there a problem was much
 simpler, because Gawk itself was tracking the loaded extensions in
 platform-independent code.  So my emulation of dlopen didn't need to
 support NULL as its first argument, and didn't care about RTLD_GLOBAL.
 
 By contrast, the way Make's code in load.c is written, it relies on
 dlopen to track the shared libraries already loaded.  This is a PITA
 on Windows, because there's no similar functionality built in, and the
 emulation of dlopen will have to record each loaded extension in some
 internal data structure, and search that when dlopen is called with
 its 1st argument NULL.  Not rocket science, granted, but it does make
 the job larger and the required testing more extensive.

Well, we already maintain a list of modules that are loaded in
the .LOADED variable.  Although it's not written like that today, I have
no problem changing the code to check that variable to see whether the
module is loaded or not.  We already make that check, to ensure we don't
call the user's init function twice.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: .ONESEHLL not working as expected in 3.82

2013-04-27 Thread Eli Zaretskii
 From: Paul Smith psm...@gnu.org
 Cc: bug-make@gnu.org
 Date: Sat, 27 Apr 2013 15:32:22 -0400
 
 Well, we already maintain a list of modules that are loaded in
 the .LOADED variable.  Although it's not written like that today, I have
 no problem changing the code to check that variable to see whether the
 module is loaded or not.

That would be nice, indeed.

___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: .ONESEHLL not working as expected in 3.82

2013-04-27 Thread Paul Smith
On Sat, 2013-04-27 at 23:00 +0300, Eli Zaretskii wrote:
 That would be nice, indeed.

OK, pushed.  You should be able to simply write a new load_objects()
function and drop it in.  Or put it into a w32 file or whatever.



___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


Re: [bug #33138] .PARLLELSYNC enhancement with patch

2013-04-27 Thread Paul Smith
On Thu, 2013-04-18 at 22:36 +0200, Frank Heckenbach wrote:
   This is useful (to me) because at any time, I know what's running.
   ([Start] messages minus [End] messages.)
  
  Thanks, this is the reason I was looking for; that use-case wasn't clear
  to me based on the previous email.
 
 OK, so what are we going to do about it? Leave, revert, new option?

I've pushed a change to add a new argument to the -O/--output-sync
option, job, to write output after each line of the recipe.  Please
give it a try and make sure it works for your situation.  It worked OK
in my more limited testing.


I'm not excited about that term (job); it's kind of accurate, but in
the documentation for example we're really mushy about exactly what a
job is, vs. a recipe or a command line etc.  I'd like to pick some
terms for this, define them in a solid way, then clean up the
references.  It would be best to do this before the release to avoid
changing things later.

For example, we currently use target as the name; maybe recipe is
better?

If anyone has opinions I'm listening.


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make


[bug #37065] $(wildcard dir/*/.) is wrong (worked fine in 3.81)

2013-04-27 Thread Paul D. Smith
Update of bug #37065 (project make):

   Triage Status:   Need Info = None   

___

Follow-up Comment #4:

Hi Eli; there's a makefile attached.  It's maybe not everything we'd wish for
in a repro case but it seems to be enough to try.  Something like this (but
translated to Windows):


mkdir foo
mkdir foo/bar
touch foo/baz

echo '$(info $(wildcard foo/*/.))' | make -f-


should show just foo/bar/.  Rossen appears to be saying that on Windows,
this will show foo/bar/. foo/baz/. which is clearly not correct.  I'm
resetting the triage status: if this example doesn't work for you please
update again.  Cheers!

___

Reply to this item at:

  http://savannah.gnu.org/bugs/?37065

___
  Message sent via/by Savannah
  http://savannah.gnu.org/


___
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make