cpdist.pl
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:5k
源码类别:

CA认证

开发平台:

WINDOWS

  1. #! /usr/local/bin/perl
  2. #
  3. # The contents of this file are subject to the Mozilla Public
  4. # License Version 1.1 (the "License"); you may not use this file
  5. # except in compliance with the License. You may obtain a copy of
  6. # the License at http://www.mozilla.org/MPL/
  7. # Software distributed under the License is distributed on an "AS
  8. # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9. # implied. See the License for the specific language governing
  10. # rights and limitations under the License.
  11. # The Original Code is the Netscape security libraries.
  12. # The Initial Developer of the Original Code is Netscape
  13. # Communications Corporation.  Portions created by Netscape are 
  14. # Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  15. # Rights Reserved.
  16. # Contributor(s):
  17. # Alternatively, the contents of this file may be used under the
  18. # terms of the GNU General Public License Version 2 or later (the
  19. # "GPL"), in which case the provisions of the GPL are applicable 
  20. # instead of those above.  If you wish to allow use of your 
  21. # version of this file only under the terms of the GPL and not to
  22. # allow others to use your version of this file under the MPL,
  23. # indicate your decision by deleting the provisions above and
  24. # replace them with the notice and other provisions required by
  25. # the GPL.  If you do not delete the provisions above, a recipient
  26. # may use your version of this file under either the MPL or the
  27. # GPL.
  28. #
  29. require('coreconf.pl');
  30. #######-- read in variables on command line into %var
  31. &parse_argv;
  32.  
  33. ### do the copy
  34. print STDERR "RELEASE TREE / MODULE =  $var{RELEASE_TREE} $var{MODULE}n";
  35. # 1
  36. if ($var{RELEASE} eq "") { exit; } # Can't do release here, so exit.
  37. # 2
  38. #if (! ($var{RELEASE} =~ ///)) {   # if no specific version is specified in RELEASE variable
  39. #    $component = $var{RELEASE};
  40. #}
  41. #else {  # if a subcomponent/version is given in the RELEASE variable
  42. #        $var{RELEASE} =~ m|^([^/]*)/|;  
  43. # $component = $1;           # everything before the first slash;
  44. #    }
  45. # 3
  46. $path = $var{RELEASE};
  47. # 4
  48. # find out what directory we would create for 'today'
  49. $year = (localtime)[5] + 1900;
  50. $month = (localtime)[4] + 1;
  51. $day = (localtime)[3];
  52. $today = sprintf( "%d%02d%02d", $year, $month, $day );
  53. # 5
  54. # if version is null, then set the version to today.
  55. if ($var{"RELEASE_VERSION"} eq "") {
  56.     $var{"RELEASE_VERSION"} = $today;
  57. }
  58. #6
  59. $version = $var{"RELEASE_VERSION"};  # set RELEASE_VERSION to passed in variable
  60. #7
  61. # if version is today, then we will want to make a 'current' link.
  62. if ($version eq $today) {
  63.     $create_current = 1;
  64. }
  65. #8
  66. # version can be a) passed in value from command line, b) value in manifest.mn
  67. # or c) computed value such as '19970909'
  68. $dir = "$var{'RELEASE_TREE'}/$path";
  69. #9
  70. if (! (-e "$dir/$version" && -d "$dir/$version")) {
  71.     print "making dir $dir n";
  72.     &rec_mkdir("$dir/$version");
  73. }
  74. print "version = $versionn";
  75. print "path = $pathn";
  76. print "var{release_tree} = $var{'RELEASE_TREE'}n";
  77. print "dir = $dir   = RELEASE_TREE/pathn";
  78. #10
  79. if ($create_current == 1) {
  80. # unlinking and linking always occurs, even if the link is correct
  81.     print "unlinking $dir/currentn";
  82.     unlink("$dir/current");
  83.     
  84.     print "putting version number $today into 'current' file..";
  85.     open(FILE,">$dir/current") || die " couldn't open currentn";
  86.     print FILE "$todayn";
  87.     close(FILE);
  88.     print " ..donen"
  89.     
  90. }
  91. &rec_mkdir("$dir/$version/$var{'RELEASE_MD_DIR'}");
  92. &rec_mkdir("$dir/$version/$var{'RELEASE_XP_DIR'}");
  93. foreach $jarfile (split(/ /,$var{FILES}) ) {
  94.     print STDERR "---------------------------------------------n";
  95.     
  96.     $jarinfo = $var{$jarfile};
  97.  
  98.     ($jardir,$jaropts) = split(/|/,$jarinfo);
  99.  
  100.     if ($jaropts =~ /f/) {
  101.       print STDERR "Copying files $jardir....n";
  102.     }
  103.     else {
  104.       print STDERR "Copying jar file $jarfile....n";
  105.     }
  106.     
  107.     print "jaropts = $jaroptsn";
  108.     
  109.     if ($jaropts =~ /m/) {
  110.       $destdir = $var{"RELEASE_MD_DIR"};
  111.       print "found m, using MD dir $destdirn";
  112.     }
  113.     elsif ($jaropts =~ /x/) {
  114.       $destdir = $var{"RELEASE_XP_DIR"};
  115.       print "found x, using XP dir $destdirn";
  116.     }
  117.     else {
  118.       die "Error: must specify m or x in jar options in $jarinfo linen";
  119.     }
  120.     
  121.     
  122.     $distdir = "$dir/$version/$destdir";
  123.     
  124.     if ($jaropts =~ /f/) {
  125.       print "splitting: "$jardir"n";
  126.       for $srcfile (split(/ /,$jardir)) {
  127. #if srcfile has a slash
  128. if ($srcfile =~ m|/|) {
  129. #pull out everything before the last slash into $1
  130.   $srcfile =~ m|(.*)/|;
  131.   $distsubdir = "/$1";
  132.   print "making dir $distdir$distsubdirn";
  133.   &rec_mkdir("$distdir$distsubdir");
  134. }
  135. print "copy: from $srcfilen";
  136. print "      to   $distdir$distsubdirn";
  137. $srcprefix = "";
  138. if ($jaropts =~/m/) {
  139.   $srcprefix = "$var{'PLATFORM'}/";
  140. }
  141. system("cp $srcprefix$srcfile $distdir$distsubdir");
  142.       }
  143.     }
  144.     else {
  145.       $srcfile = "$var{SOURCE_RELEASE_PREFIX}/$jardir/$jarfile";
  146.       
  147.       print "copy: from $srcfilen";
  148.       print "      to   $distdirn";
  149.       
  150.       system("cp $srcfile $distdir");
  151.       
  152.     }
  153.     
  154.   }