NAME

dtRdrBuilder - Custom build methods for dotReader

SYNOPSIS

Build Build Build Build Build Build
      Build Build Build Build Build Build
Build Build Build             Build       Build Build
      Build       Build Build       Build Build Build
            Build             Build
      Build Build Build Build
                                                Build
            Build Build
                              Build Build Build
Build Build Build
Build

Build


Build

General Notes

The build system has occassionally been a catch-all for stuff that should maybe be a standalone utility, etc. Thus, it is subject to the same laws of chaos as the rest of the codebase, except that it has no tests.

Therefore, code with the goal of making this package smaller.

Avoid Static Dependencies

Not only do they break CPAN-based builds/tests, they also make it harder to yank-out the code and put it where it should be.

ACTIONS

testgui

Run the gui tests.

testsync

Run the sync tests.

testbinary

Test the built binary. This runs (mostly) in the same context as a distributed .par/.app bundle.

Requires a graphical display, but (hopefully) no interaction.

runbinary

Runs the binary interactively.

par

This is now deprecated in favor of the mini. Still need the --mini option to get there though.

Build a binfilename() (e.g. 'binary_build/dotreader.exe') par.

By default, this has no console on windows. Use the "--nogui" option to enable console output (only matters on windows.)

build par --nogui 
par_parts

Build the par_mini and then bundle it into an executable.

par_mini

Build a '.par' archive with all of the project code.

The dependencies for this build the par_core, which builds par_deps, which builds par_wx.

These four files (the deps, plus the main archive) are all that is needed to construct a brand new executable binary on the client. More on this later.

par_seed
par_pl

Build the blib/dotReader.pl file.

This contains hardcoded version numbers for the dependency bits. It gets built into the par_mini file using the seed.par, which solves the chicken/egg problem.

par_wx

par_blacklist

Module::ScanDeps gets a bit too agressive

$self->par_blacklist;
par_deps

Bundle all of the non-core, non-wx dependencies.

par_core
restore_par_cache

Assumes ~/.dotreader_dep_cache/

repar

Build and repackage the 'data/' directory for the par.

./Build repar

./Build repar nodata
datadir

Build the embedded par 'data/' directory in blib/pardata/.

parmanifest

Extract the MANIFEST file from the current par (saves compilation time on the next BUILD par)

starter_data

Assemble a default config, library, and some free books in "binary_build/dotreader-data/"

binary

Builds the binary and starter data for the current platform.

binary_package

Build the binary, starter data, and wrap it up.

Also takes a --bare argument

Helpers and Such

binary_package_name

Assembles platform, modifiers, version (and previewness) values into a name (without .extension)

my $packname = $self->binary_package_name;

binary_package_linux

Linux and others.

$self->binary_package_linux;

binary_package_darwin

$self->binary_package_darwin;

binary_package_MSWin32

$self->binary_package_MSWin32;

copy_package_files

$self->copy_package_files($dir); # useful for mac too

_module_map

my %map = _module_map()

run_binary

Run the binary, returns stdout and stderr strings, replaces the first_time file (if it didn't crash.)

my ($out, $err) = $self->run_binary;

binfilename

A filename for the binary.

binfilename_sys

The mac binfilename is a directory. This gets an actual binary filename. On windows and linux it is exactly binfilename().

bin_version

Same as dist_version iff --release V

$self->bin_version;

par_dep_file

Returns the basename for the par dependency file.

$file = $self->par_dep_file($tag);

update_dep_version

Returns a new version number for the dependency tag or undef if it has not changed.

$version = $self->update_dep_version($tag);

dep_version

Returns the current version number for the dependency tag. This will be the dotReader version number at which it was last changed.

$version = $self->dep_version($tag);

deplist_file

my $checkfile = $self->deplist_file($tag);

dependency_hints

my $string = $self->dependency_hints;

external_libs

@libs = $self->external_libs;

which_pp

The pp command

grab_manifest

$string = $self->grab_manifest($zipfile);

scan_deps

$self->scan_deps(
  modules => \@mods,
  files => \@files,
  string => \$string
);

copy_from_manifest

$self->copy_from_manifest($mfile, $srcdir, $destdir);

Overridden Methods

find_pm_files

Overridden to eliminate platform-specific deps.

Also, fixes QDOS problems.

$self->find_pm_files;

AUTHOR

Eric Wilhelm <ewilhelm at cpan dot org>

http://scratchcomputing.com/

COPYRIGHT

Copyright (C) 2006 Eric L. Wilhelm and OSoft, All Rights Reserved.

NO WARRANTY

Absolutely, positively NO WARRANTY, neither express or implied, is offered with this software. You use this software at your own risk. In case of loss, neither Eric Wilhelm, nor anyone else, owes you anything whatseover. You have been warned.

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 560:

You forgot a '=back' before '=head2'

Around line 584:

'=item' outside of any '=over'