forked from mirrors/gecko-dev
move to new RunShellCommand, split into substeps, various fixes and features. r=
preed, b=368579
This commit is contained in:
parent
48014466af
commit
145446532d
4 changed files with 391 additions and 0 deletions
167
tools/release/Bootstrap/Step/Tag/Bump.pm
Normal file
167
tools/release/Bootstrap/Step/Tag/Bump.pm
Normal file
|
|
@ -0,0 +1,167 @@
|
||||||
|
#
|
||||||
|
# Tag::Bump substep. Bumps version files for Mozilla appropriately.
|
||||||
|
#
|
||||||
|
package Bootstrap::Step::Tag::Bump;
|
||||||
|
use Bootstrap::Step;
|
||||||
|
use Bootstrap::Config;
|
||||||
|
use Bootstrap::Step::Tag;
|
||||||
|
use File::Copy qw(move);
|
||||||
|
use File::Spec::Functions;
|
||||||
|
use MozBuild::Util qw(MkdirWithPath);
|
||||||
|
@ISA = ("Bootstrap::Step::Tag");
|
||||||
|
|
||||||
|
my $config = new Bootstrap::Config;
|
||||||
|
|
||||||
|
sub Execute {
|
||||||
|
my $this = shift;
|
||||||
|
|
||||||
|
my $product = $config->Get('var' => 'product');
|
||||||
|
my $productTag = $config->Get('var' => 'productTag');
|
||||||
|
my $branchTag = $config->Get('var' => 'branchTag');
|
||||||
|
my $pullDate = $config->Get('var' => 'pullDate');
|
||||||
|
my $version = $config->Get('var' => 'version');
|
||||||
|
my $appName = $config->Get('var' => 'appName');
|
||||||
|
my $logDir = $config->Get('var' => 'logDir');
|
||||||
|
my $mozillaCvsroot = $config->Get('var' => 'mozillaCvsroot');
|
||||||
|
my $tagDir = $config->Get('var' => 'tagDir');
|
||||||
|
|
||||||
|
my $minibranchTag = $productTag.'_MINIBRANCH';
|
||||||
|
my $releaseTag = $productTag.'_RELEASE';
|
||||||
|
my $releaseTagDir = catfile($tagDir, $releaseTag);
|
||||||
|
my $cvsrootTagDir = catfile($releaseTagDir, 'cvsroot');
|
||||||
|
|
||||||
|
# pull version files
|
||||||
|
my $moduleVer = $appName . '/app/module.ver';
|
||||||
|
my $versionTxt = $appName . '/config/version.txt';
|
||||||
|
my @bumpFiles = ('client.mk', $moduleVer, $versionTxt);
|
||||||
|
|
||||||
|
# Check out Mozilla from the branch you want to tag.
|
||||||
|
# TODO this should support running without branch tag or pull date.
|
||||||
|
$this->Shell(
|
||||||
|
'cmd' => 'cvs',
|
||||||
|
'cmdArgs' => ['-d', $mozillaCvsroot,
|
||||||
|
'co',
|
||||||
|
'-r', $branchTag,
|
||||||
|
'-D', $pullDate,
|
||||||
|
catfile('mozilla', 'client.mk'),
|
||||||
|
catfile('mozilla', $moduleVer),
|
||||||
|
catfile('mozilla', $versionTxt),
|
||||||
|
],
|
||||||
|
'dir' => $cvsrootTagDir,
|
||||||
|
'logFile' => catfile($logDir, 'tag-bump_checkout.log'),
|
||||||
|
);
|
||||||
|
|
||||||
|
# Create a minibranch for the pull scripts so we can change them without
|
||||||
|
# changing anything on the original branch.
|
||||||
|
$this->CvsTag(
|
||||||
|
'tagName' => $minibranchTag,
|
||||||
|
'branch' => '1',
|
||||||
|
'files' => \@bumpFiles,
|
||||||
|
'coDir' => catfile($cvsrootTagDir, 'mozilla'),
|
||||||
|
'logFile' => catfile($logDir, 'tag-bump_cvsroot_tag-' . $minibranchTag . '.log'),
|
||||||
|
);
|
||||||
|
|
||||||
|
# Update to the minibranch you just created.
|
||||||
|
$this->Shell(
|
||||||
|
'cmd' => 'cvs',
|
||||||
|
'cmdArgs' => ['up', '-r', $minibranchTag,
|
||||||
|
@bumpFiles,
|
||||||
|
],
|
||||||
|
'dir' => catfile($cvsrootTagDir, 'mozilla'),
|
||||||
|
'logFile' => catfile($logDir, 'tag-bump_update.log'),
|
||||||
|
);
|
||||||
|
|
||||||
|
# pull version files from the version bump minibranch
|
||||||
|
$this->Shell(
|
||||||
|
'cmd' => 'cvs',
|
||||||
|
'cmdArgs' => ['up', '-r', $minibranchTag,
|
||||||
|
@bumpFiles,
|
||||||
|
],
|
||||||
|
'dir' => catfile($cvsrootTagDir, 'mozilla'),
|
||||||
|
'logFile' => catfile($logDir, 'tag-bump-pull_minibranch.log'),
|
||||||
|
);
|
||||||
|
|
||||||
|
### Perform version bump
|
||||||
|
|
||||||
|
my $parentDir = catfile($cvsrootTagDir, 'mozilla');
|
||||||
|
foreach my $file (catfile($parentDir, $moduleVer),
|
||||||
|
catfile($parentDir, $versionTxt)) {
|
||||||
|
my $found = 0;
|
||||||
|
open(INFILE, "< $file") or die ("Could not open $file: $!");
|
||||||
|
open(OUTFILE, "> $file.tmp") or die ("Could not open $file.tmp: $!");
|
||||||
|
while(<INFILE>) {
|
||||||
|
my $preVersion = $version . 'pre';
|
||||||
|
if($_ =~ s/$preVersion/$version/) {
|
||||||
|
$found = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
print OUTFILE $_;
|
||||||
|
}
|
||||||
|
close INFILE or die ("Could not close $file: $!");
|
||||||
|
close OUTFILE or die ("Coule not close $file.tmp: $!");
|
||||||
|
if (not $found) {
|
||||||
|
die("No " . $version . "pre in file $file: $!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not move("$file.tmp",
|
||||||
|
"$file")) {
|
||||||
|
die "Cannot rename $clientMk.tmp to $clientMk: $!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add the new product tag to the client.mk
|
||||||
|
my $clientMk = catfile($cvsrootTagDir, 'mozilla', 'client.mk');
|
||||||
|
my $found = 0;
|
||||||
|
open(INFILE, "< $clientMk");
|
||||||
|
open(OUTFILE, "> $clientMk.tmp");
|
||||||
|
while(<INFILE>) {
|
||||||
|
if ($_ =~ s/$branchTag/$releaseTag/g) {
|
||||||
|
$found = 1;
|
||||||
|
}
|
||||||
|
print OUTFILE $_;
|
||||||
|
}
|
||||||
|
close INFILE;
|
||||||
|
close OUTFILE;
|
||||||
|
|
||||||
|
if (not $found) {
|
||||||
|
die("No $branchTag in file $clientMk : $!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not move("$clientMk.tmp",
|
||||||
|
"$clientMk")) {
|
||||||
|
die "Cannot rename $clientMk.tmp to $clientMk: $!";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $bumpCiMsg = 'version bump, remove pre tag for '
|
||||||
|
. $product . ' ' . $version . ' release on '
|
||||||
|
. $minibranchTag;
|
||||||
|
$this->Shell(
|
||||||
|
'cmd' => 'cvs',
|
||||||
|
'cmdArgs' => ['commit', '-m', $bumpCiMsg,
|
||||||
|
@bumpFiles,
|
||||||
|
],
|
||||||
|
'dir' => catfile($releaseTagDir, 'cvsroot', 'mozilla'),
|
||||||
|
'logFile' => catfile($logDir, 'tag-bump_checkin.log'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub Verify {
|
||||||
|
my $this = shift;
|
||||||
|
my $logDir = $config->Get('var' => 'logDir');
|
||||||
|
my $appName = $config->Get('var' => 'appName');
|
||||||
|
|
||||||
|
my $moduleVer = $appName . '/app/module.ver';
|
||||||
|
my $versionTxt = $appName . '/config/version.txt';
|
||||||
|
my @bumpFiles = ('client.mk', $moduleVer, $versionTxt);
|
||||||
|
|
||||||
|
foreach my $file (@bumpFiles) {
|
||||||
|
foreach my $rule ('^Checking in ' . $file, '^done') {
|
||||||
|
$this->CheckLog(
|
||||||
|
'log' => catfile($logDir, 'tag-bump_checkin.log'),
|
||||||
|
'checkFor' => $rule,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
62
tools/release/Bootstrap/Step/Tag/Mozilla.pm
Normal file
62
tools/release/Bootstrap/Step/Tag/Mozilla.pm
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#
|
||||||
|
# Tag Mozilla substep. Applies appropriate tags to Mozilla source code.
|
||||||
|
#
|
||||||
|
package Bootstrap::Step::Tag::Mozilla;
|
||||||
|
use Bootstrap::Step;
|
||||||
|
use Bootstrap::Config;
|
||||||
|
use Bootstrap::Step::Tag;
|
||||||
|
use File::Copy qw(move);
|
||||||
|
use File::Spec::Functions;
|
||||||
|
use MozBuild::Util qw(MkdirWithPath);
|
||||||
|
@ISA = ("Bootstrap::Step::Tag");
|
||||||
|
|
||||||
|
my $config = new Bootstrap::Config;
|
||||||
|
|
||||||
|
sub Execute {
|
||||||
|
my $this = shift;
|
||||||
|
my $product = $config->Get('var' => 'product');
|
||||||
|
my $productTag = $config->Get('var' => 'productTag');
|
||||||
|
my $branchTag = $config->Get('var' => 'branchTag');
|
||||||
|
my $pullDate = $config->Get('var' => 'pullDate');
|
||||||
|
my $rc = $config->Get('var' => 'rc');
|
||||||
|
my $version = $config->Get('var' => 'version');
|
||||||
|
my $appName = $config->Get('var' => 'appName');
|
||||||
|
my $logDir = $config->Get('var' => 'logDir');
|
||||||
|
my $mozillaCvsroot = $config->Get('var' => 'mozillaCvsroot');
|
||||||
|
my $tagDir = $config->Get('var' => 'tagDir');
|
||||||
|
|
||||||
|
my $releaseTag = $productTag.'_RELEASE';
|
||||||
|
my $rcTag = $productTag.'_RC'.$rc;
|
||||||
|
my $releaseTagDir = catfile($tagDir, $releaseTag);
|
||||||
|
my $cvsrootTagDir = catfile($releaseTagDir, 'cvsroot');
|
||||||
|
|
||||||
|
# Create the RELEASE and RC tags
|
||||||
|
foreach my $tag ($releaseTag, $rcTag) {
|
||||||
|
$this->CvsTag(
|
||||||
|
'tagName' => $tag,
|
||||||
|
'coDir' => catfile($cvsrootTagDir, 'mozilla'),
|
||||||
|
'logFile' => catfile($logDir,
|
||||||
|
'tag-mozilla_cvsroot_tag-' . $tag . '.log'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub Verify {
|
||||||
|
my $this = shift;
|
||||||
|
|
||||||
|
my $productTag = $config->Get('var' => 'productTag');
|
||||||
|
my $logDir = $config->Get('var' => 'logDir');
|
||||||
|
my $rc = $config->Get('var' => 'rc');
|
||||||
|
|
||||||
|
my $releaseTag = $productTag.'_RELEASE';
|
||||||
|
my $rcTag = $productTag.'_RC'.$rc;
|
||||||
|
|
||||||
|
foreach my $tag ($releaseTag, $rcTag) {
|
||||||
|
$this->CheckLog(
|
||||||
|
'log' => catfile($logDir, 'tag-mozilla_cvsroot_tag-' . $tag . '.log'),
|
||||||
|
'checkFor' => '^T',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
68
tools/release/Bootstrap/Step/Tag/Talkback.pm
Normal file
68
tools/release/Bootstrap/Step/Tag/Talkback.pm
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
#
|
||||||
|
# Tag step. Applies a CVS tag to the appropriate repositories.
|
||||||
|
#
|
||||||
|
package Bootstrap::Step::Tag::Talkback;
|
||||||
|
use Bootstrap::Step;
|
||||||
|
use Bootstrap::Config;
|
||||||
|
use Bootstrap::Step::Tag;
|
||||||
|
use File::Copy qw(move);
|
||||||
|
use File::Spec::Functions;
|
||||||
|
use MozBuild::Util qw(MkdirWithPath);
|
||||||
|
@ISA = ("Bootstrap::Step::Tag");
|
||||||
|
|
||||||
|
my $config = new Bootstrap::Config;
|
||||||
|
|
||||||
|
sub Execute {
|
||||||
|
my $this = shift;
|
||||||
|
|
||||||
|
my $product = $config->Get('var' => 'product');
|
||||||
|
my $productTag = $config->Get('var' => 'productTag');
|
||||||
|
my $branchTag = $config->Get('var' => 'branchTag');
|
||||||
|
my $pullDate = $config->Get('var' => 'pullDate');
|
||||||
|
my $logDir = $config->Get('var' => 'logDir');
|
||||||
|
my $mofoCvsroot = $config->Get('var' => 'mofoCvsroot');
|
||||||
|
my $tagDir = $config->Get('var' => 'tagDir');
|
||||||
|
|
||||||
|
my $releaseTag = $productTag.'_RELEASE';
|
||||||
|
my $releaseTagDir = catfile($tagDir, $releaseTag);
|
||||||
|
|
||||||
|
# Create the mofo tag directory.
|
||||||
|
my $mofoDir = catfile($releaseTagDir, 'mofo');
|
||||||
|
if (not -d $mofoDir) {
|
||||||
|
MkdirWithPath('dir' => $mofoDir)
|
||||||
|
or die "Cannot mkdir $mofoDir: $!";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check out the talkback files from the branch you want to tag.
|
||||||
|
$this->Shell(
|
||||||
|
'cmd' => 'cvs',
|
||||||
|
'cmdArgs' => ['-d', $mofoCvsroot, 'co', '-r', $branchTag, '-D',
|
||||||
|
$pullDate, catfile('talkback', 'fullsoft')],
|
||||||
|
'dir' => catfile($releaseTagDir, 'mofo'),
|
||||||
|
'logFile' => catfile($logDir, 'tag-talkback_mofo-checkout.log'),
|
||||||
|
);
|
||||||
|
|
||||||
|
# Create the talkback RELEASE tag.
|
||||||
|
$this->CvsTag(
|
||||||
|
'tagName' => $releaseTag,
|
||||||
|
'coDir' => catfile($releaseTagDir, 'mofo', 'talkback', 'fullsoft'),
|
||||||
|
'logFile' => catfile($logDir,
|
||||||
|
'tag-talkback_mofo-tag-' . $releaseTag . '.log'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub Verify {
|
||||||
|
my $this = shift;
|
||||||
|
my $logDir = $config->Get('var' => 'logDir');
|
||||||
|
my $productTag = $config->Get('var' => 'productTag');
|
||||||
|
|
||||||
|
my $releaseTag = $productTag.'_RELEASE';
|
||||||
|
|
||||||
|
$this->CheckLog(
|
||||||
|
'log' => catfile($logDir,
|
||||||
|
'tag-talkback_mofo-tag-' . $releaseTag . '.log'),
|
||||||
|
'checkFor' => '^T',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
94
tools/release/Bootstrap/Step/Tag/l10n.pm
Normal file
94
tools/release/Bootstrap/Step/Tag/l10n.pm
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
#
|
||||||
|
# Tag step. Applies a CVS tag to the appropriate repositories.
|
||||||
|
#
|
||||||
|
package Bootstrap::Step::Tag::l10n;
|
||||||
|
use Bootstrap::Step;
|
||||||
|
use Bootstrap::Config;
|
||||||
|
use Bootstrap::Step::Tag;
|
||||||
|
use File::Copy qw(move);
|
||||||
|
use File::Spec::Functions;
|
||||||
|
use MozBuild::Util qw(MkdirWithPath);
|
||||||
|
@ISA = ("Bootstrap::Step::Tag");
|
||||||
|
|
||||||
|
my $config = new Bootstrap::Config;
|
||||||
|
|
||||||
|
sub Execute {
|
||||||
|
my $this = shift;
|
||||||
|
|
||||||
|
my $product = $config->Get('var' => 'product');
|
||||||
|
my $productTag = $config->Get('var' => 'productTag');
|
||||||
|
my $branchTag = $config->Get('var' => 'branchTag');
|
||||||
|
my $l10n_pullDate = $config->Get('var' => 'l10n_pullDate');
|
||||||
|
my $rc = $config->Get('var' => 'rc');
|
||||||
|
my $appName = $config->Get('var' => 'appName');
|
||||||
|
my $logDir = $config->Get('var' => 'logDir');
|
||||||
|
my $l10nCvsroot = $config->Get('var' => 'l10nCvsroot');
|
||||||
|
my $tagDir = $config->Get('var' => 'tagDir');
|
||||||
|
|
||||||
|
my $releaseTag = $productTag.'_RELEASE';
|
||||||
|
my $rcTag = $productTag.'_RC'.$rc;
|
||||||
|
my $releaseTagDir = catfile($tagDir, $releaseTag);
|
||||||
|
|
||||||
|
# Create the l10n tag directory.
|
||||||
|
my $l10nDir = catfile($releaseTagDir, 'l10n');
|
||||||
|
if (not -d $l10nDir) {
|
||||||
|
MkdirWithPath('dir' => $l10nDir)
|
||||||
|
or die "Cannot mkdir $l10nDir: $!";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Grab list of shipped locales
|
||||||
|
my $shippedLocales = catfile($releaseTagDir, 'cvsroot', 'mozilla',
|
||||||
|
$appName, 'locales', 'shipped-locales');
|
||||||
|
open (FILE, "< $shippedLocales")
|
||||||
|
or die "Cannot open file $shippedLocales: $!";
|
||||||
|
my @locales = <FILE>;
|
||||||
|
close FILE or die "Cannot close file $shippedLocales: $!";
|
||||||
|
|
||||||
|
# Check out the l10n files from the branch you want to tag.
|
||||||
|
for my $locale (@locales) {
|
||||||
|
# only keep first column
|
||||||
|
$locale =~ s/(\s+).*//;
|
||||||
|
# remove line endings
|
||||||
|
$locale =~ s/(\n)//;
|
||||||
|
# skip en-US, this is the default locale
|
||||||
|
if ($locale eq 'en-US') {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
$this->Shell(
|
||||||
|
'cmd' => 'cvs',
|
||||||
|
'cmdArgs' => ['-d', $l10nCvsroot, 'co', '-r', $branchTag, '-D',
|
||||||
|
$l10n_pullDate, catfile('l10n', $locale)],
|
||||||
|
'dir' => catfile($releaseTagDir, 'l10n'),
|
||||||
|
'logFile' => catfile($logDir, 'tag-l10n_checkout.log'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create the l10n RELEASE and RC tags.
|
||||||
|
foreach my $tag ($releaseTag, $rcTag) {
|
||||||
|
$this->CvsTag(
|
||||||
|
'tagName' => $tag,
|
||||||
|
'coDir' => catfile($releaseTagDir, 'l10n', 'l10n'),
|
||||||
|
'logFile' => catfile($logDir, 'tag-l10n_tag_' . $tag. '.log'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub Verify {
|
||||||
|
my $this = shift;
|
||||||
|
|
||||||
|
my $logDir = $config->Get('var' => 'logDir');
|
||||||
|
my $productTag = $config->Get('var' => 'productTag');
|
||||||
|
my $rc = $config->Get('var' => 'rc');
|
||||||
|
|
||||||
|
my $releaseTag = $productTag.'_RELEASE';
|
||||||
|
my $rcTag = $productTag.'_RC'.$rc;
|
||||||
|
|
||||||
|
foreach my $tag ($releaseTag, $rcTag) {
|
||||||
|
$this->CheckLog(
|
||||||
|
'log' => catfile($logDir, 'tag-l10n_tag_' . $tag . '.log'),
|
||||||
|
'checkFor' => '^T',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
Loading…
Reference in a new issue