[Module-build-checkins] Module-Build/lib/Module/Build Base.pm,1.417,1.418 Notes.pm,1.6,1.7
Status: Beta
Brought to you by:
kwilliams
|
From: Ken W. <kwi...@us...> - 2005-06-07 03:34:48
|
Update of /cvsroot/module-build/Module-Build/lib/Module/Build In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28385/lib/Module/Build Modified Files: Base.pm Notes.pm Log Message: First stab at --prefix support Index: Base.pm =================================================================== RCS file: /cvsroot/module-build/Module-Build/lib/Module/Build/Base.pm,v retrieving revision 1.417 retrieving revision 1.418 diff -u -d -r1.417 -r1.418 --- Base.pm 3 Jun 2005 16:50:38 -0000 1.417 +++ Base.pm 7 Jun 2005 03:34:07 -0000 1.418 @@ -510,6 +510,7 @@ ignore_prereq_requires ignore_prereqs skip_rcfile + prefix ); { @@ -2536,12 +2537,90 @@ return File::Spec->catdir(@{$map{$type}}); } + +# Translated from ExtUtils::MM_Any::init_INSTALL_from_PREFIX +sub install_prefix_relative { + my ($self, $type, $prefix) = @_; + my $c = $self->{config}; + + my %map = ( + core => { + lib => $c->{installprivlib}, + arch => $c->{installarchlib}, + bin => $c->{installbin}, + script => $c->{installscript}, + bindoc => $c->{installman1dir}, + libdoc => $c->{installman3dir}, + }, + + site => { + lib => $c->{installsitelib}, + arch => $c->{installsitearch}, + bin => $c->{installsitebin}, + script => $c->{installscript}, + bindoc => $c->{installsiteman1dir}, + libdoc => $c->{installsiteman3dir}, + }, + + vendor => { + lib => $c->{installvendorlib}, + arch => $c->{installvendorarch}, + bin => $c->{installvendorbin}, + script => $c->{installscript}, + bindoc => $c->{installvendorman1dir}, + libdoc => $c->{installvendorman3dir}, + }, + ); + + my $installdirs = $self->installdirs; + return unless exists $map{$installdirs}{$type}; + + my %prefixes = ( + core => $Config{installprefixexp} || $Config{installprefix} || + $Config{prefixexp} || $Config{prefix} || '', + site => $Config{siteprefixexp}, + vendor => $Config{usevendorprefix} ? $Config{vendorprefixexp} : '', + ); + $prefixes{site} ||= $prefixes{core}; + + return $self->prefixify($map{$installdirs}{$type}, $prefixes{$installdirs}, $prefix); +} + + +# Translated from ExtUtils::MM_Unix::prefixify() +sub prefixify { + my($self, $path, $sprefix, $rprefix) = @_; + + $rprefix .= '/' if $sprefix =~ m|/$|; + + $self->log_verbose(" prefixify $path from $sprefix to $rprefix\n"); + + if( length $path == 0 ) { + $self->log_verbose(" no path to prefixify.\n") + } + 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}{$rprefix}s ) { + $self->log_verbose(" cannot prefixify.\n"); + } + + $self->log_verbose(" now $path\n"); + + return $path; +} + + sub install_destination { my ($self, $type) = @_; my $p = $self->{properties}; return $p->{install_path}{$type} if exists $p->{install_path}{$type}; return File::Spec->catdir($p->{install_base}, $self->install_base_relative($type)) if $p->{install_base}; + return $self->install_prefix_relative($type, $p->{prefix}) if $p->{prefix}; return $p->{install_sets}{ $p->{installdirs} }{$type}; } Index: Notes.pm =================================================================== RCS file: /cvsroot/module-build/Module-Build/lib/Module/Build/Notes.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- Notes.pm 15 Apr 2005 22:59:05 -0000 1.6 +++ Notes.pm 7 Jun 2005 03:34:07 -0000 1.7 @@ -76,7 +76,7 @@ foreach my $key (keys %{ $self->{new} }) { next if ref $self->{new}{$key}; next if ref $self->{disk}{$key} or !exists $self->{disk}{$key}; - delete $self->{new}{$key} if $self->{new}{$key} eq $self->{disk}{$key}; + delete $self->{new}{$key} if ($self->{new}{$key}||'') eq ($self->{disk}{$key}||''); } if (my $file = $self->{file}) { |