bug-make
[Top][All Lists]
Advanced

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

Re: make/tests issues


From: J. Grant
Subject: Re: make/tests issues
Date: Sun, 29 Feb 2004 22:10:12 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5b) Gecko/20030824

Hi,

on the 29/02/04 14:33, Paul D. Smith wrote:
%% "J. Grant" <address@hidden> writes:

  jg> Are the make/tests working ok at present?  I am testing with the
  jg> latest CVS code.  Using MSYS/rxvt as my shell environment, perl
  jg> v5.6.1 compiled for msys.

They work for me on all the UNIX boxes I've tried.

Hmm, do you know which win32 configurations are known to work?
MSYS/rxvt should be fine, I have perl, diff installed.  This bug is also
present when using cmd.exe so I don't think it can be my shell.


  jg> Might be an idea to change test_driver.pl's use of diff to be
  jg> independent of white space? "-w" could be added if you think this
  jg> is suitable?  (I changed this locally to try and stop the test
  jg> reporting different output).

First, there is no portable option to diff that ignores whitespace.
Many versions of UNIX diff don't have such options, and GNU diff isn't a
requirement for being able to build and test GNU make.  Second, -w isn't
what you want anyway because that ignores all white space, so that
"foobar" is the same as "foo bar".  I don't think that's correct.  -b is
better: it means that "foo bar" is the same as "foo bar".  Third, it's
quite possible that some of the tests rely on being able to distinguish
whitespace.

And finally, there's no _reason_ why you should have to do this.  There
should be no whitespace differences in the output.

That was my origional thought as well, the file does include this
though.  e.g. "comments.log" is one 1 byte longer, with 0D0A line ending.

make/tests/work/features/comments.diff  has it has 0A line ending for
the first comparison, and 0D0A for the second.

  jg> I compiled the gnumake.exe using build_w32.bat with the latest CVS
  jg> source code. I then copied it to somewhere in my path as make.exe.

  jg> Also "c:\bin\make.exe" is deleted by this script for some reason
  jg> unknown to me.  Perhaps the "purify" code in the report is
  jg> removing make.exe ?

Why is the Purify code being invoked?  It shouldn't be, unless you asked
for it--which you shouldn't do if you don't have Purify.

I don't know if the Purify code is the cause.  I stepped throughthe
script in "perl -d run_make_tests.pl"

I am not very familiar with the perl langage.  I added some debug print
code, and fixed a bug (the scripts continued after it was detected that
there was no make binary on the system previously).  I attatch the log
(script_error3.txt) of the commands leading upto the removal of
"c:\bin\make.exe".  Seems like this line is causing the error possibly:

system "add_profile $make_path";

I cannot spot why the code is removing "c:\bin\make.exe" though. Any ideas?


  jg>                               GNU Make %VERSION%

Note that you haven't set the version.

Yes, this was my "unmodifed latest CVS", I want to ensure it all works
before I test my patch.  This %VERSION% should not make any difference
to the result though should it?  I changed it back to "JG_CVS" just in case.


I also attatch a log illustrating another bug with a path that ends up
converted from "c:\bin\make.exe" to `c:binmake.exe.features_comments*' a
little while before the exe is deleted.



Kind regards

JG









1112:     local($no_increment) = @_;
  DB<1> 
main::get_tmpfile(test_driver.pl:1114):
1114:     $num_of_tmpfiles += !$no_increment;
  DB<1> 
main::get_tmpfile(test_driver.pl:1116):
1116:     return ($tmp_filename . &num_suffix ($num_of_tmpfiles));
  DB<1> 
main::num_suffix(test_driver.pl:1061):
1061:     local($num) = @_;
  DB<1> 
main::num_suffix(test_driver.pl:1063):
1063:     if (--$num > 0) {
  DB<1> 
main::num_suffix(test_driver.pl:1067):
1067:     return "";
  DB<1> 
main::setup_for_test(run_make_tests.pl:276):
276:      if (-f $makefile) {
  DB<1> 
main::setup_for_test(run_make_tests.pl:281):
281:      if ($pure_log) {
  DB<1> 
main::setup_for_test(run_make_tests.pl:282):
282:        ($pure_testname = $testname) =~ tr,/,_,;
  DB<1> 
main::setup_for_test(run_make_tests.pl:283):
283:        $pure_testname = "$pure_log.$pure_testname";
  DB<1> 
main::setup_for_test(run_make_tests.pl:284):
284:            print("Purify testfiles are: rm -f $pure_testname*\n") if 
$debug;
  DB<1> 
Purify testfiles are: rm -f c:\bin\make.exe.features_comments*
main::setup_for_test(run_make_tests.pl:285):
285:        system("rm $pure_testname*");
  DB<1> 
rm: cannot remove `c:binmake.exe.features_comments*': No such file or directory
main::run_each_test(test_driver.pl:390):
390:        $output = "........................................................ 
";
  DB<1> l
390==>      $output = "........................................................ 
";
391     
392:        substr($output,0,length($testname)) = "$testname ";
393     
394:        print $output;
395     
396         # Run the actual test!
397         #
398:        $code = do $perl_testname;
399:        if (!defined($code))
  DB<1> 





main::run_make_with_options(run_make_tests.pl:61):
61:           $command .= " -f $filename";
  DB<1> 
