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

NAME

Shipwright::Manual::CustomizeBuild - Customize the build method for a source

DESCRIPTION

There are currently two ways to build a source: through a perl script (scripts/foo/build.pl) which allows for heavy customization, or using a list of tagged commands (scripts/foo/build), which is simpler but less customizable.

scripts/foo/build.pl has higher precedence, so if both scripts/foo/build.pl and scripts/foo/build exist, the former will be used.

build.pl

When executing build.pl for the source foo, the current working directory will be dists/foo

The script will be run with a list of arguments (the format is designed to be easily extracted with Getopt::Long):

--install-base=s

The base directory where the vessel is to be built to.

e.g. --install-base '/tmp/test-xxxxxx/test'

--flags=s

A list of flags, joined by comma. (See Shipwright::Manual::UsingFlags for more information.)

e.g. --flags default,mysql

--skip-test

Whether to skip running tests or not.

--force

If any test fails, whether to go on or just die.

--clean

If run with this argument, the script should do the clean work instead of the install work.

build

This is a text file; each line should be either blank or use the format type: command. The command will be executed line by line, and the current working directory for building the source foo will be dists/foo.

In a normal build script, the following types of commands are specified: configure, make, install, clean, and sometimes test. Their functions should be self-explanatory for anyone familiar with building perl modules.

Four template substitutions are available for use in the command: %%PERL%%, %%PERL_ARCHNAME%%, %%INSTALL_BASE%% and %%MAKE%%. These can be used in cases where the path to perl, the perl archname (e.g. 'i486-linux-gnu-thread-multi'), the base install path or make command are needed, since they are not known beforehand or need to choose one later.

There are two special types: test and clean.

test

If executed with --skip-test, this command won't be executed. If executed with --force, even if this command fails the build will continue.

clean

If executed with --clean, all commands will be skipped except this one.

SEE ALSO

Shipwright, Shipwright::Manual

AUTHORS

sunnavy <sunnavy@bestpractical.com>

LICENCE AND COPYRIGHT

Shipwright is Copyright 2007-2012 Best Practical Solutions, LLC.

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