Thread: [Module-build-checkins] Module-Build/lib/Module/Build Base.pm,1.465,1.466
Status: Beta
Brought to you by:
kwilliams
|
From: Randy W. S. <si...@us...> - 2005-07-28 03:07:17
|
Update of /cvsroot/module-build/Module-Build/lib/Module/Build In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1076/lib/Module/Build Modified Files: Base.pm Log Message: First shot at a fix for prefixification to allow for platforms that may not define libdoc, bindoc, & html directories. Also, add properties to turn on or off generation and installation of html and manpages. Note that tests are incomplete & htmldir should be split into html1dir & html3dir. Index: Base.pm =================================================================== RCS file: /cvsroot/module-build/Module-Build/lib/Module/Build/Base.pm,v retrieving revision 1.465 retrieving revision 1.466 diff -u -d -r1.465 -r1.466 --- Base.pm 28 Jul 2005 02:56:42 -0000 1.465 +++ Base.pm 28 Jul 2005 03:07:01 -0000 1.466 @@ -178,7 +178,6 @@ my @libstyle = $c->{installstyle} ? File::Spec->splitdir($c->{installstyle}) : qw(lib perl5); my $arch = $c->{archname}; my $version = $c->{version}; - my @html = $c->{installhtmldir} ? (html => $c->{installhtmldir}) : (); $p->{install_sets} = { @@ -189,7 +188,7 @@ script => $c->{installscript}, bindoc => $c->{installman1dir}, libdoc => $c->{installman3dir}, - @html, + html => $c->{installhtmldir}, }, site => { lib => $c->{installsitelib}, @@ -198,7 +197,7 @@ script => $c->{installsitescript} || $c->{installsitebin} || $c->{installscript}, bindoc => $c->{installsiteman1dir} || $c->{installman1dir}, libdoc => $c->{installsiteman3dir} || $c->{installman3dir}, - @html, + html => $c->{installsitehtmldir} || $c->{installhtmldir}, }, vendor => { lib => $c->{installvendorlib}, @@ -207,7 +206,7 @@ script => $c->{installvendorscript} || $c->{installvendorbin} || $c->{installscript}, bindoc => $c->{installvendorman1dir} || $c->{installman1dir}, libdoc => $c->{installvendorman3dir} || $c->{installman3dir}, - @html, + html => $c->{installvendorhtmldir} || $c->{installhtmldir}, }, }; @@ -228,6 +227,7 @@ script => ['bin'], bindoc => ['man', 'man1'], libdoc => ['man', 'man3'], + html => ['html'], }; $p->{prefix_relpaths} = @@ -239,6 +239,7 @@ script => ['bin'], libdoc => ['man', 'man3'], bindoc => ['man', 'man1'], + html => ['html'], }, vendor => { lib => [@libstyle], @@ -247,6 +248,7 @@ script => ['bin'], libdoc => ['man', 'man3'], bindoc => ['man', 'man1'], + html => ['html'], }, site => { lib => [@libstyle, 'site_perl'], @@ -255,8 +257,20 @@ script => ['bin'], libdoc => ['man', 'man3'], bindoc => ['man', 'man1'], + html => ['html'], }, }; + + + my $installdirs = $p->{installdirs}; + + $p->{gen_manpages} ||= ( $p->{install_sets}{$installdirs}{libdoc} && + $p->{install_sets}{$installdirs}{bindoc} ) ? 1 : 0; + $p->{gen_html} ||= $p->{install_sets}{$installdirs}{html} ? 1 : 0; + + $p->{install_manpages} ||= $p->{gen_manpages} ? 1 : 0; + $p->{install_html} ||= $p->{gen_html} ? 1 : 0; + } sub _find_nested_builds { @@ -531,6 +545,12 @@ __PACKAGE__->add_property(meta_add => {}); __PACKAGE__->add_property(meta_merge => {}); __PACKAGE__->add_property(metafile => 'META.yml'); +__PACKAGE__->add_property($_ => 0) for qw( + gen_manpages + gen_html + install_manpages + install_html +); __PACKAGE__->add_property($_) for qw( base_dir dist_name @@ -1879,6 +1899,7 @@ sub ACTION_docs { my $self = shift; + $self->depends_on('code'); if (($self->module_name || '') eq 'Module::Build') { @@ -1888,12 +1909,15 @@ } else { require Module::Build::ConfigData; } - if (Module::Build::ConfigData->feature('manpage_support')) { - $self->manify_bin_pods() if $self->install_destination('bindoc'); - $self->manify_lib_pods() if $self->install_destination('libdoc'); + + if ( Module::Build::ConfigData->feature('manpage_support') && + $self->gen_manpages ) + { + $self->manify_bin_pods(); + $self->manify_lib_pods(); } - $self->htmlify_pods() if $self->install_destination('html'); + $self->htmlify_pods() if $self->gen_html; } sub manify_bin_pods { @@ -2847,22 +2871,15 @@ $self->log_verbose(" prefixify $path from $sprefix to $rprefix\n"); if( length $path == 0 ) { - $self->log_verbose(" no path to prefixify.\n"); - # XXX the 'return' here is not a very good failure mechanism - return; + $self->log_verbose(" no path to prefixify, falling back to default.\n"); + return $self->_prefixify_default( $type, $rprefix ); } elsif( !File::Spec->file_name_is_absolute($path) ) { $self->log_verbose(" path is relative, not prefixifying.\n"); } elsif( $sprefix eq $rprefix ) { $self->log_verbose(" no new prefix.\n"); } elsif( $path !~ s{^\Q$sprefix\E\b}{}s ) { $self->log_verbose(" cannot prefixify, falling back to default.\n"); - my $default = $self->prefix_relpaths($self->installdirs, $type); - if( !$default ) { - $self->log_verbose(" no default install location for type '$type', using prefix '$rprefix'.\n"); - return $rprefix; - } - - return $default; + return $self->_prefixify_default( $type, $rprefix ); } $self->log_verbose(" now $path in $rprefix\n"); @@ -2870,6 +2887,19 @@ return $path; } +sub _prefixify_default { + my $self = shift; + my $type = shift; + my $rprefix = shift; + + my $default = $self->prefix_relpaths($self->installdirs, $type); + if( !$default ) { + $self->log_verbose(" no default install location for type '$type', using prefix '$rprefix'.\n"); + return $rprefix; + } else { + return $default; + } +} sub install_destination { my ($self, $type) = @_; @@ -2885,6 +2915,14 @@ my $self = shift; my $p = $self->{properties}; my %types = (%{$p->{install_path}}, %{ $p->{install_sets}{$p->{installdirs}} }); + + delete( $types{html} ) unless $self->gen_html && $self->install_html; + + unless ( $self->gen_manpages && $self->install_manpages ) { + delete( $types{bindoc} ); + delete( $types{libdoc} ); + } + return sort keys %types; } |