ccooper%deadsquid.com a6186f69de - add missing file from previous commit (bustage fix)
git-svn-id: svn://10.0.0.236/trunk@256920 18797224-902f-48f8-a5cc-f745e15eee43
2009-04-15 01:11:55 +00:00

154 lines
5.1 KiB
Perl

#
# PartnerRepack step. Unpacks, modifies, repacks a Firefox en-US build.
#
package Bootstrap::Step::PartnerRepack;
use Bootstrap::Step;
use Bootstrap::Config;
use Bootstrap::Util qw(CvsCatfile);
use MozBuild::Util qw(MkdirWithPath);
@ISA = ("Bootstrap::Step");
sub Execute {
my $this = shift;
my $config = new Bootstrap::Config();
my $product = $config->Get(var => 'product');
my $version = $config->GetVersion(longName => 0);
my $build = $config->Get(var => 'build');
my $logDir = $config->Get(sysvar => 'logDir');
my $hgPartnersRepo = $config->Get(var => 'hgPartnersRepo');
my $hgPartnersTag = $config->Get(var => 'hgPartnersTag');
my $partnerRepackDir = $config->Get(var => 'partnerRepackDir');
my $mozillaCvsroot = $config->Get(var => 'mozillaCvsroot');
my $buildLog = catfile($logDir,
'repack_' . $version . '-build-partner-repack.log');
MkdirWithPath(dir => $partnerRepackDir)
or die("Cannot mkdir $partnerRepackDir: $!");
$this->CvsCo(cvsroot => $mozillaCvsroot,
checkoutDir => 'package_tools',
modules => [CvsCatfile('mozilla', 'build',
'package','mac_osx')],
logFile => $buildLog,
workDir => $partnerRepackDir
);
$this->HgClone(
repo => $hgPartnersRepo,
tag => $hgPartnersTag,
workDir => $partnerRepackDir
);
$this->Shell(
cmd => './partner-repacks.py',
cmdArgs => ['--version', $version,
'--build-number', $build],
dir => catfile($partnerRepackDir, 'partner-repacks', 'scripts'),
appendToPath => "${partnerRepackDir}/package_tools",
logFile => $buildLog,
timeout => 3600
);
}
# Make sure we have appropriate repacks for every partner in the repo.
sub Verify {
my $this = shift;
my $config = new Bootstrap::Config();
my $product = $config->Get(var => 'product');
my $build = $config->Get(var => 'build');
my $version = $config->GetVersion(longName => 0);
my $logDir = $config->Get(sysvar => 'logDir');
my $hgPartnersRepo = $config->Get(var => 'hgPartnersRepo');
my $hgPartnersTag = $config->Get(var => 'hgPartnersTag');
my $partnerRepackDir = $config->Get(var => 'partnerRepackDir');
my $buildLog = catfile($logDir,
'repack_' . $version . '-build-partner-repack.log');
$this->Shell(
cmd => './partner-repacks.py',
cmdArgs => ['--version', $version,
'--build-number', $build,
'--verify-only'],
dir => catfile($partnerRepackDir, 'partner-repacks', 'scripts'),
logFile => $buildLog,
timeout => 3600
);
}
sub Push {
my $this = shift;
my $config = new Bootstrap::Config();
my $product = $config->Get(var => 'product');
my $version = $config->GetVersion(longName => 0);
my $build = $config->Get(var => 'build');
my $logDir = $config->Get(sysvar => 'logDir');
my $stagingUser = $config->Get(var => 'stagingUser');
my $stagingServer = $config->Get(var => 'stagingServer');
my $partnerRepackDir = $config->Get(var => 'partnerRepackDir');
my $remoteRepackDir = $config->Get(var => 'remoteRepackDir');
my $linuxExtension = $config->GetLinuxExtension();
my $pushLog = catfile($logDir,
'repack_' . $version . '-push-partner-repack.log');
my $pushDir = catfile($partnerRepackDir, "partner-repacks",
"scripts", "repacked_builds");
$this->Shell(
cmd => 'ssh',
cmdArgs => ['-2', '-l', $stagingUser, $stagingServer,
'mkdir', '-p', $remoteRepackDir
],
logFile => $pushLog,
);
$this->Shell(
cmd => 'rsync',
cmdArgs => ['-Lav',
'-e', 'ssh',
'--include=*.dmg',
'--include=*.exe',
'--include=*.tar.'.$linuxExtension,
'.',
$stagingServer . ":" . $remoteRepackDir,
],
dir => $pushDir,
logFile => $pushLog,
timeout => 3600
);
}
sub Announce {
my $this = shift;
my $config = new Bootstrap::Config();
my $product = $config->Get(var => 'product');
my $productTag = $config->Get(var => 'productTag');
my $version = $config->GetVersion(longName => 0);
my $build = $config->Get(var => 'build');
my $logDir = $config->Get(sysvar => 'logDir');
my $stagingServer = $config->Get(var => 'stagingServer');
my $remoteRepackDir = $config->Get(var => 'remoteRepackDir');
my $partnerRepackCC = $config->Get(var => 'partnerRepackCC');
my $buildLog = catfile($logDir,
'repack_' . $version . '-build-partner-repack.log');
$remoteRepackDir =~ s|^/home/ftp||;
$this->SendAnnouncement(
subject => "$product $version partner repack step finished",
message => "$product $version partner repacks were copied to the staging directory:\n\n" .
"http://${stagingServer}${remoteRepackDir}/${version}/build${build}/",
cc => $partnerRepackCC,
);
}
1;