#!/usr/bin/perl use strict; # use warnings; use Getopt::Long qw(:config no_ignore_case auto_version auto_help); use PPM::Make::Bundle; use Pod::Usage; $main::VERSION = $PPM::Make::VERSION; my %opts = (); my @files = (); my %progs = (); my @reps = (); GetOptions(\%opts, 'zip_archive|z', 'force|f', 'ignore|i', 'cpan', 'no_cfg', 'no-cfg', 'no_case', 'binary|b:s', 'arch_sub|n', 'script|s:s', 'exec|e:s', 'os|o:s', 'arch|a:s', 'remove|r', 'as|A!', 'vs|V', 'vsr', 'vsp', 'zipdist', 'add|x:s' => \@files, 'program|p:s' => \%progs, 'ppd:s', 'ar:s', 'zip:s', 'host:s', 'user:s', 'passwd:s', 'no-ppm4', 'no-html', 'no-remote-lookup', 'reps:s' => \@reps, 'clean', 'no-upload', 'bundle_name:s', 'skip', ) or pod2usage(2); my $dist = shift; my %upload = (); for (qw(binary script exec add program ppd ar host user passwd)) { die "Please supply an argument to '$_'" if ( defined $opts{$_} and $opts{$_} eq ""); } for (qw(ppd ar host user passwd zip)) { $upload{$_} = delete $opts{$_}; } $opts{upload} = \%upload if defined $upload{ppd}; $opts{dist} = $dist if $dist; for (qw(cfg ppm4 html upload remote-lookup)) { my $given = 'no-' . $_; next unless $opts{$given}; my $passed = 'no_' . $_; $passed =~ s/-/_/g; $opts{$passed} = delete $opts{$given}; } my $bundle = PPM::Make::Bundle->new(%opts); $bundle->make_bundle(); __END__ =head1 NAME make_ppm_bundle - make a bundle of ppm packages =head1 SYNOPSIS make_ppm_bundle [options] [Module | Distribution] Options: [-z | --zip] : make a zip distribution [-f | --force] : force remaking a distribution [-i | --ignore] : ignore any failing test results [ --skip] : skip running the tests [-b | --binary] location : specify the binary location [-n | --arch_sub] : use \$Config{archname} as a subdirectory [-s | --script] script : specify a script in the field [-e | --exec] exec : specify the executable to run the script [-x | --add] file : add file to the archive [-o | --os] os : use os for the field [-a | --arch] arch : use arch for the field [-v | --version] : print version information and exit [-h | --help] : print this help screen [-r | --remove] : remove the build directory after installation [-p | --program] b=a : specify "a" to be used for the "b" program [-A | --as] : add Perl version number to ARCHITECTURE (>= 5.8) [-V | --ppmv] : add version string to ppd and archive filenames [ --ppd ] location : copy the ppd to the specified location [ --ar ] location : copy the archive file to the specified location [ --zip ] location : copy the zipped file to the specified location [ --host] host : use the specified host for copying the ppm files [ --user] user : username to use when transferring ppm files [ --passwd] password : password associated with user [ --cpan ] : make a CPAN distribution [ --no_case ] : for module searches, ignore case [ --no-case ] : for module searches, ignore case [ --no_cfg ] : do not read a .ppmcfg configuration file [ --no-cfg ] : do not read a .ppmcfg configuration file [ --vsr] : add version string to the archive filename [ --vsp] : add version string to the ppd filename [ --zipdist] : create a zip file of the .ppd and .tar.gz files [ --no-ppm4] : don't add ppm4 extensions to the ppd file [ --no-html] : don't generate html documentation [ --no-remote-lookup] : don't use external data sources for meta information [ --bundle_name ] name : use the specified name as the bundle name [ --no-upload] : don't upload individual ppm packages [ --clean ] : remove the temporary build directory [ --reps ] http://rep.com : specify repositories to search for ppm packages Additional Arguments: Module : specify a module to fetch (requires CPAN.pm) Distribution : specify a distribution to fetch With no arguments, make_ppm_bundle will build a bundle inside the current directory, which assumes this is a CPAN distribution. =head1 DESCRIPTION C is an interface to the C module, bundled zip file of a package and all of it's required prerequisites. See L for further details. Apart from the options described below, without any arguments C will assume it is inside an unpacked source distribution and make the corresponding distribution. If it is given an argument of what looks like a module name (eg, I), it will use C to look up the corresponding distribution and fetch and build it. Otherwise, additional arguments (eg, F, or I) will be interpreted as distributions to fetch and build. Options can be read from a configuration file C<.ppmcfg> (see L) and/or given as options to I, unless the I option is given. An example C<.ppmcfg> file is [default] host = me.wherever.ca user = me passwd = whatever [ MSWin32-x86-multi-thread-5.8 ] binary = http://me.wherever.ca/ppms/x86/ ppd = /usr/local/httpd/htdocs/ppms/ ar = /usr/local/httpd/htdocs/ppms/x86/ zip = /usr/local/httpd/htdocs/ppms/zips zipdist = 1 reps = < take precedence. Available options include those of L, plus the following specific ones: =over =item --bundle_name $bundle_name This options specifes the name of the zip file containing all of the bundled ppm packages. If this is not specified, a default of C will be used, where C is the name of the main distribution being built. =item --no-upload By default, if a required package is built by C, and if the configuration file specifies that such ppm packages are to be uploaded to a repository, this upload will take place. The C option specifies that such individual package uploads not take place, although the bundled zip file will still be uploaded, if specified. =item --reps http://some.host/path/to/ppms This specifies a list of repositories to search for needed ppm packages. This option can be specified multiple times to specify a list of repsoitories. =item --clean The ppm packages are placed in a temporary directory for eventual inclusion in the zipped bundle file. The C option specifies that this temporary directory be removed after the bundle file is built. =item [--help] This prints out a short help screen and exits. =item [--version] This prints out some version information and exits. =back =head1 COPYRIGHT This program is copyright, 2006, by Randy Kobes Er.kobes@uwinnipeg.caE. It is distributed under the same terms as Perl itself. =head1 SEE ALSO L, L, and L. =cut