pull up r19534 from trunk
authorTom Yu <tlyu@mit.edu>
Thu, 9 Aug 2007 22:09:25 +0000 (22:09 +0000)
committerTom Yu <tlyu@mit.edu>
Thu, 9 Aug 2007 22:09:25 +0000 (22:09 +0000)
 r19534@cathode-dark-space:  kpkoch | 2007-04-26 09:02:32 -0400
 Ticket: new
 Subject: Look for unix find command in multiple places
 Target_Version: 1.6.1
 Not tagged yet in case it should not go in 3.2.

 Look for the unix find command in a list of directories instead of in only one place.  This way Jeff can install cygwin in c:\tools\cygwin and Ken can have it in C:\cygwin.  The two places in the list are for those two possibilities.  c:\cygwin\bin and c:\tools\cygwin\bin.

 Move some prints below where logging starts, so the messages will be in the log.

ticket: 5548
version_fixed: 1.6.3

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-6@19775 dc483132-0cff-0310-8789-dd5450dbe970

src/windows/build/bkw.pl

index 08a168243f6540476436ee2602e2f52284927ab0..94cc86dbdaa2795b18aea96ef307890d810ae71a 100644 (file)
@@ -237,22 +237,34 @@ sub main {
     if ($vverbose) {print "Debug -- Config: ".Dumper($config);}\r
     \r
     # Test the unix find command:\r
-    if (! exists $odr->{unixfind}->{value})    {\r
-        $odr->{unixfind}->{value}   = "C:\\tools\\cygwin\\bin";\r
-         }\r
-    local $unixfind     = $odr->{unixfind}->{value};\r
-\r
-    local $savedPATH    = $ENV{PATH};\r
-    $ENV{PATH}          = $unixfind.";".$savedPATH;\r
-    print "Info -- chdir to ".`cd`."\n"         if ($verbose);\r
-    if (-e "a.tmp") {!system("rm a.tmp")        or die "Fatal -- Couldn't clean temporary file a.tmp.";}\r
-    !system("find . -maxdepth 0 -name a.tmp > b.tmp 2>&1")  or die "Fatal -- find test failed.";\r
-    local $filesize = -s "b.tmp";\r
-    $ENV{PATH} = $savedPATH;\r
-    if ($filesize > 0) {\r
-        die "Fatal -- $unixfind does not appear to be a path to a UNIX find command.";\r
+    # List of directories where it might be:\r
+    my @find_dirs = ('c:\\cygwin\\bin', 'c:\\tools\\cygwin\\bin');\r
+    if (exists $odr->{unixfind}->{value})    {    ## Was an additional place to look specified?\r
+        push (@find_dirs, $odr->{unixfind}->{value});\r
         }\r
-        \r
+    my $bFindFound      = 0;\r
+    foreach my $dir (@find_dirs) {\r
+        if (-d $dir) {\r
+            local $savedPATH    = $ENV{PATH};\r
+            $ENV{PATH}          = $dir.";".$savedPATH;\r
+            if (-e "a.tmp") {!system("rm a.tmp")        or die "Fatal -- Couldn't clean temporary file a.tmp.";}\r
+            !system("find . -maxdepth 0 -name a.tmp > b.tmp 2>&1")  or die "Fatal -- find test failed.";\r
+            local $filesize = -s "b.tmp";\r
+            $ENV{PATH} = $savedPATH;\r
+            if ($filesize <= 0) {\r
+                $bFindFound                 = 1;\r
+                $odr->{unixfind}->{value}   = $dir;\r
+                last;\r
+                }\r
+            }\r
+        }\r
+    if (! $bFindFound) {\r
+        print "Fatal -- unix find command not found in \n";\r
+        map {print " $_ "} @find_dirs;\r
+        print "\n";\r
+        die;\r
+        }\r
+                \r
     # Don't allow /svntag and /svnbranch simultaneously:\r
     if ( (length $odr->{svntag}->{value} > 0)   && \r
          (length $odr->{svnbranch}->{value} > 0) ) {\r
@@ -282,14 +294,6 @@ sub main {
             }\r
         }\r
 \r
-    print "Executing $cmdline\n";\r
-    local $argvsize = @ARGV;\r
-    if ($argvsize > 0) {\r
-        print "\nArguments for NMAKE: ";\r
-        map {print " $_ "} @ARGV;\r
-        print "\n";\r
-        }\r
-       \r
     #                (------------------------------------------------)\r
     if ( (-d $wd) && ( ($rverb =~ /export/) || ($rverb =~ /checkout/) ) ) {\r
         print "\n\nHEADS UP!!\n\n";\r
@@ -311,6 +315,16 @@ sub main {
         $l->no_die_handler;        ## Needed so XML::Simple won't throw exceptions.\r
         }\r
 \r
+    print "Executing $cmdline\n";\r
+    local $argvsize = @ARGV;\r
+    if ($argvsize > 0) {\r
+        print "\nArguments for NMAKE: ";\r
+        map {print " $_ "} @ARGV;\r
+        print "\n";\r
+        }\r
+       \r
+    print "Info -- Using unix find in $odr->{unixfind}->{value}\n"   if ($verbose);\r
+\r
 ##++ Begin repository action:\r
     if ($rverb =~ /skip/) {print "Info -- *** Skipping repository access.\n"    if ($verbose);}\r
     else {\r