ChangeDir now returns the correct value
[oota-llvm.git] / utils / NewNightlyTest.pl
index b050ddfd51be4c3f908545df4a6c53ac3c4112bf..033ae1c7af0b9924eb349ec6479968e5b7fe75e4 100755 (executable)
@@ -52,6 +52,8 @@ use Socket;
 #                   the default.
 #  -compileflags    Next argument specifies extra options passed to make when
 #                   building LLVM.
+#  -use-gmake                  Use gmake instead of the default make command to build
+#                   llvm and run tests.
 #
 #  ---------------- Options to configure llvm-test ----------------------------
 #  -extraflags      Next argument specifies extra options that are passed to
@@ -108,6 +110,7 @@ $CONFIGUREARGS="";
 $nickname="";
 $NOTEST=0;
 $NORUNNINGTESTS=0;
+$MAKECMD="make";
 
 while (scalar(@ARGV) and ($_ = $ARGV[0], /^[-+]/)) {
     shift;
@@ -122,8 +125,8 @@ while (scalar(@ARGV) and ($_ = $ARGV[0], /^[-+]/)) {
     if (/^-norunningtests$/) { $NORUNNINGTESTS = 1; next; }
     if (/^-parallel$/)       { $MAKEOPTS = "$MAKEOPTS -j2 -l3.0"; next; }
     if (/^-release$/)        { $MAKEOPTS = "$MAKEOPTS ENABLE_OPTIMIZED=1 ".
-                                                  "OPTIMIZE_OPTION=-O2"; 
-                                                  $BUILDTYPE="release"; next; }
+                                                                                                            "OPTIMIZE_OPTION=-O2"; 
+                                                              $BUILDTYPE="release"; next; }
     if (/^-enable-llcbeta$/) { $PROGTESTOPTS .= " ENABLE_LLCBETA=1"; next; }
     if (/^-disable-llc$/)    { $PROGTESTOPTS .= " DISABLE_LLC=1";
                               $CONFIGUREARGS .= " --disable-llc_diffs"; next; } 
@@ -162,6 +165,9 @@ while (scalar(@ARGV) and ($_ = $ARGV[0], /^[-+]/)) {
     if (/^-compileflags/)    {
        $MAKEOPTS = "$MAKEOPTS $ARGV[0]"; shift; next;
     }
+    if (/^-use-gmake/)    {
+                       $MAKECMD = "gmake"; shift; next;
+    }
     if (/^-extraflags/)      {
        $PROGTESTOPTS .= " EXTRA_FLAGS=\'$ARGV[0]\'"; shift; next;
     }
@@ -202,19 +208,11 @@ if($CVSRootDir eq "" or
 if($nickname eq ""){
        die ("Please invoke NewNightlyTest.pl with command line option \"-nickname <nickname>\"");
 }
-if($BUILDTYPE ne "releaese"){
-       $BUILDTYPE = "debug";
-}
 
-#FIXME: this is a hack for SunOS, there must be a better way
-if(`uname` eq "SunOS"){
-       $MAKECMD = "gmake";
-}
-else {
-       $MAKECMD="make";
+if($BUILDTYPE ne "release"){
+       $BUILDTYPE = "debug";
 }
 
-
 ##############################################################
 #
 #define the file names we'll use
@@ -304,8 +302,12 @@ sub ChangeDir { # directory, logical name
     my ($dir,$name) = @_;
     chomp($dir);
     if ( $VERBOSE ) { print "Changing To: $name ($dir)\n"; }
-    chdir($dir) || (print "Cannot change directory to: $name ($dir) " && return -1);
-    return 0;
+    $result = chdir($dir);
+    if(!$result){
+       print "ERROR!!! Cannot change directory to: $name ($dir) because $!"; 
+       return false;
+    }
+    return true;
 }
 
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -779,85 +781,78 @@ my ($WarningsAdded, $WarningsRemoved) = DiffFiles "-Warnings.txt";
 #
 ##############################################################
 sub TestDirectory {
-    my $SubDir = shift;
-    
-    ChangeDir( "projects/llvm-test/$SubDir", "Programs Test Subdirectory" ) || return ("", "");
-
-    my $ProgramTestLog = "$Prefix-$SubDir-ProgramTest.txt";
-    #my $ProgramTestLog = "$Prefix-MultiSource-ProgramTest.txt"; #CHANGE ME!
-    
-    # Run the programs tests... creating a report.nightly.csv file
-    if (!$NOTEST) {
-       print "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv "
-           . "TEST=nightly > $ProgramTestLog 2>&1\n";
-       system "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv "
-           . "TEST=nightly > $ProgramTestLog 2>&1";
-       $llcbeta_options=`$MAKECMD print-llcbeta-option`;
-    } 
+       my $SubDir = shift;
+       
+       ChangeDir( "$BuildDir/llvm/projects/llvm-test/$SubDir", "Programs Test Subdirectory" ) || return ("", "");
+       
+       my $ProgramTestLog = "$Prefix-$SubDir-ProgramTest.txt";
+       
+       # Run the programs tests... creating a report.nightly.csv file
+       if (!$NOTEST) {
+               print "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv ".
+          "TEST=nightly > $ProgramTestLog 2>&1\n";
+               system "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv ".
+           "TEST=nightly > $ProgramTestLog 2>&1";
+         $llcbeta_options=`$MAKECMD print-llcbeta-option`;
+       } 
     
-    my $ProgramsTable;
-    if (`grep '^$MAKECMD\[^:]: .*Error' $ProgramTestLog | wc -l` + 0){
-       $TestError = 1;
-       $ProgramsTable="Error running test $SubDir\n";
-       print "ERROR TESTING\n";
-    } elsif (`grep '^$MAKECMD\[^:]: .*No rule to make target' $ProgramTestLog | wc -l` + 0) {
-       $TestError = 1;
-       $ProgramsTable="Makefile error running tests $SubDir!\n";
-       print "ERROR TESTING\n";
-    } else {
-       $TestError = 0;
+  my $ProgramsTable;
+  if (`grep '^$MAKECMD\[^:]: .*Error' $ProgramTestLog | wc -l` + 0){
+    $TestError = 1;
+    $ProgramsTable="Error running test $SubDir\n";
+    print "ERROR TESTING\n";
+  } elsif (`grep '^$MAKECMD\[^:]: .*No rule to make target' $ProgramTestLog | wc -l` + 0) {
+    $TestError = 1;
+    $ProgramsTable="Makefile error running tests $SubDir!\n";
+    print "ERROR TESTING\n";
+  } else {
+    $TestError = 0;
+    #
+    # Create a list of the tests which were run...
+    #
+    system "egrep 'TEST-(PASS|FAIL)' < $ProgramTestLog ".
+           "| sort > $Prefix-multisourceprogramstable.txt";
+  }
+  $ProgramsTable = ReadFile "report.nightly.csv";
 
-       #
-       # Create a list of the tests which were run...
-       #
-       system "egrep 'TEST-(PASS|FAIL)' < $ProgramTestLog "
-       . "| sort > $Prefix-multisourceprogramstable.txt";
-    }
-    $ProgramsTable = ReadFile "report.nightly.csv";
-    
-    ChangeDir( "../../..", "Programs Test Parent Directory" );
-    return ($ProgramsTable, $llcbeta_options);
+  ChangeDir( "../../..", "Programs Test Parent Directory" );
+  return ($ProgramsTable, $llcbeta_options);
 }
 
-$patrickjenkins=1;
-if(!$patrickjenkins){
-    if ( $VERBOSE ) {
-        print "Modified Multisource Olden test stage\n";
-    }
-    ($MultiSourceProgramsTable, $multisource_llcbeta_options) = TestDirectory("MultiSource/");
-    ChangeDir( "../../..", "Programs Test Parent Directory" );
-    
-
-    WriteFile "$WebDir/multisourceprogramstable.txt", $MultiSourceProgramsTable;
-}
-if (!$BuildError && $patrickjenkins) {
-    if ( $VERBOSE ) {
-       print "SingleSource TEST STAGE\n";
-    }
-    ($SingleSourceProgramsTable, $llcbeta_options) = TestDirectory("SingleSource");
-    WriteFile "$Prefix-singlesourceprogramstable.txt", $SingleSourceProgramsTable;
-    if ( $VERBOSE ) {
-       print "MultiSource TEST STAGE\n";
-    }
-    ($MultiSourceProgramsTable, $llcbeta_options) = TestDirectory("MultiSource");
-    WriteFile "$Prefix-multisourceprogramstable.txt", $MultiSourceProgramsTable;
-    if ( ! $NOEXTERNALS ) {
+if (!$BuildError) {
        if ( $VERBOSE ) {
-           print "External TEST STAGE\n";
+    print "SingleSource TEST STAGE\n";
        }
-       ($ExternalProgramsTable, $llcbeta_options) = TestDirectory("External");
-       WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable;
-       system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ".
-           " $Prefix-externalprogramstable.txt | sort > $Prefix-Tests.txt";
-    } else {
-       $ExternalProgramsTable = "External TEST STAGE SKIPPED\n";
+       ($SingleSourceProgramsTable, $llcbeta_options) = TestDirectory("SingleSource");
        if ( $VERBOSE ) {
-           print "External TEST STAGE SKIPPED\n";
+    print "SingleSource returned $SingleSourceProgramsTable\n";
        }
-       system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ".
-           " | sort > $Prefix-Tests.txt";
-    }
-    WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable;
+       WriteFile "$Prefix-singlesourceprogramstable.txt", $SingleSourceProgramsTable;
+       if ( $VERBOSE ) {
+         print "MultiSource TEST STAGE\n";
+       }
+       ($MultiSourceProgramsTable, $llcbeta_options) = TestDirectory("MultiSource");
+       WriteFile "$Prefix-multisourceprogramstable.txt", $MultiSourceProgramsTable;
+       if ( $VERBOSE ) {
+         print "MultiSource returned $MultiSourceProgramsTable\n";
+       }
+       if ( ! $NOEXTERNALS ) {
+         if ( $VERBOSE ) {
+                 print "External TEST STAGE\n";
+         }
+         ($ExternalProgramsTable, $llcbeta_options) = TestDirectory("External");
+         WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable;
+         system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ".
+                      " $Prefix-externalprogramstable.txt | sort > $Prefix-Tests.txt";
+       } else {
+         $ExternalProgramsTable = "External TEST STAGE SKIPPED\n";
+         if ( $VERBOSE ) {
+                 print "External TEST STAGE SKIPPED\n";
+         }
+         system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ".
+                      " | sort > $Prefix-Tests.txt";
+       }
+       WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable;
 }
 
 ##############################################################