Armadito-Agent
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
INSTALLMAN1DIR => '$(PREFIX)\\share\\man\\man1',
INSTALLSITEMAN1DIR => '$(PREFIX)\\share\\man\\man1',
INSTALLVENDORMAN1DIR => '$(PREFIX)\\share\\man\\man1',
INSTALLMAN3DIR => '$(PREFIX)\\share\\man\\man3',
INSTALLSITEMAN3DIR => '$(PREFIX)\\share\\man\\man3',
INSTALLVENDORMAN3DIR => '$(PREFIX)\\share\\man\\man3',
SYSCONFDIR => '$(PREFIX)\\etc',
DATADIR => '$(PREFIX)\\share',
LOCALSTATEDIR => '$(PREFIX)\\var',
);
}
sub setLinuxVariables {
%Variables = (
DESTDIR => '',
PREFIX => '/usr/local',
INSTALLSCRIPT => '$(PREFIX)/bin',
INSTALLSITESCRIPT => '$(PREFIX)/bin',
INSTALLVENDORSCRIPT => '$(PREFIX)/bin',
INSTALLLIB => '$(DATADIR)/lib',
INSTALLSITELIB => '$(DATADIR)/lib',
INSTALLVENDORLIB => '$(DATADIR)/lib',
INSTALLMAN1DIR => '$(DESTDIR)$(PREFIX)/share/man/man1',
INSTALLSITEMAN1DIR => '$(DESTDIR)$(PREFIX)/share/man/man1',
INSTALLVENDORMAN1DIR => '$(DESTDIR)$(PREFIX)/share/man/man1',
INSTALLMAN3DIR => '$(DESTDIR)$(PREFIX)/share/man/man3',
INSTALLSITEMAN3DIR => '$(DESTDIR)$(PREFIX)/share/man/man3',
INSTALLVENDORMAN3DIR => '$(DESTDIR)$(PREFIX)/share/man/man3',
SYSCONFDIR => '$(DESTDIR)$(PREFIX)/etc/armadito-agent',
DATADIR => '$(DESTDIR)$(PREFIX)/share/armadito-agent',
LOCALSTATEDIR => '$(DESTDIR)$(PREFIX)/var/armadito-agent',
);
}
sub overrideVariablesWithArgs {
my ($self) = @_;
foreach my $name ( keys %Variables ) {
$Variables{$name} = $self->{ARGS}->{$name} if $self->{ARGS}->{$name};
}
}
sub parseConstantDefinition {
my ($constant_definition) = @_;
if ( $constant_definition =~ /^\s*#/ ) {
return "";
}
if ( $constant_definition !~ /^([A-Z0-9_]+) =/ ) {
return "";
}
return $1;
}
sub updateConstants {
my ($self) = @_;
my @constants = split( /\n/, $self->SUPER::constants(@_) );
foreach my $constant_definition (@constants) {
my $constant = parseConstantDefinition($constant_definition);
if ( $constant ne ""
&& defined( $Variables{$constant} ) )
{
$constant_definition = "$constant = $Variables{$constant}";
}
}
foreach my $constant (qw/SYSCONFDIR DATADIR LOCALSTATEDIR/) {
push @constants, "$constant = $Variables{$constant}";
}
return join( "\n", @constants );
}
sub constants {
my ($self) = @_;
if ( $OSNAME eq "MSWin32" ) {
setWin32Variables();
}
else {
setLinuxVariables();
}
overrideVariablesWithArgs($self);
return updateConstants($self);
}
sub install {
my ($self) = @_;
my $install = $self->SUPER::install(@_);
$install =~ s/install :: pure_install doc_install/install :: pure_install config_install data_install/;
$install =~ s/install :: all pure_install doc_install/install :: all pure_install config_install data_install/;
$install =~ s/.*\.packlist \\\n//g;
if ( $OSNAME eq "MSWin32" ) {
$install .= getWin32Install();
}
else {
$install .= getLinuxInstall();
}
$install =~ s/[ ]{4}/\t/msg;
return $install;
}
sub getLinuxInstall {
return '
config_install :
install -d -m 755 $(SYSCONFDIR)
' . installLinuxConfFile("agent.cfg") . '
' . installLinuxConfFile("scheduler-cron.cfg") . '
data_install :
install -d -m 755 $(DATADIR)
install -d -m 775 $(LOCALSTATEDIR)';
}
sub getWin32Install {
return '
config_install :
if not exist "$(SYSCONFDIR)" mkdir "$(SYSCONFDIR)"
' . installWin32ConfFile("agent.cfg") . '
' . installWin32ConfFile("scheduler-win32native.cfg") . '
data_install :
if not exist "$(DATADIR)" mkdir "$(DATADIR)"
if not exist "$(INSTALLSCRIPT)" mkdir "$(INSTALLSCRIPT)"
if exist "$(INSTALLSCRIPT)\\armadito-agent" @erase "$(INSTALLSCRIPT)\\armadito-agent"
copy "bin\\armadito-agent" "$(INSTALLSCRIPT)\\armadito-agent"';
}
sub installWin32ConfFile {
my ($conf_file) = @_;
return '
if exist "$(SYSCONFDIR)\\' . $conf_file . '" ( \
copy "etc\\' . $conf_file . '" "$(SYSCONFDIR)\\' . $conf_file . '.new"; \
) else ( \
copy "etc\\' . $conf_file . '" "$(SYSCONFDIR)\\' . $conf_file . '"; \
)';
}
sub installLinuxConfFile {
my ($conf_file) = @_;
return '
if [ -f $(SYSCONFDIR)/' . $conf_file . ' ]; then \
install -m 644 etc/' . $conf_file . ' $(SYSCONFDIR)/' . $conf_file . '.new; \
else \
install -m 644 etc/' . $conf_file . ' $(SYSCONFDIR)/' . $conf_file . '; \
fi';
}
# ensure binaries get modified to use configured directories (on Unix only)
sub installbin {
my ($self) = @_;
my $installbin = $self->SUPER::installbin(@_);
return $installbin if $OSNAME eq 'MSWin32';
$installbin =~ s|\t\$\(FIXIN\) (.*)\n|\t\$(FIXIN) $1\n\t\$(FINALIZE) $1\n|g;
$installbin .= <<'EOF';
FINALIZE = $(ABSPERLRUN) -pi \
-e 's|use lib .*|use lib "$(DATADIR)/lib";|;' \
-e 's|confdir => .*|confdir => "$(SYSCONFDIR)",|;' \
-e 's|datadir => .*|datadir => "$(DATADIR)",|;' \
-e 's|libdir => .*|libdir => "$(DATADIR)/lib",|;' \
-e 's|vardir => .*|vardir => "$(LOCALSTATEDIR)",|' \
--
EOF
return $installbin;
}
( run in 1.002 second using v1.01-cache-2.11-cpan-ceb78f64989 )