#! /usr/local/bin/perl # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. print STDERR "import.pl\n"; require('coreconf.pl'); $returncode =0; #######-- read in variables on command line into %var $var{UNZIP} = "unzip -o"; &parse_argv; if (! ($var{IMPORTS} =~ /\w/)) { print STDERR "nothing to import\n"; } ######-- Do the import! foreach $import (split(/ /,$var{IMPORTS}) ) { print STDERR "\n\nIMPORTING .... $import\n-----------------------------\n"; # if a specific version specified in IMPORT variable # (if $import has a slash in it) if ($import =~ /\//) { # $component=everything before the first slash of $import $import =~ m|^([^/]*)/|; $component = $1; $import =~ m|^(.*)/([^/]*)$|; # $path=everything before the last slash of $import $path = $1; # $version=everything after the last slash of $import $version = $2; if ($var{VERSION} ne "current") { $version = $var{VERSION}; } } else { $component = $import; $path = $import; $version = $var{VERSION}; } $releasejardir = "$var{RELEASE_TREE}/$path"; if ($version eq "current") { print STDERR "Current version specified. Reading 'current' file ... \n"; open(CURRENT,"$releasejardir/current") || die "NO CURRENT FILE\n"; $version = ; $version =~ s/(\r?\n)*$//; # remove any trailing [CR/]LF's close(CURRENT); print STDERR "Using version $version\n"; if ( $version eq "") { die "Current version file empty. Stopping\n"; } } $releasejardir = "$releasejardir/$version"; if ( ! -d $releasejardir) { die "$releasejardir doesn't exist (Invalid Version?)\n"; } foreach $jarfile (split(/ /,$var{FILES})) { ($relpath,$distpath,$options) = split(/\|/, $var{$jarfile}); if ($var{'OVERRIDE_IMPORT_CHECK'} eq 'YES') { $options =~ s/v//g; } if ( $relpath ne "") { $releasejarpathname = "$releasejardir/$relpath";} else { $releasejarpathname = $releasejardir; } # If a component doesn't have IDG versions, import the DBG ones if( ! -e "$releasejarpathname/$jarfile" ) { if( $relpath =~ /IDG\.OBJ$/ ) { $relpath =~ s/IDG.OBJ/DBG.OBJ/; $releasejarpathname = "$releasejardir/$relpath"; } elsif( $relpath =~ /IDG\.OBJD$/ ) { $relpath =~ s/IDG.OBJD/DBG.OBJD/; $releasejarpathname = "$releasejardir/$relpath"; } } if (-e "$releasejarpathname/$jarfile") { print STDERR "\nWorking on jarfile: $jarfile\n"; if ($distpath =~ m|/$|) { $distpathname = "$distpath$component"; } else { $distpathname = "$distpath"; } #the block below is used to determine whether or not the xp headers have #already been imported for this component $doimport = 1; if ($options =~ /v/) { # if we should check the imported version print STDERR "Checking if version file exists $distpathname/version\n"; if (-e "$distpathname/version") { open( VFILE, "<$distpathname/version") || die "Cannot open $distpathname/version for reading. Permissions?\n"; $importversion = ; close (VFILE); $importversion =~ s/\r?\n$//; # Strip off any trailing CR/LF if ($version eq $importversion) { print STDERR "$distpathname version '$importversion' already imported. Skipping...\n"; $doimport =0; } } } if ($doimport == 1) { if (! -d "$distpathname") { &rec_mkdir("$distpathname"); } # delete the stuff in there already. # (this should really be recursive delete.) if ($options =~ /v/) { $remheader = "\nREMOVING files in '$distpathname/' :"; opendir(DIR,"$distpathname") || die ("Cannot read directory $distpathname\n"); @filelist = readdir(DIR); closedir(DIR); foreach $file ( @filelist ) { if (! ($file =~ m!/.?.$!) ) { if (! (-d $file)) { $file =~ m!([^/]*)$!; print STDERR "$remheader $1"; $remheader = " "; unlink "$distpathname/$file"; } } } } print STDERR "\n\n"; print STDERR "\nExtracting jarfile '$jarfile' to local directory $distpathname/\n"; print STDERR "$var{UNZIP} $releasejarpathname/$jarfile -d $distpathname\n"; system("$var{UNZIP} $releasejarpathname/$jarfile -d $distpathname"); $r = $?; if ($options =~ /v/) { if ($r == 0) { unlink ("$distpathname/version"); if (open(VFILE,">$distpathname/version")) { print VFILE "$version\n"; close(VFILE); } } else { print STDERR "Could not create '$distpathname/version'. Permissions?\n"; $returncode ++; } } } # if (doimport) } # if (-e releasejarpathname/jarfile) } # foreach jarfile) } # foreach IMPORT exit($returncode);