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

NAME

Perl::Dist::Builder - Create win32 Perl installers

SYNOPSIS

 use Perl::Dist::Builder;
 my $pdb = Perl::Dist::Builder->new( 'vanilla.yml' );
 $pdb->remove_image;
 $pdb->build_all;

DESCRIPTION

Perl::Dist::Builder is alpha software.

Perl::Dist::Builder uses a configuration file to automatically generate a complete, standalone Perl distribution in a directory suitable for bundling into an executable installer.

Perl::Dist::Builder requires Perl and numerous modules. See Perl::Dist::Bootstrap for details on how to bootstrap a Perl environment suitable for building new Perl distributions.

CONFIGURATION FILE

To be documented after Perl::Dist::Builder is refactored. See the config files in Perl::Dist::Vanilla and Perl::Dist::Strawberry for current examples. Some sections currently have no effect.

CREATING THE INSTALLER

Perl::Dist::Builder is not yet integrated with tools to create the executable. Installers for Vanilla Perl, etc. have been created with the free Inno Setup tool. Inno Setup can be downloaded from jrsoftware.org: http://www.jrsoftware.org/isinfo.php

Inno Setup is configured with .iss files included in Perl::Dist::Vanilla and Perl::Dist::Strawberry. A future version of Perl::Dist::Builder will likely auto-generate the .iss file.

METHODS

new()

 my $pdb = Perl::Dist::Builder->new( $yaml_config_file );

Create a new builder object, initialized from a YAML configuration file.

build_all()

 $pdb->build_all;

Runs all build tasks in order:

  • install_binaries

  • install_perl

  • install_modules

  • install_extras

  • install_from_cpan

Does not delete the existing image directory.

install_binaries()

 $pdb->install_binaries;

Downloads binary packages (e.g. compiler, dmake) from URLs provided in the config file. Unpacks them (or portions of them) into the image directory.

install_from_cpan()

 $pdb->install_from_cpan;

Uses the copy of perl in the image directory to run CPAN and install modules defined in the config file.

install_extras()

 $pdb->install_extras;

Copies local files into the image directory. E.g. documentation, menu shortcuts, CPAN starter config file, etc.

install_modules()

 $pdb->install_modules;

Downloads tarballs for modules defined in the config file, unpacks them and installs them directly using "Makefile.PL" and "dmake". Does not invoke CPAN. (Used primarily to get necessary prerequisite modules to make CPAN work sanely and safely without binary helpers on Win32.)

install_perl()

 $pdb->install_perl;

Downloads Perl source tarball, unpacks it, builds it, and installs it into the image directory.

remove_image()

 $pdb->remove_image;

Removes the "image_dir" directory specified in the config file, if it exists, and prints a diagnostic message.

ROADMAP

Massive refactoring/rewrite is needed. This initial version is a crudely modulized form of individual perl scripts used in the early development process of Vanilla Perl. The next version is likely to use a plugin-driven approach for extensibility and customization. Other than build_all, the API is almost certain to change.

Additional documentation will be created after refactoring.

BUGS

Please report any bugs or feature using the CPAN Request Tracker. Bugs can be submitted by email to bug-Perl-Dist@rt.cpan.org or through the web interface at http://rt.cpan.org/Public/Dist/Display.html?Name=Perl-Dist

AUTHOR

David A. Golden (DAGOLDEN)

dagolden@cpan.org

http://dagolden.com/

COPYRIGHT AND LICENSE

Copyright (c) 2006 by David A. Golden

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

The full text of the license can be found in the LICENSE file included with this module.

DISCLAIMER OF WARRANTY

BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.