# This -*- perl -*- script writes the Makefile for ASNMTAP # $Id: Makefile.PL, v3.2.3 2010/xx/xx 18:14:00 Alex Peeters Exp $ use 5.008000; use strict; # - - - - - - - - - - UPDATE VERSION EVERY NEW RELEASE: - - - - - - - - - # Prepare new release --------------------------------------------------- # copy current release '3.002.003' to '3.002.004' # 3.002.xxx 3.001.yyy # replace 'Version : 3.002.xxx' with `3.002.yyy;` # rename `MANIFEST-3.002.xxx` with `MANIFEST-3.002.yyy.sql` # rename `asnmtap-3.002.xxx.sql` with `asnmtap-3.002.yyy.sql` # replace `asnmtap-3.002.xxx` with `asnmtap-3.002.yyy` # replace `(q$Revision: 3.002.xxx$ =~ /\d+/g)` with `(q$Revision: 3.002.yyy$ =~ /\d+/g)` # replace `v3.002.xxx;` with `v3.002.yyy;` # replace `'3.002.xxx'` with `'3.002.yyy'` # replace ASNMTAP 3.002.xxx postfix; nl-BE; rv:3.002.xxx) Gecko/yyyymmdd with ASNMTAP 3.002.yyy postfix; nl-BE; rv:3.002.yyy) Gecko/2010.... # Upload new release ---------------------------------------------------- # replace 'Latest update: dd month 2011' with 'Latest update: .. ... 2010' # replace `# 2010/mm/dd, v` with `# 2010/../.., v` # Module section - - - - - - - - - - - - - - - - - - - - - - - - - - - - use Config qw(%Config); use ExtUtils::MakeMaker qw(WriteMakefile prompt); my $module = 'ExtUtils::MakeMaker'; my $version = '6.32'; unless ( eval ( "require $module; Exporter::require_version ( '$module', $version );" ) ) { print "\n$module v$version, required for 'perl Makefile.PL' via CPAN\n"; print "\nperl -MCPAN -e 'install $module'\n\n"; exit; } # $module = 'ExtUtils::Autoconf'; # $version = '0.02'; # unless ( eval ( "require $module; Exporter::require_version ( '$module', $version );" ) ) { # print "\n$module v$version, required for 'perl Makefile.PL' via CPAN\n"; # print "\nperl -MCPAN -e 'install $module'\n\n"; # exit; # } # Configuration section - - - - - - - - - - - - - - - - - - - - - - - - - my $VERSION = do { my @r = (q$Revision: 3.002.003$ =~ /\d+/g); sprintf "%d."."%03d" x $#r, @r }; # must be all on one line or MakeMaker will get confused. my $PERL_AUTOINSTALL = exists $ENV{PERL_AUTOINSTALL} ? $ENV{PERL_AUTOINSTALL} : 0; my $ASNMTAP_APPLICATIONS = exists $ENV{ASNMTAP_APPLICATIONS} ? $ENV{ASNMTAP_APPLICATIONS} : 0; my $ASNMTAP_PLUGINS = exists $ENV{ASNMTAP_PLUGINS} ? $ENV{ASNMTAP_PLUGINS} : 0; my $ASNMTAP_UID = exists $ENV{ASNMTAP_UID} ? $ENV{ASNMTAP_UID} : '500'; my $ASNMTAP_GID = exists $ENV{ASNMTAP_GID} ? $ENV{ASNMTAP_GID} : '500'; my $ASNMTAP_PATH = exists $ENV{ASNMTAP_PATH} ? $ENV{ASNMTAP_PATH} : '/opt/asnmtap'; my $ASNMTAP_PROXY = exists $ENV{ASNMTAP_PROXY} ? $ENV{ASNMTAP_PROXY} : '0.0.0.0'; # End Configuration - You should not have to change anything below this line # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # This hash will contain a list of all Application System Network Monitoring Toolkit Alex Peeters files my %PM; $PM{'lib/ASNMTAP/PseudoHash.pm'} = '$(INST_LIBDIR)/ASNMTAP/PseudoHash.pm'; $PM{'lib/ASNMTAP/PseudoHash.pod'} = '$(INST_LIBDIR)/ASNMTAP/PseudoHash.pod'; $PM{'lib/ASNMTAP/Time.pm'} = '$(INST_LIBDIR)/ASNMTAP/Time.pm'; $PM{'lib/ASNMTAP/Time.pod'} = '$(INST_LIBDIR)/ASNMTAP/Time.pod'; $PM{'lib/ASNMTAP/Asnmtap.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap.pm'; $PM{'lib/ASNMTAP/Asnmtap.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap.pod'; $PM{'lib/ASNMTAP/Asnmtap/Applications.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Applications.pm'; $PM{'lib/ASNMTAP/Asnmtap/Applications.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Applications.pod'; $PM{'lib/ASNMTAP/Asnmtap/Applications/CGI.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Applications/CGI.pm'; $PM{'lib/ASNMTAP/Asnmtap/Applications/CGI.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Applications/CGI.pod'; $PM{'lib/ASNMTAP/Asnmtap/Applications/Collector.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Applications/Collector.pm'; $PM{'lib/ASNMTAP/Asnmtap/Applications/Collector.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Applications/Collector.pod'; $PM{'lib/ASNMTAP/Asnmtap/Applications/Display.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Applications/Display.pm'; $PM{'lib/ASNMTAP/Asnmtap/Applications/Display.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Applications/Display.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins.pm'; $PM{'lib/ASNMTAP/Asnmtap/Plugins.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/IO.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/IO.pm'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/IO.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/IO.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/Mail.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/Mail.pm'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/Mail.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/Mail.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/Modem.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/Modem.pm'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/Modem.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/Modem.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/Nagios.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/Nagios.pm'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/Nagios.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/Nagios.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/NPTest.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/NPTest.pm'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/SOAP.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/SOAP.pm'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/SOAP.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/SOAP.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/WebTransact.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/WebTransact.pm'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/WebTransact.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/WebTransact.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/XML.pod'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/XML.pod'; $PM{'lib/ASNMTAP/Asnmtap/Plugins/XML.pm'} = '$(INST_LIBDIR)/ASNMTAP/Asnmtap/Plugins/XML.pm'; # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - my @man3pods = qw ( Asnmtap Time Asnmtap/Applications Asnmtap/Applications/CGI Asnmtap/Applications/Collector Asnmtap/Applications/Display Asnmtap/Plugins Asnmtap/Plugins/IO Asnmtap/Plugins/Mail Asnmtap/Plugins/Modem Asnmtap/Plugins/Nagios Asnmtap/Plugins/SOAP Asnmtap/Plugins/WebTransact Asnmtap/Plugins/XML ); # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - my @prerequisites = ( # [ '', '', '', , , [[, ], ...] ]; [ '*00', 'Package ASNMTAP::Asnmtap', 'ASNMTAP::Asnmtap', { 'CPAN' => '1.9205', 'CPANPLUS' => '0.84', 'Config::General' => '2.38', 'Config::General::Interpolated' => '2.07', 'Data::Dumper' => '2.121','Dumpvalue' => '1.11', 'Getopt::Long' => '2.37', 'IO::CaptureOutput' => '1.0801', 'Test::Pod::Coverage' => '1.08', 'Test::Simple' => '0.80', 'Time::Local' => '1.17' }, 2, [ [ 'Changes', 'r' ], [ 'AUTHORS', 'r' ], [ 'INSTALL', 'r' ], [ 'README', 'r' ], [ 'Asnmtap.cnf', 'R' ], [ 'log', 'd' ], [ 'pid', 'd' ], ] ], [ '*02', 'Time', 'ASNMTAP::Time', { 'ASNMTAP::Asnmtap' => '*00', 'Date::Calc' => '5.4', 'Time::Local' => '1.17' }, 2, [], [] ], [ '*0010', 'Subclass Applications', 'ASNMTAP::Asnmtap::Applications', { 'ASNMTAP::Asnmtap' => '*00', 'Bundle::DBI' => '1.604', 'Bundle::DBD::mysql' => '4.004', 'Config::General' => '2.38', 'Config::General::Interpolated' => '2.07', 'DBD::CSV' => '0.26', 'DBIx::Log4perl' => '0.18', 'Getopt::Long' => '2.37', 'HTML::Entities' => '1.35', 'Log::Log4perl' => '1.26', 'Mail::Sendmail' => '0.79', 'Text::CSV' => '1.16', 'Time::Local' => '1.17' }, 1, [ [ 'fixRights.sh', 'X' ], [ 'applications/*.pl', 'x' ], [ 'applications/*.sh', 'X' ], [ 'applications/*.cnf', 'R' ], [ 'applications/bin/*.pl', 'x' ], [ 'applications/bin/*.sh', 'X' ], [ 'applications/sbin/*.pl', 'x' ], [ 'applications/sbin/*.sh', 'X' ], [ 'applications/custom/*.pm-orig', 'r' ], [ 'applications/tools/mysql/*.sql', 'r' ], [ 'applications/tools/mysql/*.sh', 'x' ], [ 'applications/etc', 'd' ], [ 'applications/slave', 'd' ], [ 'applications/master', 'd' ], [ 'applications/htmlroot/nav', 'd' ], [ 'applications/tmp', 'd' ], [ 'applications/tmp/config', 'd' ], [ 'applications/tmp/cgisess', 'd' ], [ 'results', 'd' ], ] ], [ '*001000', 'Subclass CGI Interface', 'ASNMTAP::Asnmtap::Applications::CGI', { 'ASNMTAP::Asnmtap::Applications' => '*0010', 'CGI::Session' => '4.30', 'Date::Calc' => '5.4', 'Proc::ProcessTable' => '0.42', 'NetAddr::IP' => '4.007', 'Time::Local' => '1.17' }, 0, [ [ 'applications/htmlroot/*.css', 'r' ], [ 'applications/htmlroot/*.js', 'x' ], [ 'applications/htmlroot/cgi-bin/*.pl', 'x' ], [ 'applications/htmlroot/cgi-bin/*.book', 'R' ], [ 'applications/htmlroot/cgi-bin/*.sh', 'x' ], [ 'applications/htmlroot/cgi-bin/admin/*.pl', 'x' ], [ 'applications/htmlroot/cgi-bin/moderator/*.pl', 'x' ], [ 'applications/htmlroot/cgi-bin/sadmin/*.pl', 'x' ], [ 'applications/htmlroot/img/*.gif', 'r' ], [ 'applications/htmlroot/img/*.jpg', 'r' ], [ 'applications/htmlroot/img/*.png', 'r' ], [ 'applications/htmlroot/img/fw0/*.gif', 'r' ], [ 'applications/htmlroot/img/logos/bodyimage.gif', 'R' ], [ 'applications/htmlroot/pdf/*.pdf', 'r' ], [ 'applications/htmlroot/sound/*.wav', 'r' ], [ 'applications/tools/resources/*.js', 'r' ], [ 'applications/tools/templates/*.sh', 'x' ], [ 'applications/tools/templates/*.html', 'r' ], [ 'applications/tools/templates/master/*.sh', 'x' ], [ 'applications/tools/templates/slave/*.conf', 'r' ], [ 'applications/tools/templates/slave/*.sh', 'x' ], [ 'applications/htmlroot/snmptraps/*.php', 'r' ], [ 'applications/htmlroot/snmptraps/etc/config.ini.php', 'R' ], [ 'applications/htmlroot/snmptraps/images/kde3/*.db', 'r' ], [ 'applications/htmlroot/snmptraps/images/kde3/*.png', 'r' ], [ 'applications/htmlroot/snmptraps/images/nuovo/*.db', 'r' ], [ 'applications/htmlroot/snmptraps/images/nuovo/*.png', 'r' ], [ 'applications/htmlroot/snmptraps/images/nuvola_1/*.db', 'r' ], [ 'applications/htmlroot/snmptraps/images/nuvola_1/*.png', 'r' ], [ 'applications/htmlroot/snmptraps/images/nuvola_2/*.db', 'r' ], [ 'applications/htmlroot/snmptraps/images/nuvola_2/*.png', 'r' ], [ 'applications/htmlroot/snmptraps/include/classes/*.php', 'r' ], [ 'applications/htmlroot/snmptraps/include/css/*.css', 'r' ], [ 'applications/htmlroot/snmptraps/include/js/*.js', 'r' ], [ 'applications/htmlroot/snmptraps/include/xml/language/DE/*.xml', 'r' ], [ 'applications/htmlroot/snmptraps/include/xml/language/EN/*.xml', 'r' ], ] ], [ '*0011', 'Subclass Plugins', 'ASNMTAP::Asnmtap::Plugins', { 'ASNMTAP::Asnmtap' => '*00', 'Date::Calc' => '5.4', 'Time::HiRes' => '1.9705' }, 2, [ [ 'plugins/*.pl', 'x' ], [ 'plugins/*.SQL', 'r' ], [ 'plugins/jUnit/*.pl', 'x' ], [ 'plugins/snmptt/*.pl', 'x' ], [ 'plugins/templates/*.pl', 'x' ], [ 'plugins/templates/dtd/*.dtd', 'r' ], [ 'plugins/templates/jUnit/*.*', 'r' ], [ 'plugins/templates/snmptt/*.*', 'r' ], [ 'plugins/templates/ssl/crt/*.crt', 'r' ], [ 'plugins/templates/ssl/key/*.key', 'r' ], [ 'plugins/templates/xml/*.xml', 'r' ], [ 'plugins/tools/*.pl', 'x' ], [ 'plugins/tmp', 'd' ] ] ], [ '*001100', 'Subclass Nagios', 'ASNMTAP::Asnmtap::Plugins::Nagios', { 'ASNMTAP::Asnmtap::Plugins' => '*0011', 'Time::Local' => '1.17', 'Net::Ifconfig::Wrapper' => '0.09' }, 1, [ [ 'plugins/nagios/*.pl', 'x' ], [ 'plugins/nagios/templates/*.pl', 'x' ], [ 'plugins/nagios/templates/dtd/*.dtd', 'r' ], [ 'plugins/nagios/templates/xml/*.xml', 'r' ], [ 'plugins/nagios/templates/xml/*.xml-*', 'r' ], ] ], [ '*011101', 'IO support', 'ASNMTAP::Asnmtap::Plugins::IO', { 'ASNMTAP::Asnmtap::Plugins' => '*0011', 'IO' => '1.23' }, 1, [], [] ], [ '*001102', 'Mail support', 'ASNMTAP::Asnmtap::Plugins::Mail', { 'ASNMTAP::Asnmtap::Plugins' => '*0011', 'Date::Calc' => '5.4', 'Email::Simple' => '2.003', 'IO::String' => '1.08', 'Mail::POP3Client' => '2.18', 'Mail::Sendmail' => '0.79', 'MIME::Base64' => '3.08', 'MIME::Tools' => '5.420', 'Net::IMAP::Simple' => '1.17', 'Time::Local' => '1.17' }, 1, [], [] ], [ '*001103', 'Modem support', 'ASNMTAP::Asnmtap::Plugins::Modem', { 'ASNMTAP::Asnmtap::Plugins' => '*0011', 'IO' => '1.23', ( $^O eq 'MSWin32' ? ('Win32::SerialPort' => '0.19', 'Win32::API' => '0.41', 'Win32::RASE' => '1.01') : ('Device::SerialPort' => '1.002', 'Net::Ifconfig::Wrapper' => '0.09') ), 'Device::Modem' => '1.47' }, 0, [ [ '/etc/chatscripts/ASNMTAP', 'R' ], [ '/etc/ppp/pap-secrets', 'R' ], [ '/etc/ppp/peers/ASNMTAP', 'R' ], [ '/etc/ppp/resolv/ASNMTAP', 'R' ], [ '/usr/bin/plog', 'R' ], [ '/usr/bin/poff', 'R' ], [ '/usr/bin/pon', 'R' ], ] ], [ '*001104', 'SOAP support', 'ASNMTAP::Asnmtap::Plugins::SOAP', { 'ASNMTAP::Asnmtap::Plugins' => '*0011', 'SOAP::Lite' => '0.710.08', 'WSRF::Lite' => '0.8.2.7', 'DateTime' => '0.37', 'DateTime::Format::Epoch' => '0.10', 'DateTime::Format::W3CDTF' => '0.04', 'Digest::SHA1' => '2.12', 'Crypt::OpenSSL::RSA' => '0.26', 'Crypt::OpenSSL::X509' => '1.2', 'HTTP::Daemon::SSL' => '1.04', 'Sys::Hostname::Long' => '1.4', 'MIME::Base64' => '3.08', 'XML::CanonicalizeXML' => '0.03', 'XML::DOM' => '1.44' }, 1, [], [] ], [ '*001105', 'WebTransact support', 'ASNMTAP::Asnmtap::Plugins::WebTransact', { 'ASNMTAP::Asnmtap::Plugins' => '*0011', 'Bundle::LWP' => '1.11', 'CGI' => '3.37', 'Compress::Zlib' => '2.010', 'Crypt::SSLeay' => '0.56', 'Digest::MD5' => '2.36', 'IO::Socket::SSL' => '1.33', 'MIME::Base64' => '3.08', 'Net::FTP' => '2.75', 'Net::SSLeay' => '1.32', 'URI' => '1.36' }, 1, [], [] ], [ '*001106', 'XML support', 'ASNMTAP::Asnmtap::Plugins::XML', { 'ASNMTAP::Asnmtap::Plugins' => '*0011', 'XML::Parser' => '2.36', 'XML::LibXML' => '1.70', 'XML::Simple' => '2.18' }, 2, [], [] ], [ '*001199', 'Testing Templates', 'ASNMTAP::Asnmtap::Plugins::NPTest', { 'ASNMTAP::Asnmtap::Plugins' => '*0011', 'Cwd' => '3.25', 'Data::Dumper' => '2.121', 'File::Basename' => '2.73', 'IO' => '1.23' }, 1, [], [] ], [ '', 'unbless data structure', 'Data::Structure::Util', { 'Test::Builder::Tester' => '1.13', 'Test::Pod' => '1.22', 'Clone' =>'0.18', 'File::Find::Rule' => '0.28', 'Data::Structure::Util' => '0.11' }, 4, [], [] ], [ '', 'FTP template', 'check_template-ftp.pl', { 'Net::FTP' => '2.75' }, 4, [], [] ], [ '', 'LDAP template', 'check_template-ldap.pl', { 'Convert::ASN1' => '0.19', 'URI::ldap' => '1.11', 'Digest::MD5' => '2.36', 'XML::Parser' => '2.36', 'Net::LDAP' => '0.34' }, 4, [], [] ], [ '', 'MySQL template', 'check_MySQL-database-replication.pl', { 'Bit::Vector' => '6.3', 'Date::Calc' => '5.4', 'Bundle::DBI' => '1.604', 'Bundle::DBD::mysql' => '4.004', 'DBIx::Log4perl' => '0.18', 'Log::Log4perl' => '1.26' }, 4, [], [] ], [ '', 'SFTP template', 'check_template-sftp.pl', { 'Net::SFTP::Foreign' => '1.61' }, 4, [], [] ] ); # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - my %has_module_cache = (); # Allow us to suppress all program installation with the -n (library only) option. # This is for those that don't want to mess with the configuration section of this file. use Getopt::Std; use vars qw ( $opt_n ); unless ( getopts ('n') ) { die "Usage: $0 [-n]\n"; } my $prompt = ( $opt_n ) ? 0 : 1; unlink ('t/APPLICATIONS_ENABLED') if ( -e 't/APPLICATIONS_ENABLED' ); unlink ('t/APPLICATIONS_CGI_ENABLED') if ( -e 't/APPLICATIONS_CGI_ENABLED' ); unlink ('t/PLUGINS_ENABLED') if ( -e 't/PLUGINS_ENABLED' ); unlink ('t/PLUGINS_NPTEST_ENABLED') if ( -e 't/PLUGINS_NPTEST_ENABLED' ); unlink ('t/PLUGINS_MAIL_ENABLED') if ( -e 't/PLUGINS_MAIL_ENABLED' ); unlink ('t/PLUGINS_MODEM_ENABLED') if ( -e 't/PLUGINS_MODEM_ENABLED' ); unlink ('t/PLUGINS_NAGIOS_ENABLED') if ( -e 't/PLUGINS_NAGIOS_ENABLED' ); unlink ('t/PLUGINS_SOAP_ENABLED') if ( -e 't/PLUGINS_SOAP_ENABLED' ); unlink ('t/PLUGINS_WEBTRANSACT_ENABLED') if ( -e 't/PLUGINS_WEBTRANSACT_ENABLED' ); unlink ('t/PLUGINS_XML_ENABLED') if ( -e 't/PLUGINS_XML_ENABLED' ); if ( $prompt ) { print < ( $PERL_AUTOINSTALL ? 'yes' : 'no' ) ) =~ /^\s*(y)/i ); $ENV{PERL_AUTOINSTALL} = $PERL_AUTOINSTALL; $ASNMTAP_APPLICATIONS = ( ExtUtils::MakeMaker::prompt( "\nDo you want to install the Applications?" => ( $ASNMTAP_APPLICATIONS ? 'yes' : 'no' ) ) =~ /^\s*(y)/i ); $ASNMTAP_PLUGINS = ( ExtUtils::MakeMaker::prompt( "\nDo you want to install the Plugin templates?" => ( $ASNMTAP_PLUGINS ? 'yes' : 'no' ) ) =~ /^\s*(y)/i ); if ( $ASNMTAP_APPLICATIONS or $ASNMTAP_PLUGINS ) { $ASNMTAP_UID = prompt ("\nThe wanted UID for the applications and/or plugins?", $ASNMTAP_UID); $ASNMTAP_GID = prompt ("\nThe wanted GID for the applications and/or plugins?", $ASNMTAP_GID); do { $ASNMTAP_PATH = prompt ("\nWhere do want to install the applications and/or plugins?", $ASNMTAP_PATH); unless ( -d $ASNMTAP_PATH ) { mkdir $ASNMTAP_PATH or print "- invalid directory: '$ASNMTAP_PATH'\n" }; } while ( ! -d $ASNMTAP_PATH ); } } else { if ( $ASNMTAP_APPLICATIONS or $ASNMTAP_PLUGINS ) { print "\nCreate directory: '$ASNMTAP_PATH':\n"; unless ( -d $ASNMTAP_PATH ) { mkdir $ASNMTAP_PATH or die "- invalid directory '$ASNMTAP_PATH'\n"; } } } if ( $ASNMTAP_APPLICATIONS or $ASNMTAP_PLUGINS ) { print "- created (when not already exists): '$ASNMTAP_PATH'\n\n"; chown ( $ASNMTAP_UID, $ASNMTAP_GID, $ASNMTAP_PATH ) or die "- chown $ASNMTAP_UID:$ASNMTAP_GID $ASNMTAP_PATH failed: $!"; if ( $ASNMTAP_APPLICATIONS ) { unlink <$ASNMTAP_PATH/applications/htmlroot/nav/*/reports-*.html> if ( -e "$ASNMTAP_PATH/applications/htmlroot/nav" ); if ( -e "$ASNMTAP_PATH/results" ) { unlink <$ASNMTAP_PATH/results/FOOTER.html>; unlink <$ASNMTAP_PATH/results/*/FOOTER.html>; unlink <$ASNMTAP_PATH/results/*/debug/FOOTER.html>; unlink <$ASNMTAP_PATH/results/*/reports/FOOTER.html>; unlink <$ASNMTAP_PATH/results/HEADER.html>; unlink <$ASNMTAP_PATH/results/*/HEADER.html>; unlink <$ASNMTAP_PATH/results/*/debug/HEADER.html>; unlink <$ASNMTAP_PATH/results/*/reports/HEADER.html>; } } } my $intro = < to see the detailed list." ); } else { print "These are the modules that will get installed:\n\n"; } # This hash will contain a list of all perl modules we would like to explicitly depend upon in our Makefile my %PREREQ_PM; # Maintains a cache of what 3rd party modules you have installed sub has_module { my ($module, $version) = @_; $version ||= ''; return ( ( $version =~ /^\*\d{2,2}(?:\d{2,2}(?:\d{2,2})?)?$/ ) ? 2 : ( $has_module_cache { "$module$version" } ||= eval ( "require $module; Exporter::require_version ( '$module', $version ) if ( $version ); 1" ) ) ); } # Print a single prerequisite to the screen sub generate_PREREQ_PM { my ($feature, $dependency, $modules, $install) = @_; my $buffer; my $i = 0; foreach (keys %$modules) { my $detected = has_module ( $_, $modules->{$_} ); $buffer .= sprintf ( "%-24s [%s] %-32s %-8s\n", ( $i++ ? '' : $feature), ($detected >= 2 ? '+' : ( $detected ? '*' : ' ') ), $_ . ( $modules->{ $_ } and $modules->{ $_ } !~ /^\*\d{2,2}(?:\d{2,2}(?:\d{2,2})?)?$/ ? " (v$modules->{$_})" : '' ), ( $i == 1 ? ( $install ? $install == 4 ? 'info' : ( ( $install == 3 ? 'reserved' : ($install == 2 ? 'always' : '[ yes ]') ) ) : '[ no ]') : '' ) ); } return $buffer; } # Print the entire prerequisites table sub generate_PREREQ_PM_table { my $buffer = sprintf ( "%-24s %-36s %-8s\n", 'Feature', 'Prerequisites', 'Install?' ); $buffer .= sprintf ( "%s %s %s\n","-" x 24,"-" x 36,"-" x 8 ); foreach my $prerequisites ( @prerequisites ) { $buffer .= generate_PREREQ_PM ( @$prerequisites[1..4] ); } $buffer .= "\n<- An asterix [*] indicates if the module is currently installed.\n"; return $buffer; } # Update the entire prerequisites table sub update_prerequisites_table { my ($u_level, $u_default) = @_; return if ( $u_default > 2 ); my ($action, $u1, $u2, $u3); ($u1, $u2, $u3) = $u_level =~ /^\*(\d{2,2})(?:(\d{2,2})(\d{2,2})?)?$/; if ( defined $u3 ) { return unless ( $u_default ); $action = 3; } elsif ( defined $u2 ) { return if ( $u_default ); $action = 2; } elsif ( defined $u1 ) { return unless ( $u1 eq '00' ); $action = 1; } else { return; $action = 0; } foreach my $prerequisite ( @prerequisites ) { my ($level, $default) = ( @{$prerequisite}[0], @{$prerequisite}[4] ); if ( $action == 1 and $u_level eq $level ) { @{$prerequisite}[4] = 2; last; } next if ( $default >= 2 ); if ( $u_level ne $level ) { if ( $u_default ) { next unless ( $action == 3 and length($u_level) == 7 and length($level) == 5 and $u_level =~ /^$level/ ); } else { next unless ( $action == 2 and length($u_level) == 5 and length($level) == 7 and $level =~ /^$u_level/ ); } } @{$prerequisite}[4] = $u_default; } } # Initialize the entire prerequisites table foreach my $prerequisites ( @prerequisites ) { update_prerequisites_table( @$prerequisites[0], @$prerequisites[4] ); } my $proceed = 0; do { print "\n". generate_PREREQ_PM_table() ."\n"; $proceed = ( $prompt ? ExtUtils::MakeMaker::prompt( "Do you want to proceed with this configuration?" => 'yes' ) =~ /^\s*y/i : 1 ); print "\nActivate test:\n" if ($proceed); %PREREQ_PM = (); foreach my $prerequisite ( @prerequisites ) { my ($level, $feature, $dependency, $modules, $default) = @{$prerequisite}[0..4]; next unless ( $dependency ne '' ); unless ( $proceed || $default >= 2 ) { $default = ( ( ExtUtils::MakeMaker::prompt( "Do you plan to use ${feature}?" => ( $default ? 'yes' : 'no' ) ) =~ /^\s*(y)/i ) ? 1 : 0 ); @{$prerequisite}[4] = $default; } update_prerequisites_table( $level, $default ); if ( $proceed and ( $default == 1 || $default == 2 ) ) { if ( $dependency =~ /^ASNMTAP::Asnmtap::/ ) { my $t = uc($'); $t =~ s/::/_/g; my $enabled = 't/'. $t .'_ENABLED'; open (ENABLED, ">$enabled") or die "- activate test '$enabled' failed: $!\n"; close (ENABLED); print "- activated test: '$enabled'\n"; } foreach ( keys %$modules ) { my $version = $modules->{$_}; next if ( $version =~ /^\*\d{2,2}(?:\d{2,2}(?:\d{2,2})?)?$/ ); $PREREQ_PM{$_} = $version unless ( defined $PREREQ_PM{$_} and $PREREQ_PM{$_} >= $version ); } } } } while (! $proceed); print "\n"; # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if ( $ASNMTAP_PLUGINS or $ASNMTAP_APPLICATIONS ) { foreach my $prerequisite ( @prerequisites ) { my ($feature, $default, $files) = ( @{$prerequisite}[1], @{$prerequisite}[4..5] ); if ( $default == 1 || $default == 2 ) { if ( defined $files ) { foreach ( @$files ) { my $file = @$_[0]; my $mode = @$_[1]; my @files = glob($file); foreach my $file (@files) { my $destination = ( $file =~ /^\// ? $file : $ASNMTAP_PATH .'/'. $file ); $destination .= '-orig' if ( $mode =~ /^[RX]$/ ); $file = substr($file, 1) if ( $file =~ /^\// ); if ( $mode =~ /^[dD]$/ ) { $file .= '/.exists'; $destination .= '/.exists'; } $PM{$file} = $destination; } } } } } print "\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if ( $PERL_AUTOINSTALL ) { my ($module, $version, $installed); $module = 'Module::AutoInstall'; $version = '1.03'; $installed = eval ( "require $module; Exporter::require_version ( '$module', $version );" ); if ( $installed ) { print "\nAutomatic install of dependencies via CPAN\n"; eval ( " use Module::AutoInstall ( -config => { force => 1, do_once => 1 } ); Module::AutoInstall->install( [], %PREREQ_PM ); " ); print "\n"; } else { print "\n$module required for automatic install of dependencies via CPAN\n"; print "\nperl -MCPAN -e 'install $module'\n\n"; } } # Ok, now it is time to really generate the Makefile - - - - - - - - - - # my $ac = ExtUtils::Autoconf->new; # $ac->configure; WriteMakefile( NAME => 'ASNMTAP', AUTHOR => "alex.peeters\@citap.be", ABSTRACT => "Application System Network Monitoring Toolkit Alex Peeters", VERSION => $VERSION, LICENSE => 'perl', PM => \%PM, MAN3PODS => { map { my $man3pod = $_; $man3pod =~ s/\//::/g; ("lib/ASNMTAP/$_.pod" => "\$(INST_MAN3DIR)/ASNMTAP::$man3pod.\$(MAN3EXT)") } @man3pods }, PREREQ_PM => \%PREREQ_PM, ($] >= 5.005 ? (ABSTRACT => 'Application System Network Monitoring Toolkit Alex Peeters', AUTHOR => 'Alex Peeters ') : () ), 'dist' => { COMPRESS => 'gzip -9f', SUFFIX => 'gz' }, # 'dist' => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', PREOP => q{$(PERLRUN) -MExtUtils::Autoconf -e'ExtUtils::Autoconf->run_autogen'} }, ); # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - package MY; # What happens when we say 'make ...' - - - - - - - - - - - - - - - - - - # sub postamble { # return <<"EOM"; # autogen : # \t\$(PERLRUN) -MExtUtils::Autoconf -e 'ExtUtils::Autoconf->run_autogen' # configure : # \t\$(PERLRUN) -MExtUtils::Autoconf -e'ExtUtils::Autoconf->run_configure' # autoclean : # \t\$(PERLRUN) -MExtUtils::Autoconf -e'ExtUtils::Autoconf->run_realclean' # realclean purge :: # \t\$(PERLRUN) -MExtUtils::Autoconf -e 'ExtUtils::Autoconf->run_realclean' # clean :: # \t\$(PERLRUN) -MExtUtils::Autoconf -e 'ExtUtils::Autoconf->run_clean' # EOM # } # What happens when we say 'make test' - - - - - - - - - - - - - - - - - sub test { q( TEST_VERBOSE=0 test: all $(FULLPERL) t/TEST $(TEST_VERBOSE) ); } # Determine things that should *not* be installed - - - - - - - - - - - - sub libscan { my ($self, $path) = @_; return '' if $path =~ m:\betc\/:; return '' if $path =~ m:\busr\/:; return '' if $path =~ m:\bCVS\/:; $path; } # Pass ASNMTAP version number to pod2man - - - - - - - - - - - - - - - - sub manifypods { my $self = shift; my $version = $self->{VERSION} || $VERSION; local ($_) = $self->SUPER::manifypods(@_); s/pod2man\s*$/pod2man --release ASNMTAP-$version/m; $_; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -