src/hg/js/cpJsFiles.pl 1.4

1.4 2010/02/28 00:08:14 larrym
make local links in destDir to avoid problems for mirrors who rsync --links and have a different htdocs path than we do
Index: src/hg/js/cpJsFiles.pl
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/js/cpJsFiles.pl,v
retrieving revision 1.3
retrieving revision 1.4
diff -b -B -U 4 -r1.3 -r1.4
--- src/hg/js/cpJsFiles.pl	13 Aug 2009 16:25:31 -0000	1.3
+++ src/hg/js/cpJsFiles.pl	28 Feb 2010 00:08:14 -0000	1.4
@@ -5,8 +5,9 @@
 # $Id$
 
 use strict;
 
+use Cwd;
 use Getopt::Long;
 
 sub usage
 {
@@ -38,17 +39,21 @@
     chomp;
     push(@destFiles, $_);
 }
 
+# To avoid screwing up mirrors who run "rsync --links", we chdir into the javascript directory and make non-absolute softlinks there.
+my $cwd = getcwd();
+chdir($destDir) || die "Couldn't chdir into '$destDir'; err: $!";
+
 for my $file (@ARGV)
 {
     if(!$exclude{$file}) {
-        my @stat = stat($file) or die "Couldn't stat '$file'; err: $!";
+        my @stat = stat("$cwd/$file") or die "Couldn't stat '$file'; err: $!";
         my $mtime = $stat[9];
         
         # update destination file as appropriate
         my $update = 0;
-        my $destFile = "$destDir/$file";
+        my $destFile = $file;
         if(-e $destFile) {
             my @destStat = stat("$destFile") or die "Couldn't stat '$destFile'; err: $!";
             $update = ($destStat[9] < $mtime);
         } else {
@@ -57,16 +62,16 @@
         if($update) {
             if (-e $destFile) {
                 unlink($destFile) || die "Couldn't unlink $destFile'; err: $!";
             }
-            !system("cp -p $file $destFile") || die "Couldn't cp $file to $destFile: err: $!";
+            !system("cp -p $cwd/$file $destFile") || die "Couldn't cp $cwd/file to $destFile: err: $!";
         }
 
         if($file =~ /(.+)\.js$/) {
             my $prefix = $1;
             # make sure time is right, in case file; file might have been newer,
             # speculation that cp -p silently failed if user doesn't own destDir
-            @stat = stat("$destFile") or die "Couldn't stat '$destFile'; err: $!";
+            @stat = stat($destFile) or die "Couldn't stat '$destFile'; err: $!";
             $mtime = $stat[9];
 
             my $softLink = $file;
             $softLink =~ s/\.js$/-$mtime.js/;
@@ -69,22 +74,21 @@
             $mtime = $stat[9];
 
             my $softLink = $file;
             $softLink =~ s/\.js$/-$mtime.js/;
-
             # Delete obsolete symlinks
             for my $f (@destFiles) {
-                if($f =~ /$prefix-(\d+)\.js/) {
+                if($f =~ /^$prefix-(\d+)\.js$/) {
                     if($f ne $softLink) {
                         print STDERR "Deleting old soft-link $f\n" if($debug);
-                        unlink("$destDir/$f") || die "Couldn't unlink '$destDir/$softLink'; err: $!";
+                        unlink($f) || die "Couldn't unlink obsolete softlink '$softLink'; err: $!";
                     }
                 }
             }
             # create new symlink
-            if(!(-l "$destDir/$softLink")) {
-                print STDERR "ln -s $destDir/$softLink\n" if($debug);
-                !system("ln -s $destDir/$file $destDir/$softLink") || die "Couldn't ln -s $file; err: $!";
+            if(!(-l "$softLink")) {
+                print STDERR "ln -s $softLink\n" if($debug);
+                !system("ln -s $file $softLink") || die "Couldn't ln -s $file; err: $!";
             }
         }
     }
 }