small change to the version changer for release builds
This commit is contained in:
parent
3750788893
commit
efbba0a909
|
@ -1,185 +1,195 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
our %arguments =
|
||||
(
|
||||
'config' => 'modules.versions',
|
||||
'major' => '1',
|
||||
'minor' => '0',
|
||||
'revision' => '0',
|
||||
'build' => undef,
|
||||
'svnrev' => 'global',
|
||||
'path' => '',
|
||||
'modules' => '',
|
||||
);
|
||||
|
||||
my $arg;
|
||||
foreach $arg (@ARGV)
|
||||
{
|
||||
$arg =~ s/--//;
|
||||
@arg = split(/=/, $arg);
|
||||
$arguments{$arg[0]} = $arg[1];
|
||||
}
|
||||
|
||||
our (%allowed);
|
||||
if ($arguments{'modules'} ne "")
|
||||
{
|
||||
my @l = split(/,/, $arguments{'modules'});
|
||||
my $i;
|
||||
|
||||
for ($i=0; $i<=$#l; $i++)
|
||||
{
|
||||
$allowed{$l[$i]} = 1;
|
||||
}
|
||||
} else {
|
||||
$allowed{'*'} = 1;
|
||||
}
|
||||
|
||||
#Set up path info
|
||||
if ($arguments{'path'} ne "")
|
||||
{
|
||||
if (!(-d $arguments{'path'}))
|
||||
{
|
||||
die "Unable to find path: " . $arguments{'path'} ."\n";
|
||||
}
|
||||
chdir($arguments{'path'});
|
||||
}
|
||||
|
||||
if (!open(CONFIG, $arguments{'config'}))
|
||||
{
|
||||
die "Unable to open config file for reading: " . $arguments{'config'} . "\n";
|
||||
}
|
||||
|
||||
our %modules;
|
||||
my $cur_module = undef;
|
||||
my $line;
|
||||
while (<CONFIG>)
|
||||
{
|
||||
chomp;
|
||||
$line = $_;
|
||||
if ($line =~ /^\[([^\]]+)\]$/)
|
||||
{
|
||||
$cur_module = $1;
|
||||
next;
|
||||
}
|
||||
if (!$cur_module)
|
||||
{
|
||||
next;
|
||||
}
|
||||
if ($line =~ /^([^=]+) = (.+)$/)
|
||||
{
|
||||
$modules{$cur_module}{$1} = $2;
|
||||
}
|
||||
}
|
||||
|
||||
close(CONFIG);
|
||||
|
||||
#Copy global configuration options...
|
||||
if (exists($modules{'PRODUCT'}))
|
||||
{
|
||||
if (exists($modules{'PRODUCT'}{'major'}))
|
||||
{
|
||||
$arguments{'major'} = $modules{'PRODUCT'}{'major'};
|
||||
}
|
||||
if (exists($modules{'PRODUCT'}{'minor'}))
|
||||
{
|
||||
$arguments{'minor'} = $modules{'PRODUCT'}{'minor'};
|
||||
}
|
||||
if (exists($modules{'PRODUCT'}{'revision'}))
|
||||
{
|
||||
$arguments{'revision'} = $modules{'PRODUCT'}{'revision'};
|
||||
}
|
||||
if (exists($modules{'PRODUCT'}{'svnrev'}))
|
||||
{
|
||||
$arguments{'svnrev'} = $modules{'PRODUCT'}{'svnrev'};
|
||||
}
|
||||
}
|
||||
|
||||
#Get the global SVN revision if we have none
|
||||
my $rev;
|
||||
if ($arguments{'build'} == undef)
|
||||
{
|
||||
$rev = GetRevision(undef);
|
||||
} else {
|
||||
$rev = int($arguments{'build'});
|
||||
}
|
||||
|
||||
my $major = $arguments{'major'};
|
||||
my $minor = $arguments{'minor'};
|
||||
my $revision = $arguments{'revision'};
|
||||
my $svnrev = $arguments{'svnrev'};
|
||||
|
||||
#Go through everything now
|
||||
my $mod_i;
|
||||
while ( ($cur_module, $mod_i) = each(%modules) )
|
||||
{
|
||||
#Skip the magic one
|
||||
if ($cur_module eq "PRODUCT")
|
||||
{
|
||||
next;
|
||||
}
|
||||
if (!$allowed{'*'} && !$allowed{$cur_module})
|
||||
{
|
||||
next;
|
||||
}
|
||||
#Prepare path
|
||||
my %mod = %{$mod_i};
|
||||
my $infile = $mod{'in'};
|
||||
my $outfile = $mod{'out'};
|
||||
if ($mod{'folder'})
|
||||
{
|
||||
if (!(-d $mod{'folder'}))
|
||||
{
|
||||
die "Folder " . $mod{'folder'} . " not found.\n";
|
||||
}
|
||||
$infile = $mod{'folder'} . '/' . $infile;
|
||||
$outfile = $mod{'folder'} . '/' . $outfile;
|
||||
}
|
||||
if (!(-f $infile))
|
||||
{
|
||||
die "File $infile is not a file.\n";
|
||||
}
|
||||
my $global_rev = $rev;
|
||||
my $local_rev = GetRevision($mod{'folder'});
|
||||
if ($arguments{'svnrev'} eq 'local')
|
||||
{
|
||||
$global_rev = $local_rev;
|
||||
}
|
||||
#Start rewriting
|
||||
open(INFILE, $infile) or die "Could not open file for reading: $infile\n";
|
||||
open(OUTFILE, '>'.$outfile) or die "Could not open file for writing: $outfile\n";
|
||||
while (<INFILE>)
|
||||
{
|
||||
s/\$PMAJOR\$/$major/g;
|
||||
s/\$PMINOR\$/$minor/g;
|
||||
s/\$PREVISION\$/$revision/g;
|
||||
s/\$GLOBAL_BUILD\$/$rev/g;
|
||||
s/\$LOCAL_BUILD\$/$local_rev/g;
|
||||
print OUTFILE $_;
|
||||
}
|
||||
close(OUTFILE);
|
||||
close(INFILE);
|
||||
}
|
||||
|
||||
sub GetRevision
|
||||
{
|
||||
my ($path)=(@_);
|
||||
my $rev;
|
||||
if (!$path)
|
||||
{
|
||||
$rev = `svnversion --committed`;
|
||||
} else {
|
||||
$rev = `svnversion --committed $path`;
|
||||
}
|
||||
if ($rev =~ /exported/)
|
||||
{
|
||||
die "Path specified is not a working copy\n";
|
||||
} elsif ($rev =~ /(\d+):(\d+)/) {
|
||||
$rev = int($2);
|
||||
} elsif ($rev =~ /(\d+)/) {
|
||||
$rev = int($1);
|
||||
} else {
|
||||
die "Unknown svnversion response: $rev\n";
|
||||
}
|
||||
return $rev;
|
||||
}
|
||||
|
||||
#!/usr/bin/perl
|
||||
|
||||
our %arguments =
|
||||
(
|
||||
'config' => 'modules.versions',
|
||||
'major' => '1',
|
||||
'minor' => '0',
|
||||
'revision' => '0',
|
||||
'build' => undef,
|
||||
'svnrev' => 'global',
|
||||
'path' => '',
|
||||
'modules' => '',
|
||||
);
|
||||
|
||||
my $arg;
|
||||
foreach $arg (@ARGV)
|
||||
{
|
||||
$arg =~ s/--//;
|
||||
@arg = split(/=/, $arg);
|
||||
$arguments{$arg[0]} = $arg[1];
|
||||
}
|
||||
|
||||
our (%allowed);
|
||||
if ($arguments{'modules'} ne "")
|
||||
{
|
||||
my @l = split(/,/, $arguments{'modules'});
|
||||
my $i;
|
||||
|
||||
for ($i=0; $i<=$#l; $i++)
|
||||
{
|
||||
$allowed{$l[$i]} = 1;
|
||||
}
|
||||
} else {
|
||||
$allowed{'*'} = 1;
|
||||
}
|
||||
|
||||
#Set up path info
|
||||
if ($arguments{'path'} ne "")
|
||||
{
|
||||
if (!(-d $arguments{'path'}))
|
||||
{
|
||||
die "Unable to find path: " . $arguments{'path'} ."\n";
|
||||
}
|
||||
chdir($arguments{'path'});
|
||||
}
|
||||
|
||||
if (!open(CONFIG, $arguments{'config'}))
|
||||
{
|
||||
die "Unable to open config file for reading: " . $arguments{'config'} . "\n";
|
||||
}
|
||||
|
||||
our %modules;
|
||||
my $cur_module = undef;
|
||||
my $line;
|
||||
while (<CONFIG>)
|
||||
{
|
||||
chomp;
|
||||
$line = $_;
|
||||
if ($line =~ /^\[([^\]]+)\]$/)
|
||||
{
|
||||
$cur_module = $1;
|
||||
next;
|
||||
}
|
||||
if (!$cur_module)
|
||||
{
|
||||
next;
|
||||
}
|
||||
if ($line =~ /^([^=]+) = (.+)$/)
|
||||
{
|
||||
$modules{$cur_module}{$1} = $2;
|
||||
}
|
||||
}
|
||||
|
||||
close(CONFIG);
|
||||
|
||||
#Copy global configuration options...
|
||||
if (exists($modules{'PRODUCT'}))
|
||||
{
|
||||
if (exists($modules{'PRODUCT'}{'major'}))
|
||||
{
|
||||
$arguments{'major'} = $modules{'PRODUCT'}{'major'};
|
||||
}
|
||||
if (exists($modules{'PRODUCT'}{'minor'}))
|
||||
{
|
||||
$arguments{'minor'} = $modules{'PRODUCT'}{'minor'};
|
||||
}
|
||||
if (exists($modules{'PRODUCT'}{'revision'}))
|
||||
{
|
||||
$arguments{'revision'} = $modules{'PRODUCT'}{'revision'};
|
||||
}
|
||||
if (exists($modules{'PRODUCT'}{'svnrev'}))
|
||||
{
|
||||
$arguments{'svnrev'} = $modules{'PRODUCT'}{'svnrev'};
|
||||
}
|
||||
}
|
||||
|
||||
#Get the global SVN revision if we have none
|
||||
my $rev;
|
||||
if ($arguments{'build'} == undef)
|
||||
{
|
||||
$rev = GetRevision(undef);
|
||||
} else {
|
||||
$rev = int($arguments{'build'});
|
||||
}
|
||||
|
||||
my $major = $arguments{'major'};
|
||||
my $minor = $arguments{'minor'};
|
||||
my $revision = $arguments{'revision'};
|
||||
my $svnrev = $arguments{'svnrev'};
|
||||
|
||||
#Go through everything now
|
||||
my $mod_i;
|
||||
while ( ($cur_module, $mod_i) = each(%modules) )
|
||||
{
|
||||
#Skip the magic one
|
||||
if ($cur_module eq "PRODUCT")
|
||||
{
|
||||
next;
|
||||
}
|
||||
if (!$allowed{'*'} && !$allowed{$cur_module})
|
||||
{
|
||||
next;
|
||||
}
|
||||
#Prepare path
|
||||
my %mod = %{$mod_i};
|
||||
my $infile = $mod{'in'};
|
||||
my $outfile = $mod{'out'};
|
||||
if ($mod{'folder'})
|
||||
{
|
||||
if (!(-d $mod{'folder'}))
|
||||
{
|
||||
die "Folder " . $mod{'folder'} . " not found.\n";
|
||||
}
|
||||
$infile = $mod{'folder'} . '/' . $infile;
|
||||
$outfile = $mod{'folder'} . '/' . $outfile;
|
||||
}
|
||||
if (!(-f $infile))
|
||||
{
|
||||
die "File $infile is not a file.\n";
|
||||
}
|
||||
my $global_rev = $rev;
|
||||
my $local_rev;
|
||||
|
||||
if ($arguments{'build'} == undef)
|
||||
{
|
||||
$local_rev = GetRevision($mod{'folder'});
|
||||
}
|
||||
else
|
||||
{
|
||||
$local_rev = $rev;
|
||||
}
|
||||
|
||||
if ($arguments{'svnrev'} eq 'local')
|
||||
{
|
||||
$global_rev = $local_rev;
|
||||
}
|
||||
#Start rewriting
|
||||
open(INFILE, $infile) or die "Could not open file for reading: $infile\n";
|
||||
open(OUTFILE, '>'.$outfile) or die "Could not open file for writing: $outfile\n";
|
||||
while (<INFILE>)
|
||||
{
|
||||
s/\$PMAJOR\$/$major/g;
|
||||
s/\$PMINOR\$/$minor/g;
|
||||
s/\$PREVISION\$/$revision/g;
|
||||
s/\$GLOBAL_BUILD\$/$rev/g;
|
||||
s/\$LOCAL_BUILD\$/$local_rev/g;
|
||||
print OUTFILE $_;
|
||||
}
|
||||
close(OUTFILE);
|
||||
close(INFILE);
|
||||
}
|
||||
|
||||
sub GetRevision
|
||||
{
|
||||
my ($path)=(@_);
|
||||
my $rev;
|
||||
if (!$path)
|
||||
{
|
||||
$rev = `svnversion --committed`;
|
||||
} else {
|
||||
$rev = `svnversion --committed $path`;
|
||||
}
|
||||
if ($rev =~ /exported/)
|
||||
{
|
||||
die "Path specified is not a working copy\n";
|
||||
} elsif ($rev =~ /(\d+):(\d+)/) {
|
||||
$rev = int($2);
|
||||
} elsif ($rev =~ /(\d+)/) {
|
||||
$rev = int($1);
|
||||
} else {
|
||||
die "Unknown svnversion response: $rev\n";
|
||||
}
|
||||
return $rev;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user