Installer
view release on metacpan or search on metacpan
lib/Installer/Target.pm view on Meta::CPAN
sub installation {
my ( $self ) = @_;
$self->prepare_installation;
$self->installer_code->($self);
$self->finish_installation;
}
sub write_export {
my ( $self ) = @_;
my $export_filename = $self->target_file('export.sh');
$self->log_print("Generating ".$export_filename." ...");
my $export_sh = "#!/bin/sh\n#\n# Installer auto generated export.sh\n#\n".("#" x 60)."\n\n";
$export_sh .= 'export CURRENT_INSTALLER_ENV='.$self->target_path->stringify."\n";
if (defined $self->meta->{unset} && @{$self->meta->{unset}}) {
$export_sh .= '# custom unsets'."\n";
for (@{$self->meta->{unset}}) {
$export_sh .= 'unset '.$_."\n";
}
}
if (defined $self->meta->{PATH} && @{$self->meta->{PATH}}) {
$export_sh .= 'export PATH="'.join(':',@{$self->meta->{PATH}}).'${PATH+:}$PATH"'."\n";
}
if (defined $self->meta->{LD_LIBRARY_PATH} && @{$self->meta->{LD_LIBRARY_PATH}}) {
$export_sh .= 'export LD_LIBRARY_PATH="'.join(':',@{$self->meta->{LD_LIBRARY_PATH}}).'${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH"'."\n";
}
if (defined $self->meta->{C_INCLUDE_PATH} && @{$self->meta->{C_INCLUDE_PATH}}) {
$export_sh .= 'export C_INCLUDE_PATH="'.join(':',@{$self->meta->{C_INCLUDE_PATH}}).'${C_INCLUDE_PATH+:}$C_INCLUDE_PATH"'."\n";
}
if (defined $self->meta->{MANPATH} && @{$self->meta->{MANPATH}}) {
$export_sh .= 'export MANPATH="'.join(':',@{$self->meta->{MANPATH}}).'${MANPATH+:}$MANPATH"'."\n";
}
if (defined $self->meta->{PKG_CONFIG_PATH} && @{$self->meta->{PKG_CONFIG_PATH}}) {
$export_sh .= 'export PKG_CONFIG_PATH="'.join(':',@{$self->meta->{PKG_CONFIG_PATH}}).'${PKG_CONFIG_PATH+:}$PKG_CONFIG_PATH"'."\n";
}
if (defined $self->meta->{ACLOCAL_PATH}) {
$export_sh .= 'export ACLOCAL_PATH="'.$self->meta->{ACLOCAL_PATH}.'"'."\n";
}
if (defined $self->meta->{ACLOCAL}) {
$export_sh .= 'export ACLOCAL="'.$self->meta->{ACLOCAL}.'"'."\n";
}
if (defined $self->meta->{export} && @{$self->meta->{export}}) {
$export_sh .= '# custom exports'."\n";
for (@{$self->meta->{export}}) {
$export_sh .= 'export '.$_."\n";
}
}
$export_sh .= "\n";
for (@{$self->meta->{software_packages_done}}) {
my $software = $self->software->{$_};
if ($software->has_export_sh) {
my @lines = $software->export_sh->($software);
$export_sh .= "# export.sh addition by ".$software->alias."\n";
$export_sh .= join("\n",@lines)."\n\n";
}
}
$export_sh .= ("#" x 60)."\n";
io($export_filename)->print($export_sh);
chmod(0755,$export_filename);
}
sub update_env {
my ( $self ) = @_;
my %seen = defined $self->meta->{seen_dirs}
? %{$self->meta->{seen_dirs}}
: ();
if (!$seen{'bin'} and -e $self->target_path('bin')) {
my @bindirs = defined $self->meta->{PATH}
? @{$self->meta->{PATH}}
: ();
my $bindir = $self->target_path('bin')->absolute->stringify;
push @bindirs, $bindir;
$self->meta->{PATH} = \@bindirs;
$seen{'bin'} = 1;
}
for my $p (qw( lib share )) {
my $path = $self->target_path($p,'pkgconfig');
my $skey = $p.'pkgconfig';
if (!$seen{$skey} and -e $path) {
my @pcp = defined $self->meta->{PKG_CONFIG_PATH}
? @{$self->meta->{PKG_CONFIG_PATH}}
: ();
push @pcp, $path->absolute->stringify;
$self->meta->{PKG_CONFIG_PATH} = \@pcp;
$seen{$skey} = 1;
}
}
if (!$seen{'man'} and -e $self->target_path('man')) {
my @mandirs = defined $self->meta->{MANPATH}
? @{$self->meta->{MANPATH}}
: ();
my $mandir = $self->target_path('man')->absolute->stringify;
push @mandirs, $mandir;
$self->meta->{MANPATH} = \@mandirs;
$seen{'man'} = 1;
}
if (!$seen{'aclocal'} and -e $self->target_path('share','aclocal')) {
$self->meta->{ACLOCAL_PATH} = $self->target_path('share','aclocal')->stringify;
$self->meta->{ACLOCAL} = 'aclocal -I '.$self->meta->{ACLOCAL_PATH};
$seen{'aclocal'} = 1;
}
if (!$seen{'lib'} and -e $self->target_path('lib')) {
my @libdirs = defined $self->meta->{LD_LIBRARY_PATH}
? @{$self->meta->{LD_LIBRARY_PATH}}
: ();
my $libdir = $self->target_path('lib')->absolute->stringify;
push @libdirs, $libdir;
$self->meta->{LD_LIBRARY_PATH} = \@libdirs;
$seen{'lib'} = 1;
}
if (!$seen{'include'} and -e $self->target_path('include')) {
my @libdirs = defined $self->meta->{C_INCLUDE_PATH}
? @{$self->meta->{C_INCLUDE_PATH}}
: ();
my $libdir = $self->target_path('include')->absolute->stringify;
push @libdirs, $libdir;
$self->meta->{C_INCLUDE_PATH} = \@libdirs;
$seen{'include'} = 1;
}
$self->meta->{seen_dirs} = \%seen;
}
( run in 0.878 second using v1.01-cache-2.11-cpan-2398b32b56e )