Blame nss/coreconf/cpdist.pl

Packit 40b132
#! /usr/local/bin/perl
Packit 40b132
#
Packit 40b132
# This Source Code Form is subject to the terms of the Mozilla Public
Packit 40b132
# License, v. 2.0. If a copy of the MPL was not distributed with this
Packit 40b132
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
Packit 40b132
require('coreconf.pl');
Packit 40b132
Packit 40b132
#######-- read in variables on command line into %var
Packit 40b132
Packit 40b132
&parse_argv;
Packit 40b132
 
Packit 40b132
### do the copy
Packit 40b132
Packit 40b132
print STDERR "RELEASE TREE / MODULE =  $var{RELEASE_TREE} $var{MODULE}\n";
Packit 40b132
Packit 40b132
Packit 40b132
Packit 40b132
# 1
Packit 40b132
if ($var{RELEASE} eq "") { exit; } # Can't do release here, so exit.
Packit 40b132
Packit 40b132
# 2
Packit 40b132
#if (! ($var{RELEASE} =~ /\//)) {   # if no specific version is specified in RELEASE variable
Packit 40b132
#    $component = $var{RELEASE};
Packit 40b132
#}
Packit 40b132
#else {  # if a subcomponent/version is given in the RELEASE variable
Packit 40b132
#        $var{RELEASE} =~ m|^([^/]*)/|;  
Packit 40b132
#	$component = $1;           # everything before the first slash;
Packit 40b132
#    }
Packit 40b132
Packit 40b132
# 3
Packit 40b132
$path = $var{RELEASE};
Packit 40b132
Packit 40b132
Packit 40b132
# 4
Packit 40b132
# find out what directory we would create for 'today'
Packit 40b132
Packit 40b132
$year = (localtime)[5] + 1900;
Packit 40b132
$month = (localtime)[4] + 1;
Packit 40b132
$day = (localtime)[3];
Packit 40b132
$today = sprintf( "%d%02d%02d", $year, $month, $day );
Packit 40b132
Packit 40b132
# 5
Packit 40b132
# if version is null, then set the version to today.
Packit 40b132
if ($var{"RELEASE_VERSION"} eq "") {
Packit 40b132
    $var{"RELEASE_VERSION"} = $today;
Packit 40b132
}
Packit 40b132
Packit 40b132
#6
Packit 40b132
$version = $var{"RELEASE_VERSION"};  # set RELEASE_VERSION to passed in variable
Packit 40b132
Packit 40b132
#7
Packit 40b132
# if version is today, then we will want to make a 'current' link.
Packit 40b132
Packit 40b132
if ($version eq $today) {
Packit 40b132
    $create_current = 1;
Packit 40b132
}
Packit 40b132
Packit 40b132
#8
Packit 40b132
# version can be a) passed in value from command line, b) value in manifest.mn
Packit 40b132
# or c) computed value such as '19970909'
Packit 40b132
Packit 40b132
Packit 40b132
$dir = "$var{'RELEASE_TREE'}/$path";
Packit 40b132
Packit 40b132
#9
Packit 40b132
if (! (-e "$dir/$version" && -d "$dir/$version")) {
Packit 40b132
    print "making dir $dir \n";
Packit 40b132
    &rec_mkdir("$dir/$version");
Packit 40b132
}
Packit 40b132
Packit 40b132
Packit 40b132
Packit 40b132
print "version = $version\n";
Packit 40b132
print "path = $path\n";
Packit 40b132
print "var{release_tree} = $var{'RELEASE_TREE'}\n";
Packit 40b132
print "dir = $dir   = RELEASE_TREE/path\n";
Packit 40b132
Packit 40b132
Packit 40b132
#10
Packit 40b132
if ($create_current == 1) {
Packit 40b132
Packit 40b132
# unlinking and linking always occurs, even if the link is correct
Packit 40b132
    print "unlinking $dir/current\n";
Packit 40b132
    unlink("$dir/current");
Packit 40b132
    
Packit 40b132
    print "putting version number $today into 'current' file..";
Packit 40b132
Packit 40b132
    open(FILE,">$dir/current") || die " couldn't open current\n";
Packit 40b132
    print FILE "$today\n";
Packit 40b132
    close(FILE);
Packit 40b132
    print " ..done\n"
Packit 40b132
    
Packit 40b132
}
Packit 40b132
Packit 40b132
&rec_mkdir("$dir/$version/$var{'RELEASE_MD_DIR'}");
Packit 40b132
&rec_mkdir("$dir/$version/$var{'RELEASE_XP_DIR'}");
Packit 40b132
Packit 40b132
Packit 40b132
Packit 40b132
Packit 40b132
foreach $jarfile (split(/ /,$var{FILES}) ) {
Packit 40b132
    print STDERR "---------------------------------------------\n";
Packit 40b132
    
Packit 40b132
    $jarinfo = $var{$jarfile};
Packit 40b132
 
Packit 40b132
    ($jardir,$jaropts) = split(/\|/,$jarinfo);
Packit 40b132
 
Packit 40b132
    if ($jaropts =~ /f/) {
Packit 40b132
      print STDERR "Copying files $jardir....\n";
Packit 40b132
    }
Packit 40b132
    else {
Packit 40b132
      print STDERR "Copying jar file $jarfile....\n";
Packit 40b132
    }
Packit 40b132
    
Packit 40b132
    print "jaropts = $jaropts\n";
Packit 40b132
    
Packit 40b132
    if ($jaropts =~ /m/) {
Packit 40b132
      $destdir = $var{"RELEASE_MD_DIR"};
Packit 40b132
      print "found m, using MD dir $destdir\n";
Packit 40b132
    }
Packit 40b132
    elsif ($jaropts =~ /x/) {
Packit 40b132
      $destdir = $var{"RELEASE_XP_DIR"};
Packit 40b132
      print "found x, using XP dir $destdir\n";
Packit 40b132
    }
Packit 40b132
    else {
Packit 40b132
      die "Error: must specify m or x in jar options in $jarinfo line\n";
Packit 40b132
    }
Packit 40b132
    
Packit 40b132
    
Packit 40b132
    $distdir = "$dir/$version/$destdir";
Packit 40b132
    
Packit 40b132
Packit 40b132
Packit 40b132
    if ($jaropts =~ /f/) {
Packit 40b132
Packit 40b132
      print "splitting: \"$jardir\"\n";
Packit 40b132
      for $srcfile (split(/ /,$jardir)) {
Packit 40b132
Packit 40b132
#if srcfile has a slash
Packit 40b132
	if ($srcfile =~ m|/|) {
Packit 40b132
#pull out everything before the last slash into $1
Packit 40b132
	  $srcfile =~ m|(.*)/|;
Packit 40b132
	  $distsubdir = "/$1";
Packit 40b132
	  print "making dir $distdir$distsubdir\n";
Packit 40b132
	  &rec_mkdir("$distdir$distsubdir");
Packit 40b132
	}
Packit 40b132
	print "copy: from $srcfile\n";
Packit 40b132
	print "      to   $distdir$distsubdir\n";
Packit 40b132
	$srcprefix = "";
Packit 40b132
	if ($jaropts =~/m/) {
Packit 40b132
	  $srcprefix = "$var{'PLATFORM'}/";
Packit 40b132
	}
Packit 40b132
	system("cp $srcprefix$srcfile $distdir$distsubdir");
Packit 40b132
      }
Packit 40b132
    }
Packit 40b132
    else {
Packit 40b132
      $srcfile = "$var{SOURCE_RELEASE_PREFIX}/$jardir/$jarfile";
Packit 40b132
      
Packit 40b132
      print "copy: from $srcfile\n";
Packit 40b132
      print "      to   $distdir\n";
Packit 40b132
      
Packit 40b132
      system("cp $srcfile $distdir");
Packit 40b132
      
Packit 40b132
    }
Packit 40b132
    
Packit 40b132
  }
Packit 40b132