From 0708e6fa812387214ca1da00d8bad941a2ad5aff Mon Sep 17 00:00:00 2001 From: Ton Voon Date: Thu, 13 Sep 2007 11:36:57 +0000 Subject: Adding in optional Nagios::Plugin perl module (and dependencies) compilation and installation git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1777 f882894a-f735-0410-b71e-b25c423dba1c --- Makefile.am | 7 +-- configure.in | 12 +++++ perlmods/Class-Accessor-0.31.tar.gz | Bin 0 -> 10964 bytes perlmods/Config-Tiny-2.10.tar.gz | Bin 0 -> 23969 bytes perlmods/Makefile.am | 13 ++++++ perlmods/Math-Calc-Units-1.06.tar.gz | Bin 0 -> 33916 bytes perlmods/Nagios-Plugin-0.20.tar.gz | Bin 0 -> 39231 bytes perlmods/Params-Validate-0.88.tar.gz | Bin 0 -> 79925 bytes perlmods/Test-Simple-0.70.tar.gz | Bin 0 -> 77621 bytes perlmods/install_order | 7 +++ tools/build_perl_modules | 86 +++++++++++++++++++++++++++++++++++ 11 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 perlmods/Class-Accessor-0.31.tar.gz create mode 100644 perlmods/Config-Tiny-2.10.tar.gz create mode 100644 perlmods/Makefile.am create mode 100644 perlmods/Math-Calc-Units-1.06.tar.gz create mode 100644 perlmods/Nagios-Plugin-0.20.tar.gz create mode 100644 perlmods/Params-Validate-0.88.tar.gz create mode 100644 perlmods/Test-Simple-0.70.tar.gz create mode 100644 perlmods/install_order create mode 100755 tools/build_perl_modules diff --git a/Makefile.am b/Makefile.am index b76bf76d..5c25f334 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -SUBDIRS = gl lib plugins plugins-scripts plugins-root po +SUBDIRS = gl lib plugins plugins-scripts plugins-root po @PERLMODS_DIR@ EXTRA_DIST = config.rpath \ ABOUT-NLS ACKNOWLEDGEMENTS AUTHORS BUGS CODING FAQ LEGAL NEWS \ @@ -23,8 +23,9 @@ install-root: test: cd lib && $(MAKE) test - cd plugins; $(MAKE) test - cd plugins-scripts; $(MAKE) test + if test "$(PERLMODS_DIR)" != ""; then cd perlmods && $(MAKE) test; fi + cd plugins && $(MAKE) test + cd plugins-scripts && $(MAKE) test nagios-plugins.spec: nagios-plugins.spec.in sed "s/%%{VERSION}/${VERSION}/;s/%%{RELEASE}/${RELEASE}/;s/^%%{requires}$$//" $? > $@ diff --git a/configure.in b/configure.in index 86f37809..9067978a 100644 --- a/configure.in +++ b/configure.in @@ -1503,6 +1503,16 @@ elif test "$ac_cv_enable_redhat_pthread_workaround" = "yes" ; then AC_DEFINE(REDHAT_SPOPEN_ERROR, 1, [Forced workaround on redhat in spopen]) fi +dnl Perl modules +AC_ARG_ENABLE(perl-modules, + AC_HELP_STRING([--enable-perl-modules], + [Enables installation of Nagios::Plugin and its dependencies (default: no)]), + [enable_perl_modules=$enableval], + [enable_perl_modules=no]) +if test "$enable_perl_modules" = "yes" ; then + AC_SUBST(PERLMODS_DIR,perlmods) +fi + dnl External libraries - see ACKNOWLEDGEMENTS gl_INIT @@ -1521,6 +1531,7 @@ AC_OUTPUT( plugins-scripts/subst plugins-scripts/utils.pm plugins-scripts/utils.sh + perlmods/Makefile command.cfg test.pl pkg/solaris/pkginfo @@ -1558,6 +1569,7 @@ ACX_FEATURE([with],[mysql]) ACX_FEATURE([with],[openssl]) ACX_FEATURE([with],[gnutls]) ACX_FEATURE([with],[perl]) +ACX_FEATURE([enable],[perl-modules]) ACX_FEATURE([with],[cgiurl]) ACX_FEATURE([with],[trusted-path]) diff --git a/perlmods/Class-Accessor-0.31.tar.gz b/perlmods/Class-Accessor-0.31.tar.gz new file mode 100644 index 00000000..21ed6745 Binary files /dev/null and b/perlmods/Class-Accessor-0.31.tar.gz differ diff --git a/perlmods/Config-Tiny-2.10.tar.gz b/perlmods/Config-Tiny-2.10.tar.gz new file mode 100644 index 00000000..389c406a Binary files /dev/null and b/perlmods/Config-Tiny-2.10.tar.gz differ diff --git a/perlmods/Makefile.am b/perlmods/Makefile.am new file mode 100644 index 00000000..ebed523b --- /dev/null +++ b/perlmods/Makefile.am @@ -0,0 +1,13 @@ +perlmoduledir = $(exec_prefix)/perl + +all-local: + $(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -m . + +install-exec-local: + $(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -i . + +test: + $(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -t . + +clean-local: + $(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -c . diff --git a/perlmods/Math-Calc-Units-1.06.tar.gz b/perlmods/Math-Calc-Units-1.06.tar.gz new file mode 100644 index 00000000..a5d2360f Binary files /dev/null and b/perlmods/Math-Calc-Units-1.06.tar.gz differ diff --git a/perlmods/Nagios-Plugin-0.20.tar.gz b/perlmods/Nagios-Plugin-0.20.tar.gz new file mode 100644 index 00000000..a9c2d3c0 Binary files /dev/null and b/perlmods/Nagios-Plugin-0.20.tar.gz differ diff --git a/perlmods/Params-Validate-0.88.tar.gz b/perlmods/Params-Validate-0.88.tar.gz new file mode 100644 index 00000000..05a01672 Binary files /dev/null and b/perlmods/Params-Validate-0.88.tar.gz differ diff --git a/perlmods/Test-Simple-0.70.tar.gz b/perlmods/Test-Simple-0.70.tar.gz new file mode 100644 index 00000000..44f1b545 Binary files /dev/null and b/perlmods/Test-Simple-0.70.tar.gz differ diff --git a/perlmods/install_order b/perlmods/install_order new file mode 100644 index 00000000..591a0097 --- /dev/null +++ b/perlmods/install_order @@ -0,0 +1,7 @@ +# Modules installed in this order +Test-Simple +Params-Validate +Math-Calc-Units +Class-Accessor +Config-Tiny +Nagios-Plugin diff --git a/tools/build_perl_modules b/tools/build_perl_modules new file mode 100755 index 00000000..fb471459 --- /dev/null +++ b/tools/build_perl_modules @@ -0,0 +1,86 @@ +#!/usr/bin/perl +# SYNTAX: +# build_perl_modules -d dest_dir [-c] [-m] [-t] [-i] tarball_dir +# +# DESCRIPTION: +# Installs perl modules found in tarball_dir +# Expects a file called install_order, containing one line per distribution name +# Will take action against each distribution in turn +# -d is a necessary destination directory for the perl mods +# If -c is set, will remove the module build directories and exit +# If -m is set, will run perl Makefile.PL and make +# If -t is set, will run make test +# If -i is set, will run make install +# Options are discrete. This is because an overall ./configure, make, make test, make install +# are run in different invocations. Obviously, you can't run a -t without a -m, but there's no +# checking here for that + +# Can only use base modules +use warnings; +use strict; +use Config; +use Getopt::Std; +use Cwd; +use File::Path; + +my $opts = {}; +getopts('d:cmti', $opts) || die "Invalid options"; +my $moddir = shift @ARGV or die "Must specify a directory where tarballs exist"; + +my $destdir = $opts->{d}; +die "Must set a destination directory" unless $destdir; + +chdir $moddir or die "Cannot change to $moddir"; +open F, "install_order" or die "Cannot open install_order file"; +my @files = grep { ! /^#/ && chop } ; +close F; + +my @tarballs; +foreach my $f (@files) { + # Needs to be better. Also, what if there are two with same name? + my $tarball; + eval '$tarball = <'."$f".'*.tar.gz>'; + die unless ($tarball); + print "Got $f, with file: $tarball",$/; + push @tarballs, $tarball; + (my $dir = $tarball) =~ s/\.tar.gz//; + # Need to do cleaning before doing each module in turn + if ($opts->{c}) { + print "Cleaning $dir",$/; + rmtree($dir); + } +} + +if ($opts->{c}) { + print "Finished cleaning",$/; + exit; +} + +my $topdir = cwd(); +foreach my $tarball (@tarballs) { + (my $dir = $tarball) =~ s/\.tar.gz//; + if ($opts->{m}) { + # Don't compile if already done - this is because of invocating this + # script at different stages + unless (-e $dir) { + system("gunzip -c $tarball | tar -xf -") == 0 or die "Cannot extract $tarball"; + chdir $dir or die "Can't chdir into $dir"; + system("perl Makefile.PL PREFIX=$destdir INSTALLDIRS=site LIB=$destdir/lib") == 0 or die "Can't run perl Makefile.PL"; + system("make") == 0 or die "Can't run make"; + chdir $topdir or die "Can't chdir to top";; + } + } + + chdir $dir or die "Can't chdir into $dir"; + + # Need to add this so this module is found for subsequent ones + $ENV{PERL5LIB}="$topdir/$dir/blib/lib:$ENV{PERL5LIB}"; + + if ($opts->{t}) { + system("make test") == 0 or die "Can't run make test failed"; + } + if ($opts->{i}) { + system("make install SITEPREFIX=$destdir") == 0 or die "Can't run make install"; + } + chdir $topdir or die "Can't go back to $topdir"; +} -- cgit v1.2.3-74-g34f1