main::run_make_with_options(run_make_tests.pl:64):
64:        if ($options)
65:        {
  DB<1> 
main::run_make_with_options(run_make_tests.pl:69):
69:        if ($valgrind) {
  DB<1> 
main::run_make_with_options(run_make_tests.pl:73):
73:             print("\nrunning command: '$command', logfile: 
'$logname'\n")if($debug);
  DB<1> 

running command: 'c:/bin/make.exe -f work/features/comments.mk', logfile: 
'work/features/comments.log'
main::run_make_with_options(run_make_tests.pl:74):
74:        $code = &run_command_with_output($logname,$command);
  DB<1> 
main::run_command_with_output(test_driver.pl:726):
726:      local ($filename) = shift;
  DB<1> 
main::run_command_with_output(test_driver.pl:727):
727:      local ($code);
  DB<1> 
main::run_command_with_output(test_driver.pl:729):
729:      &attach_default_output ($filename);
  DB<1> 
main::attach_default_output(test_driver.pl:645):
645:      local ($filename) = @_;
  DB<1> 
main::attach_default_output(test_driver.pl:646):
646:      local ($code);
  DB<1> 
main::attach_default_output(test_driver.pl:648):
648:      if ($vos)
649:      {
  DB<1> 
main::attach_default_output(test_driver.pl:655):
655:      open ("SAVEDOS" . $default_output_stack_level . "out", ">&STDOUT")
656:            || &error ("ado: $! duping STDOUT\n", 1);
  DB<1> 
main::attach_default_output(test_driver.pl:657):
657:      open ("SAVEDOS" . $default_output_stack_level . "err", ">&STDERR")
658:            || &error ("ado: $! duping STDERR\n", 1);
  DB<1> 
main::attach_default_output(test_driver.pl:660):
660:      open (STDOUT, "> " . $filename)
661:            || &error ("ado: $filename: $!\n", 1);
  DB<1> 
main::attach_default_output(test_driver.pl:662):
662:      open (STDERR, ">&STDOUT")
663:            || &error ("ado: $filename: $!\n", 1);
  DB<1> 
main::attach_default_output(test_driver.pl:665):
665:      $default_output_stack_level++;
  DB<1> 
main::run_command_with_output(test_driver.pl:730):
730:      $code = system @_;
  DB<1> 
main::run_command_with_output(test_driver.pl:731):
731:      &detach_default_output;
  DB<1> 
main::detach_default_output(test_driver.pl:673):
673:      local ($code);
  DB<1> 
main::detach_default_output(test_driver.pl:675):
675:      if ($vos)
676:      {
  DB<1> 
main::detach_default_output(test_driver.pl:682):
682:      if (--$default_output_stack_level < 0)
683:      {
  DB<1> 
main::detach_default_output(test_driver.pl:687):
687:      close (STDOUT);
  DB<1> 
main::detach_default_output(test_driver.pl:688):
688:      close (STDERR);
  DB<1> 
main::detach_default_output(test_driver.pl:690):
690:      open (STDOUT, ">&SAVEDOS" . $default_output_stack_level . "out")
691:            || &error ("ddo: $! duping STDOUT\n", 1);
  DB<1> 
main::detach_default_output(test_driver.pl:692):
692:      open (STDERR, ">&SAVEDOS" . $default_output_stack_level . "err")
693:            || &error ("ddo: $! duping STDERR\n", 1);
  DB<1> 
main::detach_default_output(test_driver.pl:695):
695:      close ("SAVEDOS" . $default_output_stack_level . "out")
696:            || &error ("ddo: $! closing SCSDOSout\n", 1);
  DB<1> 
main::detach_default_output(test_driver.pl:697):
697:      close ("SAVEDOS" . $default_output_stack_level . "err")
698:             || &error ("ddo: $! closing SAVEDOSerr\n", 1);
  DB<1> 
main::run_command_with_output(test_driver.pl:732):
732:      if ($debug)
733:      {
  DB<1> 
main::run_command_with_output(test_driver.pl:734):
734:        print "run_command_with_output: \"@_\" returned $code.\n";
  DB<1> 
run_command_with_output: "c:/bin/make.exe -f work/features/comments.mk" 
returned 0.
main::run_command_with_output(test_driver.pl:737):
737:      return $code;
  DB<1> 
main::run_make_with_options(run_make_tests.pl:79):
79:        if ($pure_log && -f $pure_log) {
  DB<1> 
main::run_make_with_options(run_make_tests.pl:80):
80:          if ($code & 0x7000) {
  DB<1> 
main::run_make_with_options(run_make_tests.pl:91):
91:            unlink($pure_log);
  DB<1> 
main::run_make_with_options(run_make_tests.pl:95):
95:        if ($code != $expected_code)
96:        {
  DB<1> 
main::run_make_with_options(run_make_tests.pl:107):
107:       if ($profile & $vos)
108:       {
  DB<1> 
main::run_make_with_options(run_make_tests.pl:112):
112:    1;
  DB<1> -
102:            exit($code);
103           }
104:          return 0;
105        }
106     
107:       if ($profile & $vos)
108        {
109:               print("make_path: '$make_path'") if($debug); 
110:          system "add_profile $make_path";
111        }
  DB<1> .
main::run_make_with_options(run_make_tests.pl:112):
112:    1;
  DB<1> l
112==>  1;
113     }
114     
115     sub print_usage
116     {
117:       &print_standard_usage ("run_make_tests", "[-make_path 
make_pathname]");
118     }
119     
120     sub print_help
121     {
  DB<1> 



reply via email to

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