diff options
author | Hans de Graaff <graaff@gentoo.org> | 2023-07-09 10:43:04 +0200 |
---|---|---|
committer | Hans de Graaff <graaff@gentoo.org> | 2023-07-09 10:43:24 +0200 |
commit | def7b4f57c1eef36f4496a93dcb65f3ff947e8a7 (patch) | |
tree | 9b8782034d3d5cd9b02ea82d349cbf34e9444e97 /net-analyzer | |
parent | dev-ruby/version_gem: drop 1.1.2 (diff) | |
download | gentoo-def7b4f57c1eef36f4496a93dcb65f3ff947e8a7.tar.gz gentoo-def7b4f57c1eef36f4496a93dcb65f3ff947e8a7.tar.bz2 gentoo-def7b4f57c1eef36f4496a93dcb65f3ff947e8a7.zip |
net-analyzer/munin: add 2.0.73
Signed-off-by: Hans de Graaff <graaff@gentoo.org>
Diffstat (limited to 'net-analyzer')
7 files changed, 774 insertions, 0 deletions
diff --git a/net-analyzer/munin/Manifest b/net-analyzer/munin/Manifest index f4701d18726c..9c9f5215a752 100644 --- a/net-analyzer/munin/Manifest +++ b/net-analyzer/munin/Manifest @@ -2,4 +2,5 @@ DIST munin-2.0.67-gentoo-1.tar.xz 3980 BLAKE2B 5aae9c29befa761f797d362c90d810051 DIST munin-2.0.67.tar.gz 2258670 BLAKE2B 374b336403433d612b7998c77e6eb4f0eb68ffda4204ae6bc3c303f7667154c2ce606ffa27226c5644f3e6f71655c939b749da925136f59be4762891af49e2b1 SHA512 a8381491dfa15572438d9acda7a09feb0c3918ebe49e7bcfce5c172b36b4a5a0472bd6d06f5fad41270af0510b3fe115509d146f372df7fa47ed4aa1ec5f95d4 DIST munin-2.0.69-gentoo-1.tar.xz 3980 BLAKE2B 5aae9c29befa761f797d362c90d810051a7f3a5dc8250776ab6ae1659197d795dfb87274db66ff0a3deb4e10e14ced5b3765551a3f29357c436968a848f450ea SHA512 b21d6590bb9e1da127066a06818f1f3157362762f80526e2231b926956959e62af575f38235f72326376dc21bba63f9767efa379f1f2558ca9b20ddf5395e851 DIST munin-2.0.69.tar.gz 2258024 BLAKE2B 2d270f6f67fc9a86a592e2b7cbcf4111d6ae40bf1928b0ad0adb99ad32384810e5768c17019f9163e8b22fd8524b28257df527df023db9c1ba333691b384dd74 SHA512 4976e394e046d3fe1cbb000acdf081060188517e09abcf8b60dd7c55e0e1cdf46e33d1760368cb1423dfb9286e397df2072a2c55ba8b79adeae4ea2303130667 +DIST munin-2.0.73.tar.gz 2259959 BLAKE2B 2d2e4ce00b2df06f083280b9253f875ded100e42c991152f3f8e4b39e85d605367efc18df369e07e18eac38aabd78faa959c367752b153f97246bb47a9732f20 SHA512 4f1d59ff3f163c8fac883973ebba1221619d716c4cde506d9265544c52e73f43e8b587cda3fd00bcf779ceeaf8fef6e7780d9ea4be5b99894f0bb5047f24b935 DIST munin-remove-Date-Manip-DM5.patch 3587 BLAKE2B fab1fb61607e83aac5cbd699c93015d77ca6e58d9734a5a6bc17af6c3c7695ddf4257104cd69db4d3b3e1d36bb1d66a1893ddb51bfc52d0a1dd2efb3ba32a9c0 SHA512 976d7a50de6437a26fa77917368ab604c1987f686030e097c200fe9ebebd08e5fae10c04640cadbfecef90eda76ba123cf303d2d671cefa78b09752d1f6757af diff --git a/net-analyzer/munin/files/patches/0002-build-create-an-install-minimal-target-that-only-ins.patch b/net-analyzer/munin/files/patches/0002-build-create-an-install-minimal-target-that-only-ins.patch new file mode 100644 index 000000000000..fee72bc23ad3 --- /dev/null +++ b/net-analyzer/munin/files/patches/0002-build-create-an-install-minimal-target-that-only-ins.patch @@ -0,0 +1,36 @@ +From 75ae794b1c497a82c4ce8f63c9d016cd11d3c7ba Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= <flameeyes@flameeyes.eu> +Date: Sun, 21 Oct 2012 13:39:21 -0700 +Subject: [PATCH 2/7] build: create an install-minimal target that only + installs the Node components +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is what Gentoo does right now manually, it's easier to maintain +here though, and users might want to do the same if they are +installing from sources, and only want a node. + +Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu> +--- + Makefile | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index cdc3577..c119d38 100644 +--- a/Makefile ++++ b/Makefile +@@ -64,7 +64,9 @@ tags: + + ###################################################################### + +-install: install-master-prime install-common-prime install-node-prime install-plugins-prime $(JAVA_INSTALL) install-man install-async-prime ++install: install-master-prime install-minimal install-man ++ ++install-minimal: install-common-prime install-node-prime install-plugins-prime $(JAVA_INSTALL) install-async-prime + + install-pre: Makefile Makefile.config + @$(CHECKUSER) +-- +2.2.1 + diff --git a/net-analyzer/munin/files/patches/0003-master-make-it-possible-to-configure-the-default-cgi.patch b/net-analyzer/munin/files/patches/0003-master-make-it-possible-to-configure-the-default-cgi.patch new file mode 100644 index 000000000000..63897f552c9a --- /dev/null +++ b/net-analyzer/munin/files/patches/0003-master-make-it-possible-to-configure-the-default-cgi.patch @@ -0,0 +1,113 @@ +From b634d1396bc2fba170b414f09ea07d0de702fdb8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= <flameeyes@flameeyes.eu> +Date: Sun, 4 Nov 2012 11:18:11 -0800 +Subject: [PATCH 3/7] master: make it possible to configure the default cgi-tmp + directory. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This allows distributions to use, for instance, /var/cache/munin-cgi, +so that /var/lib preserves its designed purpose. + +Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu> +--- + Makefile | 7 ++++--- + Makefile.config | 3 +++ + common/lib/Munin/Common/Defaults.pm | 2 +- + master/_bin/munin-cgi-graph.in | 2 +- + master/lib/Munin/Master/Config.pm | 2 +- + master/munin.conf.in | 2 +- + 6 files changed, 11 insertions(+), 7 deletions(-) + +diff --git a/Makefile b/Makefile +index c119d38..2e30052 100644 +--- a/Makefile ++++ b/Makefile +@@ -87,14 +87,14 @@ install-master-prime: $(INFILES_MASTER) install-pre install-master + mkdir -p $(PERLLIB)/Munin/Master + mkdir -p $(HTMLDIR) + mkdir -p $(DBDIR) +- mkdir -p $(DBDIR)/cgi-tmp ++ mkdir -p $(CGITMPDIR) + mkdir -p $(CGIDIR) + + $(CHOWN) $(USER) $(HTMLDIR) $(DBDIR) + $(CHMOD) 0755 $(DBDIR) + +- $(CHOWN) $(CGIUSER) $(DBDIR)/cgi-tmp +- $(CHMOD) 0755 $(DBDIR)/cgi-tmp ++ $(CHOWN) $(CGIUSER) $(CGITMPDIR) ++ $(CHMOD) 0755 $(CGITMPDIR) + + for p in master/www/*.tmpl ; do \ + $(INSTALL) -m 0644 "$$p" $(CONFDIR)/templates/ ; \ +diff --git a/Makefile.config b/Makefile.config +index f5557ea..4378b60 100644 +--- a/Makefile.config ++++ b/Makefile.config +@@ -44,6 +44,9 @@ CGIDIR = $(PREFIX)/www/cgi + # Where to put internal data for master (RRD, internal files, ...) + DBDIR = $(DESTDIR)/var/opt/munin + ++# Where to put CGI cached files (for master only) ++CGITMPDIR = $(DBDIR)/cgi-tmp ++ + # Where to put internal data for node (plugin state, ...) + DBDIRNODE = $(DESTDIR)/var/opt/munin-node + +diff --git a/common/lib/Munin/Common/Defaults.pm b/common/lib/Munin/Common/Defaults.pm +index 131f52c..787b596 100644 +--- a/common/lib/Munin/Common/Defaults.pm ++++ b/common/lib/Munin/Common/Defaults.pm +@@ -25,7 +25,7 @@ our $MUNIN_DOCDIR = ''; + our $MUNIN_LIBDIR = ''; + our $MUNIN_HTMLDIR = ''; + our $MUNIN_CGIDIR = ''; +-our $MUNIN_CGITMPDIR = ''; ++our $MUNIN_CGITMPDIR = ''; + our $MUNIN_DBDIR = ''; + our $MUNIN_PLUGSTATE = ''; + our $MUNIN_SPOOLDIR = ''; +diff --git a/master/_bin/munin-cgi-graph.in b/master/_bin/munin-cgi-graph.in +index 651cf8c..f5a7ccd 100755 +--- a/master/_bin/munin-cgi-graph.in ++++ b/master/_bin/munin-cgi-graph.in +@@ -337,7 +337,7 @@ sub get_picture_filename { + my $params = shift; + + # XXX - hack to fix cgitmpdir default +- $config->{cgitmpdir} ||= "$Munin::Common::Defaults::MUNIN_DBDIR/cgi-tmp"; ++ $config->{cgitmpdir} ||= "$Munin::Common::Defaults::MUNIN_CGITMPDIR"; + my $cgi_tmp_dir = $config->{cgitmpdir} . "/munin-cgi-graph"; + + $params = $params ? "?$params" : ""; +diff --git a/master/lib/Munin/Master/Config.pm b/master/lib/Munin/Master/Config.pm +index 291ffaf..b5c0813 100644 +--- a/master/lib/Munin/Master/Config.pm 2017-03-03 01:02:39.000000000 +0100 ++++ b/master/lib/Munin/Master/Config.pm 2017-07-18 19:29:44.861742592 +0200 +@@ -161,7 +161,7 @@ + tls_verify_depth => 5, + tmpldir => "$Munin::Common::Defaults::MUNIN_CONFDIR/templates", + staticdir => "$Munin::Common::Defaults::MUNIN_CONFDIR/static", +- cgitmpdir => "$Munin::Common::Defaults::MUNIN_DBDIR/cgi-tmp", ++ cgitmpdir => "$Munin::Common::Defaults::MUNIN_CGITMPDIR", + ssh_command => "ssh", + ssh_options => "-o ChallengeResponseAuthentication=no -o StrictHostKeyChecking=no", + }, $class ), +diff --git a/master/munin.conf.in b/master/munin.conf.in +index 8d1a75f..046f369 100644 +--- a/master/munin.conf.in ++++ b/master/munin.conf.in +@@ -21,7 +21,7 @@ + # temporary cgi files are here. note that it has to be writable by + # the cgi user (usually nobody or httpd). + # +-# cgitmpdir @@DBDIR@@/cgi-tmp ++# cgitmpdir @@CGITMPDIR@@ + + # (Exactly one) directory to include all files from. + includedir @@CONFDIR@@/munin-conf.d +-- +2.2.1 + diff --git a/net-analyzer/munin/files/patches/0005-node-use-Net-Domain-hostfqdn-instead-of-Sys-Hostname.patch b/net-analyzer/munin/files/patches/0005-node-use-Net-Domain-hostfqdn-instead-of-Sys-Hostname.patch new file mode 100644 index 000000000000..214cc4c4e6b8 --- /dev/null +++ b/net-analyzer/munin/files/patches/0005-node-use-Net-Domain-hostfqdn-instead-of-Sys-Hostname.patch @@ -0,0 +1,44 @@ +From e504b83d0db596a39f32227d4c473575e227037a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= <flameeyes@flameeyes.eu> +Date: Sun, 11 Nov 2012 14:38:16 -0800 +Subject: [PATCH 5/7] node: use Net::Domain::hostfqdn instead of + Sys::Hostname::hostname to get the hostname. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This actually makes the test work correctly, but might change the +returned values for some hosts. + +Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu> +--- + node/lib/Munin/Node/OS.pm | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/node/lib/Munin/Node/OS.pm b/node/lib/Munin/Node/OS.pm +index 31bebac..b8fa58a 100644 +--- a/node/lib/Munin/Node/OS.pm ++++ b/node/lib/Munin/Node/OS.pm +@@ -12,7 +12,7 @@ use Munin::Node::Config; + use Munin::Common::Timeout; + + use POSIX (); +-use Sys::Hostname; ++use Net::Domain qw(hostfqdn); + + sub get_uid { + my ($class, $user) = @_; +@@ -38,9 +38,7 @@ sub _get_xid { + } + + sub get_fq_hostname { +- my $short = Sys::Hostname::hostname(); +- +- return (gethostbyname $short)[0] || $short || "unknown"; ++ return hostfqdn || "unknown"; + } + + sub check_perms_if_paranoid +-- +2.2.1 + diff --git a/net-analyzer/munin/files/patches/0007-node-always-use-the-Effective-UID-not-just-the-UID.patch b/net-analyzer/munin/files/patches/0007-node-always-use-the-Effective-UID-not-just-the-UID.patch new file mode 100644 index 000000000000..07b86e4a9f60 --- /dev/null +++ b/net-analyzer/munin/files/patches/0007-node-always-use-the-Effective-UID-not-just-the-UID.patch @@ -0,0 +1,139 @@ +From 50ca7989a481e31d2434f755812070ac8f4e14c5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= <flameeyes@flameeyes.eu> +Date: Sun, 11 Nov 2012 15:18:51 -0800 +Subject: [PATCH 7/7] node: always use the Effective UID not just the UID. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu> +--- + common/lib/Munin/Common/Defaults.pm | 6 +++--- + node/t/munin_node_config.t | 12 ++++++------ + node/t/munin_node_os.t | 6 +++--- + node/t/munin_node_service.t | 14 +++++++------- + 4 files changed, 19 insertions(+), 19 deletions(-) + +diff --git a/common/lib/Munin/Common/Defaults.pm b/common/lib/Munin/Common/Defaults.pm +index 787b596..0f7f292 100644 +--- a/common/lib/Munin/Common/Defaults.pm ++++ b/common/lib/Munin/Common/Defaults.pm +@@ -32,9 +32,9 @@ our $MUNIN_SPOOLDIR = ''; + our $MUNIN_MANDIR = ''; + our $MUNIN_LOGDIR = "$COMPONENT_ROOT/log/"; + our $MUNIN_STATEDIR = ''; +-our $MUNIN_USER = getpwuid $UID; +-our $MUNIN_GROUP = getgrgid $GID; +-our $MUNIN_PLUGINUSER = getpwuid $UID; ++our $MUNIN_USER = getpwuid $EUID; ++our $MUNIN_GROUP = getgrgid $EGID; ++our $MUNIN_PLUGINUSER = getpwuid $EUID; + our $MUNIN_VERSION = 'svn'; + our $MUNIN_PERL = '/usr/bin/perl'; + our $MUNIN_PERLLIB = ''; +diff --git a/node/t/munin_node_config.t b/node/t/munin_node_config.t +index b8b6564..3d5530f 100644 +--- a/node/t/munin_node_config.t ++++ b/node/t/munin_node_config.t +@@ -43,13 +43,13 @@ isa_ok($conf, 'Munin::Node::Config'); + + ### Default user + { +- my $uname = getpwuid $UID; ++ my $uname = getpwuid $EUID; + + my @res = $conf->_parse_line("default_client_user $uname"); +- is_deeply(\@res, [defuser => $UID], 'Parsing default user name'); ++ is_deeply(\@res, [defuser => $EUID], 'Parsing default user name'); + + @res = $conf->_parse_line("default_client_user $UID"); +- is_deeply(\@res, [defuser => $UID], 'Parsing default user ID'); ++ is_deeply(\@res, [defuser => $EUID], 'Parsing default user ID'); + + eval { $conf->_parse_line("default_client_user xxxyyyzzz") }; + like($@, qr{Default user does not exist}, "Default user exists"); +@@ -184,13 +184,13 @@ isa_ok($conf, 'Munin::Node::Config'); + + ### user + { +- my $uname = getpwuid $UID; ++ my $uname = getpwuid $EUID; + + my @res = $conf->_parse_plugin_line("user $uname"); + is_deeply(\@res, [user => $uname], 'Parsing plugin user name'); + +- @res = $conf->_parse_plugin_line("user $UID"); +- is_deeply(\@res, [user => $UID], 'Parsing plugin user ID'); ++ @res = $conf->_parse_plugin_line("user $EUID"); ++ is_deeply(\@res, [user => $EUID], 'Parsing plugin user ID'); + } + + ### group +diff --git a/node/t/munin_node_os.t b/node/t/munin_node_os.t +index 96d7c74..e10d9e6 100644 +--- a/node/t/munin_node_os.t ++++ b/node/t/munin_node_os.t +@@ -13,10 +13,10 @@ my $os = 'Munin::Node::OS'; + + ### get_uid + { +- my $uname = getpwuid $UID; ++ my $uname = getpwuid $EUID; + +- is($os->get_uid($uname), $UID, 'Lookup by user name'); +- is($os->get_uid($UID), $UID, 'Lookup by user ID'); ++ is($os->get_uid($uname), $EUID, 'Lookup by user name'); ++ is($os->get_uid($EUID), $EUID, 'Lookup by user ID'); + + is($os->get_uid('%%SSKK¤¤'), undef, 'Nonexistent user name'); + is($os->get_uid(999999999), undef, 'Nonexistent user ID'); +diff --git a/node/t/munin_node_service.t b/node/t/munin_node_service.t +index 18bda89..7fa050e 100644 +--- a/node/t/munin_node_service.t ++++ b/node/t/munin_node_service.t +@@ -12,8 +12,8 @@ use Munin::Node::Service; + + use English qw(-no_match_vars); + +-my $uname = getpwuid $UID; +-my $gid = (split / /, $GID)[0]; ++my $uname = getpwuid $EUID; ++my $gid = (split / /, $EGID)[0]; + my $gname = getgrgid $gid; + + +@@ -39,7 +39,7 @@ $config->reinitialize({ + + # testing user resolution + uname => { user => $uname }, +- uid => { user => $UID }, ++ uid => { user => $EUID }, + bad_uname => { user => '%%SSKK¤¤' }, + bad_uid => { user => 999999999 }, + +@@ -155,7 +155,7 @@ $ENV{MUNIN_MASTER_IP} = ''; + + ### export_service_environment + { +- my $services = Munin::Node::Service->new(defuser => $UID); ++ my $services = Munin::Node::Service->new(defuser => $EUID); + + $services->export_service_environment('test'); + is($ENV{test_environment_variable}, 'fnord', 'Service-specific environment is exported'); +@@ -164,10 +164,10 @@ $ENV{MUNIN_MASTER_IP} = ''; + + ### _resolve_uid + { +- my $services = Munin::Node::Service->new(defuser => $UID); ++ my $services = Munin::Node::Service->new(defuser => $EUID); + +- is($services->_resolve_uid('uname'), $UID, 'Lookup by service-specific username'); +- is($services->_resolve_uid('uid'), $UID, 'Lookup by service-specific username'); ++ is($services->_resolve_uid('uname'), $EUID, 'Lookup by service-specific username'); ++ is($services->_resolve_uid('uid'), $EUID, 'Lookup by service-specific username'); + + $services->{defuser} = 0; + +-- +2.2.1 + diff --git a/net-analyzer/munin/files/patches/0009-perl-526.patch b/net-analyzer/munin/files/patches/0009-perl-526.patch new file mode 100644 index 000000000000..d3cabb9906c3 --- /dev/null +++ b/net-analyzer/munin/files/patches/0009-perl-526.patch @@ -0,0 +1,26 @@ + + +diff -ruN munin-2.0.33.orig/master/Build.PL munin-2.0.33/master/Build.PL +--- munin-2.0.33.orig/master/Build.PL 2017-03-03 00:02:39.000000000 -0000 ++++ munin-2.0.33/master/Build.PL 2017-08-05 15:06:55.799816839 -0000 +@@ -1,3 +1,4 @@ ++use lib q[.]; + use MasterBuilder; + + use warnings; +diff -ruN munin-2.0.33.orig/node/Build.PL munin-2.0.33/node/Build.PL +--- munin-2.0.33.orig/node/Build.PL 2017-03-03 00:02:39.000000000 -0000 ++++ munin-2.0.33/node/Build.PL 2017-08-05 15:11:07.689824612 -0000 +@@ -1,3 +1,4 @@ ++use lib q[.]; + use NodeBuilder; + + use warnings; +diff -ruN munin-2.0.33.orig/plugins/Build.PL munin-2.0.33/plugins/Build.PL +--- munin-2.0.33.orig/plugins/Build.PL 2017-03-03 00:02:39.000000000 -0000 ++++ munin-2.0.33/plugins/Build.PL 2017-08-05 15:13:57.056168401 -0000 +@@ -1,3 +1,4 @@ ++use lib q[.]; + use PluginsBuilder; + + use warnings; diff --git a/net-analyzer/munin/munin-2.0.73.ebuild b/net-analyzer/munin/munin-2.0.73.ebuild new file mode 100644 index 000000000000..069169b51efe --- /dev/null +++ b/net-analyzer/munin/munin-2.0.73.ebuild @@ -0,0 +1,415 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PATCHSET=1 + +inherit java-pkg-opt-2 systemd tmpfiles + +MY_P=${P/_/-} + +DESCRIPTION="Munin Server Monitoring Tool" +HOMEPAGE="https://munin-monitoring.org/" +SRC_URI=" + https://github.com/munin-monitoring/munin/archive/${PV}.tar.gz -> ${P}.tar.gz + " + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86" +IUSE="asterisk irc java ldap memcached minimal mysql postgres selinux ssl test cgi ipv6 syslog ipmi http dhcpd doc apache2" +REQUIRED_USE="cgi? ( !minimal ) apache2? ( cgi )" +RESTRICT="!test? ( test )" + +# Upstream's listing of required modules is NOT correct! +# Some of the postgres plugins use DBD::Pg, while others call psql directly. +# Some of the mysql plugins use DBD::mysql, while others call mysqladmin directly. +# We replace the original ipmi plugins with the freeipmi_ plugin which at least works. +DEPEND_COM=" + acct-user/munin + acct-user/munin-async + acct-group/munin + dev-lang/perl:=[berkdb] + dev-perl/DBI + dev-perl/File-Copy-Recursive + dev-perl/List-MoreUtils + dev-perl/Log-Log4perl + dev-perl/Net-CIDR + dev-perl/Net-DNS + dev-perl/Net-Netmask + dev-perl/Net-SNMP + dev-perl/Net-Server[ipv6(-)?] + dev-perl/TimeDate + virtual/perl-Digest-MD5 + virtual/perl-Getopt-Long + virtual/perl-MIME-Base64 + virtual/perl-Storable + virtual/perl-Text-Balanced + virtual/perl-Time-HiRes + apache2? ( www-servers/apache[apache2_modules_cgi,apache2_modules_cgid,apache2_modules_rewrite] ) + asterisk? ( dev-perl/Net-Telnet ) + cgi? ( + dev-perl/FCGI + dev-perl/CGI-Fast + ) + dhcpd? ( + >=net-misc/dhcp-3[server] + dev-perl/Net-IP + dev-perl/HTTP-Date + ) + doc? ( dev-python/sphinx ) + http? ( dev-perl/libwww-perl ) + irc? ( dev-perl/Net-IRC ) + ldap? ( dev-perl/perl-ldap ) + kernel_linux? ( sys-process/procps ) + memcached? ( dev-perl/Cache-Memcached ) + mysql? ( + virtual/mysql + dev-perl/Cache-Cache + dev-perl/DBD-mysql + ) + postgres? ( dev-perl/DBD-Pg dev-db/postgresql:* ) + ssl? ( dev-perl/Net-SSLeay ) + syslog? ( virtual/perl-Sys-Syslog ) + !minimal? ( + dev-perl/HTML-Template + dev-perl/IO-Socket-INET6 + dev-perl/URI + >=net-analyzer/rrdtool-1.3[graph,perl] + virtual/ssh + ) + " + +# Keep this seperate, as previous versions have had other deps here +DEPEND="${DEPEND_COM} + dev-perl/Module-Build + java? ( >=virtual/jdk-1.8 ) + test? ( + dev-perl/Test-Deep + dev-perl/Test-Exception + dev-perl/Test-LongString + dev-perl/Test-Differences + dev-perl/Test-MockModule + dev-perl/Test-MockObject + dev-perl/File-Slurp + dev-perl/IO-stringy + dev-perl/IO-Socket-INET6 + )" +RDEPEND="${DEPEND_COM} + app-alternatives/awk + ipmi? ( >=sys-libs/freeipmi-1.1.6-r1 ) + java? ( + >=virtual/jre-1.8:* + || ( net-analyzer/netcat net-analyzer/openbsd-netcat ) + ) + !minimal? ( + virtual/cron + media-fonts/dejavu + ) + selinux? ( sec-policy/selinux-munin )" + +S="${WORKDIR}/${MY_P}" + +pkg_setup() { + java-pkg-opt-2_pkg_setup +} + +src_prepare() { + echo ${PV} > RELEASE || die + + eapply "${FILESDIR}"/patches/*.patch + + eapply_user + + java-pkg-opt-2_src_prepare +} + +src_configure() { + local cgidir='$(DESTDIR)/usr/libexec/munin/cgi' + use cgi || cgidir="${T}/useless/cgi-bin" + + local cgiuser=$(usex apache2 apache munin) + + cat >> "${S}"/Makefile.config <<- EOF || die + PREFIX=\$(DESTDIR)/usr + CONFDIR=\$(DESTDIR)/etc/munin + DOCDIR=${T}/useless/doc + MANDIR=\$(PREFIX)/share/man + LIBDIR=\$(PREFIX)/libexec/munin + HTMLDIR=\$(DESTDIR)/var/www/localhost/htdocs/munin + CGIDIR=${cgidir} + CGITMPDIR=\$(DESTDIR)/var/cache/munin-cgi + CGIUSER=${cgiuser} + DBDIR=\$(DESTDIR)/var/lib/munin + DBDIRNODE=\$(DESTDIR)/var/lib/munin-node + SPOOLDIR=\$(DESTDIR)/var/spool/munin-async + LOGDIR=\$(DESTDIR)/var/log/munin + PERLLIB=\$(DESTDIR)$(perl -V:vendorlib | cut -d"'" -f2) + JCVALID=$(usex java yes no) + STATEDIR=\$(DESTDIR)/run/munin + EOF +} + +# parallel make and install need to be fixed before, and I haven't +# gotten around to do so yet. +src_compile() { + emake -j1 + use doc && emake -C doc html +} + +src_test() { + if [[ ${EUID} == 0 ]]; then + eerror "You cannot run tests as root." + eerror "Please enable FEATURES=userpriv before proceeding." + return 1 + fi + + local testtargets="test-common test-node test-plugins" + use minimal || testtargets+=" test-master" + + LC_ALL=C emake -j1 ${testtargets} +} + +src_install() { + local dirs=" + /var/log/munin + /var/lib/munin/plugin-state + /var/lib/munin-node/plugin-state + /var/www/localhost/htdocs/munin + /etc/munin/plugin-conf.d + /etc/munin/plugins" + use minimal || dirs+=" /etc/munin/munin-conf.d/" + + keepdir ${dirs} + fowners munin:munin ${dirs} + + # parallel install doesn't work and it's also pointless to have this + # run in parallel for now (because it uses internal loops). + emake -j1 CHOWN=true DESTDIR="${D}" $(usex minimal "install-minimal install-man" install) + + # we remove /run from the install, as it's not the package's to deal + # with. + rm -rf "${D}"/run || die + + # remove the plugins for non-Gentoo package managers; use -f so that + # it doesn't fail when installing on non-Linux platforms. + rm -f "${D}"/usr/libexec/munin/plugins/{apt{,_all},yum} || die + + insinto /etc/munin/plugin-conf.d/ + newins "${FILESDIR}"/${PN}-1.3.2-plugins.conf munin-node + + newinitd "${FILESDIR}"/munin-node_init.d_2.0.19 munin-node + newconfd "${FILESDIR}"/munin-node_conf.d_1.4.6-r2 munin-node + + newinitd "${FILESDIR}"/munin-asyncd.init.2 munin-asyncd + + newtmpfiles - ${CATEGORY}:${PN}:${SLOT}.conf <<-EOF || die + d /run/munin 0700 munin munin - - + EOF + + systemd_dounit "${FILESDIR}"/munin-async.service + systemd_dounit "${FILESDIR}"/munin-graph.{service,socket} + systemd_dounit "${FILESDIR}"/munin-html.{service,socket} + systemd_dounit "${FILESDIR}"/munin-node.service + + cat >> "${T}"/munin.env <<- EOF + CONFIG_PROTECT=/var/spool/munin-async/.ssh + EOF + newenvd "${T}"/munin.env 50munin + + dodoc README ChangeLog INSTALL + if use doc; then + cd "${S}"/doc/_build/html || die + docinto html + dodoc -r * + cd "${S}" || die + fi + + dodir /etc/logrotate.d/ + sed -e "s:@CGIUSER@:$(usex apache2 apache munin):g" \ + "${FILESDIR}"/logrotate.d-munin.3 > "${D}"/etc/logrotate.d/munin + + dosym ipmi_ /usr/libexec/munin/plugins/ipmi_sensor_ + + if use syslog; then + sed -i -e '/log_file/s| .*| Sys::Syslog|' \ + "${D}"/etc/munin/munin-node.conf || die + fi + + # Use a simpler pid file to avoid trouble with /run in tmpfs. The + # munin-node service is ran as user root, and only later drops + # privileges. + sed -i -e 's:/run/munin/munin-node.pid:/run/munin-node.pid:' \ + "${D}"/etc/munin/munin-node.conf || die + + keepdir /var/spool/munin-async/.ssh + touch "${D}"/var/spool/munin-async/.ssh/authorized_keys + fowners munin-async:munin /var/spool/munin-async{,/.ssh/{,authorized_keys}} + fperms 0750 /var/spool/munin-async{,/.ssh} + fperms 0600 /var/spool/munin-async/.ssh/authorized_keys + + if use minimal; then + # This requires the presence of munin-update, which is part of + # the non-minimal install... + rm "${D}"/usr/libexec/munin/plugins/munin_stats + else + # remove font files so that we don't have to keep them around + rm "${D}"/usr/libexec/${PN}/*.ttf || die + + if use cgi; then + sed -i -e '/#graph_strategy cgi/s:^#::' "${D}"/etc/munin/munin.conf || die + + touch "${D}"/var/log/munin/munin-cgi-{graph,html}.log + fowners $(usex apache2 apache munin) \ + /var/log/munin/munin-cgi-{graph,html}.log + + if use apache2; then + insinto /etc/apache2/vhosts.d + newins "${FILESDIR}"/munin.apache.include munin.include + newins "${FILESDIR}"/munin.apache.include-2.4 munin-2.4.include + fi + else + sed \ + -e '/#graph_strategy cgi/s:#graph_strategy cgi:graph_strategy cron:' \ + -i "${D}"/etc/munin/munin.conf || die + fi + + keepdir /var/lib/munin/.ssh + cat >> "${D}"/var/lib/munin/.ssh/config <<- EOF + IdentityFile /var/lib/munin/.ssh/id_ecdsa + IdentityFile /var/lib/munin/.ssh/id_rsa + EOF + + fowners munin:munin /var/lib/munin/.ssh/{,config} + fperms go-rwx /var/lib/munin/.ssh/{,config} + + dodir /usr/share/${PN} + cat >> "${D}"/usr/share/${PN}/crontab <<- EOF + # Force the shell to bash + SHELL=/bin/bash + # Mail reports to root@, not munin@ + MAILTO=root + + # This runs the munin task every 5 minutes. + */5 * * * * /usr/bin/munin-cron + + # Alternatively, this route works differently + # Update once a minute (for busy sites) + #*/1 * * * * /usr/libexec/munin/munin-update + ## Check for limit excess every 2 minutes + #*/2 * * * * /usr/libexec/munin/munin-limits + ## Update graphs every 5 minutes + #*/5 * * * * nice /usr/libexec/munin/munin-graph + ## Update HTML pages every 15 minutes + #*/15 * * * * nice /usr/libexec/munin/munin-html + EOF + + cat >> "${D}"/usr/share/${PN}/fcrontab <<- EOF + # Mail reports to root@, not munin@, only execute one at a time + !mailto(root),serial(true) + + # This runs the munin task every 5 minutes. + @ 5 /usr/bin/munin-cron + + # Alternatively, this route works differently + # Update once a minute (for busy sites) + #@ 1 /usr/libexec/munin/munin-update + ## Check for limit excess every 2 minutes + #@ 2 /usr/libexec/munin/munin-limits + ## Update graphs every 5 minutes + #@ 5 nice /usr/libexec/munin/munin-graph + ## Update HTML pages every 15 minutes + #@ 15 nice /usr/libexec/munin/munin-html + EOF + + # remove .htaccess file + find "${D}" -name .htaccess -delete || die + fi +} + +pkg_config() { + if use minimal; then + einfo "Nothing to do." + return 0 + fi + + einfo "Press enter to install the default crontab for the munin master" + einfo "installation from /usr/share/${PN}/f?crontab" + einfo "If you have a large site, you may wish to customize it." + read + + ebegin "Setting up cron ..." + if has_version sys-process/fcron; then + fcrontab - -u munin < /usr/share/${PN}/fcrontab + else + # dcron is very fussy about syntax + # the following is the only form that works in BOTH dcron and vixie-cron + crontab - -u munin < /usr/share/${PN}/crontab + fi + eend $? + + einfo "Press enter to set up the SSH keys used for SSH transport" + read + + # generate one rsa (for legacy) and one ecdsa (for new systems) + ssh-keygen -t rsa \ + -f /var/lib/munin/.ssh/id_rsa -N '' \ + -C "created by portage for ${CATEGORY}/${PN}" || die + ssh-keygen -t ecdsa \ + -f /var/lib/munin/.ssh/id_ecdsa -N '' \ + -C "created by portage for ${CATEGORY}/${PN}" || die + chown -R munin:munin /var/lib/munin/.ssh || die + chmod 0600 /var/lib/munin/.ssh/id_{rsa,ecdsa} || die + + einfo "Your public keys are available in " + einfo " /var/lib/munin/.ssh/id_rsa.pub" + einfo " /var/lib/munin/.ssh/id_ecdsa.pub" + einfo "and follows for convenience" + echo + cat /var/lib/munin/.ssh/id_*.pub +} + +pkg_postinst() { + tmpfiles_process ${CATEGORY}:${PN}:${SLOT}.conf + + elog "Please follow the munin documentation to set up the plugins you" + elog "need, afterwards start munin-node." + elog "" + elog "To make use of munin-async, make sure to set up the corresponding" + elog "SSH key in /var/lib/munin-async/.ssh/authorized_keys" + elog "" + if ! use minimal; then + elog "Please run" + elog " emerge --config net-analyzer/munin" + elog "to automatically configure munin's cronjobs as well as generate" + elog "passwordless SSH keys to be used with munin-async." + fi + elog "" + elog "Further information about setting up Munin in Gentoo can be found" + elog "in the Gentoo Wiki: https://wiki.gentoo.org/wiki/Munin" + + if use cgi; then + chown $(usex apache2 apache munin) \ + "${ROOT}"/var/log/munin/munin-cgi-{graph,html}.log + + if use apache2; then + elog "To use Munin with CGI you should include /etc/apache2/vhosts.d/munin.include" + elog "or /etc/apache2/vhosts.d/munin-2.4.include (for Apache 2.4) from the virtual" + elog "host you want it to be served." + elog "If you want to enable CGI-based HTML as well, you have to add to" + elog "/etc/conf.d/apache2 the option -D MUNIN_HTML_CGI." + else + elog "Effective CGI support has just been added in 2.0.7-r6." + elog "Documentation on how to use it is still sparse." + fi + fi + + # we create this here as we don't want Portage to check /run + # symlinks but we still need this to be present before the reboot. + if ! use minimal && ! [[ -d "${ROOT}"/run/munin ]]; then + mkdir "${ROOT}"/run/munin + chown munin:munin "${ROOT}"/run/munin + chmod 0700 "${ROOT}"/run/munin + fi +} |