src/hg/js/cpJsFiles.pl 1.2

1.2 2009/08/10 21:14:20 larrym
workaround cp -p problem
Index: src/hg/js/cpJsFiles.pl
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/js/cpJsFiles.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -b -B -U 4 -r1.1 -r1.2
--- src/hg/js/cpJsFiles.pl	10 Aug 2009 20:42:16 -0000	1.1
+++ src/hg/js/cpJsFiles.pl	10 Aug 2009 21:14:20 -0000	1.2
@@ -19,12 +19,12 @@
 cpJsFiles.pl [-exclude=...] -destDir=... files
 END
 }
 
-my ($exclude, $destDir);
+my ($exclude, $destDir, $debug);
 my %exclude;
 
-GetOptions("exclude=s" => \$exclude, "destDir=s" => \$destDir);
+GetOptions("exclude=s" => \$exclude, "destDir=s" => \$destDir, "debug" => \$debug);
 
 if($exclude) {
     %exclude = map { $_ => 1} split(/\s*,\s*/, $exclude);
 }
@@ -53,9 +53,13 @@
         } else {
             $update = 1;
         }
         if($update) {
-            !system("cp -p $file $destDir") || die "Couldn't cp $file: err: $!";
+            if(system("cp -p $file $destDir")) {
+                # cp -p doesn't work if user doesn't own destDir, so fall-back to rm/cp
+                !system("rm $destDir/$file") || die "Couldn't unlink $destDir/$file: err: $!";
+                !system("cp $file $destDir") || die "Couldn't cp $file: err: $!";
+            }
         }
 
         if($file =~ /(.+)\.js$/) {
             my $prefix = $1;
@@ -65,17 +69,17 @@
             # Delete obsolete symlinks
             for my $f (@destFiles) {
                 if($f =~ /$prefix-(\d+)\.js/) {
                     if($f ne $softLink) {
-                        print STDERR "Deleting old soft-link $f\n";
+                        print STDERR "Deleting old soft-link $f\n" if($debug);
                         unlink("$destDir/$f") || die "Couldn't unlink '$destDir/$softLink'; err: $!";
                     }
                 }
             }
             
             # create new symlink
             if(!(-l "$destDir/$softLink")) {
-                print STDERR "$destDir/$softLink\n";
+                print STDERR "ln -s $destDir/$softLink\n" if($debug);
                 !system("ln -s $destDir/$file $destDir/$softLink") || die "Couldn't ln -s $file; err: $!";
             }
         }
     }