#!perl -w # Contributed by: Thorben Jaendling use strict; use lib 't/lib'; use MBTest tests => 6; blib_load('Module::Build'); use File::Spec::Functions qw( catdir catfile ); my $tmp = MBTest->tmpdir; my $output; use DistGen; my $dist = DistGen->new( dir => $tmp ); # note("Dist is in $tmp\n"); $dist->add_file("Build.PL", <<'===EOF==='); #!perl -w use strict; use Module::Build; my $subclass = Module::Build->subclass(code => <<'=EOF='); sub copy_files { my $self = shift; my $dir = shift; my $files = $self->rscan_dir($dir, sub {-f $_ and not m!/\.|[#~]$!}); foreach my $file (@$files) { $self->copy_if_modified(from => $file, to_dir => "blib"); } } #Copy etc files to blib sub process_etc_files { my $self = shift; $self->copy_files("etc"); } #Copy share files to blib sub process_shared_files { my $self = shift; $self->copy_files("shared"); } 1; =EOF= my $build = $subclass->new( module_name => 'Simple', license => 'perl' ); $build->add_build_element('etc'); $build->add_build_element('shared'); my $distdir = lc $build->dist_name(); foreach my $id ('core', 'site', 'vendor') { #Where to install these build types when using prefix symantics $build->prefix_relpaths($id, 'shared' => "shared/$distdir"); $build->prefix_relpaths($id, 'etc' => "etc/$distdir"); #Where to install these build types when using default symantics my $set = $build->install_sets($id); $set->{'shared'} = '/usr/'.($id eq 'site' ? 'local/':'')."shared/$distdir"; $set->{'etc'} = ($id eq 'site' ? '/usr/local/etc/':'/etc/').$distdir; } #Where to install these types when using install_base symantics $build->install_base_relpaths('shared' => "shared/$distdir"); $build->install_base_relpaths('etc' => "etc/$distdir"); $build->create_build_script(); ===EOF=== #Test Build.PL exists ok? $dist->add_file("etc/config", <<'===EOF==='); [main] Foo = bar Jim = bob [supplemental] stardate = 1234344 ===EOF=== $dist->add_file("shared/data", <<'===EOF==='); 7 * 9 = 42? ===EOF=== $dist->add_file("shared/html/index.html", <<'===EOF===');