michael@0: #!/usr/bin/perl -w michael@0: # This Source Code Form is subject to the terms of the Mozilla Public michael@0: # License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: # file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: michael@0: use Getopt::Long; michael@0: michael@0: use strict; michael@0: use vars qw( michael@0: $OBJDIR michael@0: $SRCDIR michael@0: $TOPSRCDIR michael@0: $SCRIPTDIR michael@0: @TEMPLATE_FILE michael@0: $MILESTONE_FILE michael@0: $MILESTONE michael@0: $MILESTONE_NUM michael@0: @MILESTONE_PARTS michael@0: $MINI_VERSION michael@0: $MICRO_VERSION michael@0: $opt_debug michael@0: $opt_template michael@0: $opt_uaversion michael@0: $opt_symbolversion michael@0: $opt_help michael@0: ); michael@0: michael@0: $SCRIPTDIR = $0; michael@0: $SCRIPTDIR =~ s/[^\/]*$//; michael@0: push(@INC,$SCRIPTDIR); michael@0: michael@0: require "Moz/Milestone.pm"; michael@0: michael@0: &GetOptions('topsrcdir=s' => \$TOPSRCDIR, 'srcdir=s' => \$SRCDIR, 'objdir=s' => \$OBJDIR, 'debug', 'help', 'template', 'uaversion', 'symbolversion'); michael@0: michael@0: if (defined($opt_help)) { michael@0: &usage(); michael@0: exit; michael@0: } michael@0: michael@0: if (defined($opt_template)) { michael@0: @TEMPLATE_FILE = @ARGV; michael@0: if ($opt_debug) { michael@0: print("TEMPLATE_FILE = --@TEMPLATE_FILE--\n"); michael@0: } michael@0: } michael@0: michael@0: if (!defined($SRCDIR)) { $SRCDIR = '.'; } michael@0: if (!defined($OBJDIR)) { $OBJDIR = '.'; } michael@0: michael@0: $MILESTONE_FILE = "$TOPSRCDIR/config/milestone.txt"; michael@0: @MILESTONE_PARTS = (0, 0, 0, 0); michael@0: michael@0: # michael@0: # Grab milestone (top line of $MILESTONE_FILE that starts with a digit) michael@0: # michael@0: my $milestone = Moz::Milestone::getOfficialMilestone($MILESTONE_FILE); michael@0: michael@0: if (@TEMPLATE_FILE) { michael@0: my $TFILE; michael@0: michael@0: foreach $TFILE (@TEMPLATE_FILE) { michael@0: my $BUILT_FILE = "$OBJDIR/$TFILE"; michael@0: $TFILE = "$SRCDIR/$TFILE.tmpl"; michael@0: michael@0: if (-e $TFILE) { michael@0: michael@0: Moz::Milestone::build_file($TFILE,$BUILT_FILE); michael@0: michael@0: } else { michael@0: warn("$0: No such file $TFILE!\n"); michael@0: } michael@0: } michael@0: } elsif(defined($opt_uaversion)) { michael@0: # Only expose the major milestone in the UA string, hide the patch level michael@0: # (bugs 572659 and 870868). michael@0: my $uaversion = Moz::Milestone::getMilestoneMajor($milestone) . ".0"; michael@0: print "$uaversion\n"; michael@0: } elsif(defined($opt_symbolversion)) { michael@0: # Only expose major milestone and alpha version. Used for symbol versioning michael@0: # on Linux. michael@0: my $symbolversion = Moz::Milestone::getMilestoneMajor($milestone) . michael@0: Moz::Milestone::getMilestoneABWithNum($milestone); michael@0: print "$symbolversion\n"; michael@0: } else { michael@0: print "$milestone\n"; michael@0: } michael@0: michael@0: sub usage() { michael@0: print <