The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2008-2011 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.