cpdist.pl
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:5k
- #! /usr/local/bin/perl
- #
- # The contents of this file are subject to the Mozilla Public
- # License Version 1.1 (the "License"); you may not use this file
- # except in compliance with the License. You may obtain a copy of
- # the License at http://www.mozilla.org/MPL/
- #
- # Software distributed under the License is distributed on an "AS
- # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- # implied. See the License for the specific language governing
- # rights and limitations under the License.
- #
- # The Original Code is the Netscape security libraries.
- #
- # The Initial Developer of the Original Code is Netscape
- # Communications Corporation. Portions created by Netscape are
- # Copyright (C) 1994-2000 Netscape Communications Corporation. All
- # Rights Reserved.
- #
- # Contributor(s):
- #
- # Alternatively, the contents of this file may be used under the
- # terms of the GNU General Public License Version 2 or later (the
- # "GPL"), in which case the provisions of the GPL are applicable
- # instead of those above. If you wish to allow use of your
- # version of this file only under the terms of the GPL and not to
- # allow others to use your version of this file under the MPL,
- # indicate your decision by deleting the provisions above and
- # replace them with the notice and other provisions required by
- # the GPL. If you do not delete the provisions above, a recipient
- # may use your version of this file under either the MPL or the
- # GPL.
- #
- require('coreconf.pl');
- #######-- read in variables on command line into %var
- &parse_argv;
-
- ### do the copy
- print STDERR "RELEASE TREE / MODULE = $var{RELEASE_TREE} $var{MODULE}n";
- # 1
- if ($var{RELEASE} eq "") { exit; } # Can't do release here, so exit.
- # 2
- #if (! ($var{RELEASE} =~ ///)) { # if no specific version is specified in RELEASE variable
- # $component = $var{RELEASE};
- #}
- #else { # if a subcomponent/version is given in the RELEASE variable
- # $var{RELEASE} =~ m|^([^/]*)/|;
- # $component = $1; # everything before the first slash;
- # }
- # 3
- $path = $var{RELEASE};
- # 4
- # find out what directory we would create for 'today'
- $year = (localtime)[5] + 1900;
- $month = (localtime)[4] + 1;
- $day = (localtime)[3];
- $today = sprintf( "%d%02d%02d", $year, $month, $day );
- # 5
- # if version is null, then set the version to today.
- if ($var{"RELEASE_VERSION"} eq "") {
- $var{"RELEASE_VERSION"} = $today;
- }
- #6
- $version = $var{"RELEASE_VERSION"}; # set RELEASE_VERSION to passed in variable
- #7
- # if version is today, then we will want to make a 'current' link.
- if ($version eq $today) {
- $create_current = 1;
- }
- #8
- # version can be a) passed in value from command line, b) value in manifest.mn
- # or c) computed value such as '19970909'
- $dir = "$var{'RELEASE_TREE'}/$path";
- #9
- if (! (-e "$dir/$version" && -d "$dir/$version")) {
- print "making dir $dir n";
- &rec_mkdir("$dir/$version");
- }
- print "version = $versionn";
- print "path = $pathn";
- print "var{release_tree} = $var{'RELEASE_TREE'}n";
- print "dir = $dir = RELEASE_TREE/pathn";
- #10
- if ($create_current == 1) {
- # unlinking and linking always occurs, even if the link is correct
- print "unlinking $dir/currentn";
- unlink("$dir/current");
-
- print "putting version number $today into 'current' file..";
- open(FILE,">$dir/current") || die " couldn't open currentn";
- print FILE "$todayn";
- close(FILE);
- print " ..donen"
-
- }
- &rec_mkdir("$dir/$version/$var{'RELEASE_MD_DIR'}");
- &rec_mkdir("$dir/$version/$var{'RELEASE_XP_DIR'}");
- foreach $jarfile (split(/ /,$var{FILES}) ) {
- print STDERR "---------------------------------------------n";
-
- $jarinfo = $var{$jarfile};
-
- ($jardir,$jaropts) = split(/|/,$jarinfo);
-
- if ($jaropts =~ /f/) {
- print STDERR "Copying files $jardir....n";
- }
- else {
- print STDERR "Copying jar file $jarfile....n";
- }
-
- print "jaropts = $jaroptsn";
-
- if ($jaropts =~ /m/) {
- $destdir = $var{"RELEASE_MD_DIR"};
- print "found m, using MD dir $destdirn";
- }
- elsif ($jaropts =~ /x/) {
- $destdir = $var{"RELEASE_XP_DIR"};
- print "found x, using XP dir $destdirn";
- }
- else {
- die "Error: must specify m or x in jar options in $jarinfo linen";
- }
-
-
- $distdir = "$dir/$version/$destdir";
-
- if ($jaropts =~ /f/) {
- print "splitting: "$jardir"n";
- for $srcfile (split(/ /,$jardir)) {
- #if srcfile has a slash
- if ($srcfile =~ m|/|) {
- #pull out everything before the last slash into $1
- $srcfile =~ m|(.*)/|;
- $distsubdir = "/$1";
- print "making dir $distdir$distsubdirn";
- &rec_mkdir("$distdir$distsubdir");
- }
- print "copy: from $srcfilen";
- print " to $distdir$distsubdirn";
- $srcprefix = "";
- if ($jaropts =~/m/) {
- $srcprefix = "$var{'PLATFORM'}/";
- }
- system("cp $srcprefix$srcfile $distdir$distsubdir");
- }
- }
- else {
- $srcfile = "$var{SOURCE_RELEASE_PREFIX}/$jardir/$jarfile";
-
- print "copy: from $srcfilen";
- print " to $distdirn";
-
- system("cp $srcfile $distdir");
-
- }
-
- }