net-analyzer/pnp4nagios: new revision to fix nagios/icinga "or" dependency.
authorMichael Orlitzky <mjo@gentoo.org>
Thu, 2 Nov 2017 16:33:39 +0000 (12:33 -0400)
committerMichael Orlitzky <mjo@gentoo.org>
Sat, 4 Nov 2017 23:37:20 +0000 (19:37 -0400)
Previous revisions of pnp4nagios have an "or" dependency on either
Nagios or Icinga,

  || ( net-analyzer/nagios-core net-analyzer/icinga ...

The way "or" dependencies work is that they are considered satisfied
if any elements of the associated group are installed. Thus the above
stanza allows Nagios and Icinga to be swapped out without rebuilding
pnp4nagios. That is incorrect, since later in the ebuild, nagios-
or icinga-specific paths are compiled into pnp4nagios.

The usual solution to that problem is to choose a default package that
satisfies the "one of these" dependency, but to allow the user to
specify one with a USE flag. This new revision adds three USE flags:
icinga, icinga2, and nagios. The "nagios" flag is enabled by default,
and builds pnp4nagios against net-analyzer/nagios. The other flags
build against the associated package.

In the process, the dependency on nagios-3.x was loosened to accept
nagios-4.x as well. The nagios-3.x series has been end-of-life'd, and
has multiple open security bugs.

Bug: https://bugs.gentoo.org/628086
Bug: https://bugs.gentoo.org/629380
Bug: https://bugs.gentoo.org/636234
Closes: https://bugs.gentoo.org/600424
Package-Manager: Portage-2.3.8, Repoman-2.3.3

net-analyzer/pnp4nagios/metadata.xml
net-analyzer/pnp4nagios/pnp4nagios-0.6.26-r1.ebuild [moved from net-analyzer/pnp4nagios/pnp4nagios-0.6.26.ebuild with 84% similarity]

index 379fdde3e0764d2bb01798d647087fb69efb548f..d5799ab49c93f4eec06b54b364181f2eb90c8d0e 100644 (file)
@@ -5,7 +5,23 @@
     <email>sysadmin@gentoo.org</email>
     <name>Gentoo Sysadmin Project</name>
   </maintainer>
+
+  <use>
+    <flag name="nagios">
+      Build against <pkg>net-analyzer/nagios-core</pkg> (the default)
+    </flag>
+    <flag name="icinga">
+      Build against <pkg>net-analyzer/icinga</pkg> instead of
+      <pkg>net-analyzer/nagios-core</pkg>
+    </flag>
+    <flag name="icinga2">
+      Build against <pkg>net-analyzer/icinga2</pkg> instead of
+      <pkg>net-analyzer/nagios-core</pkg>
+    </flag>
+  </use>
+
   <upstream>
     <remote-id type="sourceforge">pnp4nagios</remote-id>
+    <remote-id type="github">lingej/pnp4nagios</remote-id>
   </upstream>
 </pkgmetadata>
similarity index 84%
rename from net-analyzer/pnp4nagios/pnp4nagios-0.6.26.ebuild
rename to net-analyzer/pnp4nagios/pnp4nagios-0.6.26-r1.ebuild
index 06416fc0d985987024f833bea9779def8977d253..c15a8c98de6fc99ccb24a3a41d2c652ebc3f3c9e 100644 (file)
@@ -9,14 +9,20 @@ SRC_URI="mirror://sourceforge/${PN}/PNP-0.6/${P}.tar.gz"
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="apache2"
+IUSE="apache2 icinga icinga2 +nagios"
 KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86"
 
-# A lot of things (sync mode, for one) are broken with nagios-4.x.
+REQUIRED_USE="^^ ( icinga icinga2 nagios )"
+
+# Some things (sync mode, for one) are broken with nagios-4.x, but since
+# nagios-3.x has been end-of-life'd, we don't have much choice here but
+# to accept it.
 DEPEND="
        dev-lang/php:*[filter,gd,json,simplexml,xml,zlib]
        >=net-analyzer/rrdtool-1.2[graph,perl]
-       || ( <net-analyzer/nagios-core-4 net-analyzer/icinga net-analyzer/icinga2 )"
+       icinga? ( net-analyzer/icinga )
+       icinga2? ( net-analyzer/icinga2 )
+       nagios? ( net-analyzer/nagios-core )"
 
 # A list of modules used in our Apache config file.
 APACHE_MODS="apache2_modules_alias,"       # "Alias" directive
@@ -34,15 +40,16 @@ PATCHES=( "${FILESDIR}/${PN}-0.6.14-makefile.patch" )
 src_configure() {
        local var_dir user_group
 
-       if has_version net-analyzer/nagios-core; then
-               var_dir=/var/nagios
-               user_group=nagios
-       elif has_version net-analyzer/icinga2; then
+       if use icinga; then
+               var_dir=/var/lib/icinga
+               user_group=icinga
+       elif use icinga2; then
                var_dir=/var/lib/icinga2
                user_group=icinga
        else
-               var_dir=/var/lib/icinga
-               user_group=icinga
+               # Thanks to REQUIRED_USE, "use nagios" is the only other case.
+               var_dir=/var/nagios
+               user_group=nagios
        fi
 
        econf \