NAME
Maplat::Helpers::BuildNum - get the build number of the application
SYNOPSIS
use Maplat::Helpers::BuildNum;
my $buildnum = readBuildNum();
my $buildnum = readBuildNum("buildnum", 1); # when running compiled
my $buildnum = calcBuildNum();
DESCRIPTION
This module is used in conjunction with compiled perl scripts (e.g. when compiled with ActiveState tools or similar).
It's very usefull when upgrading a server to know the build numbers (see below) of a compiled perl program. When used in a scripted environment, the build number is generated on the fly.
calcbuildNum
Calculates a build number, consisting of the build date and the hostname of the computer used.
readBuildNum
Returns the build number.
The build number consists of the form
Xdate_hostname
Where date is the build date and time (or date/time of the first call to the function when running non-compiled), hostname the hostname of the computer the binary was build.
"X" is either one of R ("runtime", interpreted script), C (compiled) or "G" (compiled script but unable to read the compiled-in build number, so build-number is generated at runtime).
The function takes two optional arguments, $filename and $iscompiled:
my $buildnum = readBuildNum("buildnum", 1);
This is used when compiled with the ActiveState PDK and must be set depending on your development environment. The $filename is the name of the bound file, consisting of one line, the build number.
calcBuildNum
Calculates a build number, see "Adding an automatic build number to your program"
Adding an automatic build number to your program
To work correctly, building should be done with a perl script, something like this:
use Maplat::Helpers::BuildNum;
...
my $cmd = "perlapp " .
" --icon " . $opts{icon} .
" --norunlib " .
" --nocompress " .
" --nologo " .
" --manifest " . $opts{mf} .
" --clean " .
" --trim " . join(";", @trimmodules) . " " .
" --force " .
" --bind buildnum[data=" . calcBuildNum . "] " .
" --exe " . $opts{exe} .
" " . $opts{main};
`$cmd`;
Then, at runtime, you can get the current build number:
use Maplat::Helpers::BuildNum;
our $isCompiled = 0;
if(defined($PerlApp::VERSION)) {
$isCompiled = 1;
}
my $buildnum = readBuildNum("buildnum", $isCompiled);
AUTHOR
Rene Schickbauer, <rene.schickbauer@magnapowertrain.com>
COPYRIGHT AND LICENSE
Copyright (C) 2009 by Rene Schickbauer
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.