2 # Contributed by: Thorben Jaendling
8 require_ok 'Module::Build';
9 ensure_blib('Module::Build');
11 use File::Spec::Functions qw( catdir );
13 my $tmp = MBTest->tmpdir;
17 my $dist = DistGen->new( dir => $tmp );
19 # note("Dist is in $tmp\n");
21 $dist->add_file("Build.PL", <<'===EOF===');
27 my $subclass = Module::Build->subclass(code => <<'=EOF=');
33 my $files = $self->rscan_dir($dir, sub {-f $_ and not m!/\.|[#~]$!});
35 foreach my $file (@$files) {
36 $self->copy_if_modified(from => $file, to_dir => "blib");
40 #Copy etc files to blib
45 $self->copy_files("etc");
48 #Copy share files to blib
49 sub process_share_files
53 $self->copy_files("share");
59 my $build = $subclass->new(
60 module_name => 'Simple',
64 $build->add_build_element('etc');
65 $build->add_build_element('share');
67 my $distdir = lc $build->dist_name();
69 foreach my $id ('core', 'site', 'vendor') {
70 #Where to install these build types when using prefix symantics
71 $build->prefix_relpaths($id, 'share' => "share/$distdir");
72 $build->prefix_relpaths($id, 'etc' => "etc/$distdir");
74 #Where to install these build types when using default symantics
75 my $set = $build->install_sets($id);
76 $set->{'share'} = '/usr/'.($id eq 'site' ? 'local/':'')."share/$distdir";
77 $set->{'etc'} = ($id eq 'site' ? '/usr/local/etc/':'/etc/').$distdir;
80 #Where to install these types when using install_base symantics
81 $build->install_base_relpaths('share' => "share/$distdir");
82 $build->install_base_relpaths('etc' => "etc/$distdir");
84 $build->create_build_script();
88 #Test Build.PL exists ok?
90 $dist->add_file("etc/config", <<'===EOF===');
100 $dist->add_file("share/data", <<'===EOF===');
105 $dist->add_file("share/html/index.html", <<'===EOF===');
108 <H1>Hello World!</H1>
117 my $installdest = catdir($tmp, 't', "install_extra_targets-$$");
119 $output = stdout_of sub { $dist->run_build_pl("--install_base=$installdest") };
121 $output .= stdout_of sub { $dist->run_build };
124 $error++ unless ok(-e "blib/etc/config", "Built etc/config");
125 $error++ unless ok(-e "blib/share/data", "Built share/data");
126 $error++ unless ok(-e "blib/share/html/index.html", "Built share/html");
127 diag "OUTPUT:\n$output" if $error;
129 $output = stdout_of sub { $dist->run_build('install') };
132 $error++ unless ok(-e "$installdest/etc/simple/config", "installed etc/config");
133 $error++ unless ok(-e "$installdest/share/simple/data", "installed share/data");
134 $error++ unless ok(-e "$installdest/share/simple/html/index.html", "installed share/html");
135 diag "OUTPUT:\n$output" if $error;