make-w32
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MSVC build test results


From: Paul D. Smith
Subject: Re: MSVC build test results
Date: Mon, 29 Aug 2005 09:35:04 -0400

%% "J. Grant" <address@hidden> writes:

  jg> features/export ................... FAILED (9/10 passed)

I really don't understand why this failed, especially when the other
tests succeeded.

Maybe someone can look into this one?

  jg> features/parallelism .............. FAILED (4/5 passed)

What's the status of parallelism in GNU make?  This seems to be an issue
with either parallelism or the "sleep" command in the shell/whatever;
just taking the first line, make runs two commands in parallel: the
first sleeps for 1 second then prints something, the second one prints
something then sleeps for 2 seconds.  Somehow in this result, the text
printed after the 1 second sleep appears BEFORE the text printed
immediately.

  jg> features/patspecific_vars ......... Error running 
C:/msys/1.0/local/bin/make (expected 0; got 512): C:/msys/1.0/local/bin/make -f 
work/features/patspecific_vars.mk
  jg> FAILED (6/7 passed)

OK, I think I have a fix for this one.

  jg> features/recursion ................ FAILED (1/2 passed)
  jg> options/dash-C .................... FAILED (0/2 passed)
  jg> options/dash-I .................... FAILED (0/2 passed)
  jg> targets/DEFAULT ................... FAILED (0/1 passed)
  jg> variables/CURDIR .................. FAILED (0/1 passed)
  jg> variables/MAKE .................... FAILED (0/1 passed)

These are all caused by a difference of opinion on the current working
directory by pwd vs. GNU make.  Make, with WINDOWS32 set, uses
getcwd_fs() to determine the working directory and returns values like
"/home/now3d/make/tests".

There is no portable "getwd" function in Perl, so our test suite uses
`pwd` to figure the working directory.  That appears to return values
like "C:/msys/1.0/home/now3d/make/tests".

Because of this difference, these tests are all failing.

We need to determine some way of having the Perl test suite compute the
same value that is computed by the getcwd_fs() function that make uses.
The Perl function that does the work is run_make_tests.pl:get_this_pwd(),
FYI.

The options/dash-I is strange: there are 3 log files and one diff, and
yet the above says there are only two tests but both failed!

  jg> functions/abspath ................. Error running 
C:/msys/1.0/local/bin/make (expected 0; got 512): C:/msys/1.0/local/bin/make -f 
work/functions/abspath.mk
  jg> FAILED (0/1 passed)

I don't know why this failed but I've enhanced the test suite so that it
prints more information.

  jg> functions/eval .................... FAILED (8/9 passed)

Hrm.  This fails because in a POSIX shell this command:

    echo hel\lo

print "hello" while on Windows, apparently, it prints "hel\lo"
(backslashes not handled the same way).

Not sure what to do about this.

  jg> misc/general3 ..................... FAILED (9/10 passed)

This has something to do with the way backslash/newline is handled.
Is this environment using a unixy shell or not?

  jg> options/dash-B .................... FAILED (5/7 passed)
  jg> variables/MAKE_RESTARTS ........... FAILED (0/3 passed)

Don't get these; why are the variables being printed out of order?
Maybe some kind of IO flush problem?  This is not conformant to the ISO
spec though.

Anyway, I added an fflush() to the info function; see if that helps.

  jg> options/dash-l .................... FAILED (0/1 passed)

Hm.  This one is because -l isn't supported on Windows, I'm sure.
However, make is supposed to detect this and print an error, which the
test suite looks for... that doesn't appear to be happening?

  jg> options/symlinks .................. Error running 
C:/msys/1.0/local/bin/make (expected 0; got 512): C:/msys/1.0/local/bin/make -f 
work/options/symlinks.mk.2 -L
  jg> FAILED (4/10 passed)

Hm.  There's code in the test suite to check whether the system supports
symlinks or not, and it skips all these tests if it doesn't.

But, apparently, that is not working!  The perl docs say that if you try
to use the symlink() function on a system that doesn't support it, it
will die.  So, you invoke the function in an eval{} to see if it works
without killing the script, which I do, but apparently it is still true
on your system?

Can you investigate this?

  jg> variables/SHELL ................... FAILED (1/5 passed)

Hm.  I added a patch which fixed at least some of the problems, but it
still is failing for you.

Somehow, even though I set the make variable SHELL to a value like this:

    SHELL := /./$(SHELL)

when I echo $(SHELL) (the make variable value, note!) I get just the old
version of $(SHELL), with no /./ on the front.  Maybe some code
somewhere is sanitizing this?

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist




reply via email to

[Prev in Thread] Current Thread [Next in Thread]