meta-phosphor: obmc-apps: Avoid extras

Much like CORE_IMAGE_EXTRA_INSTALL, packagegroup-obmc-apps-extras is a
dumping ground.  Move packages to proper packagroups (bmcweb, ikvm,
dbus-monitor, ldap) and create IMAGE_FEATURES for easy opt-out.

(From meta-phosphor rev: 7463d6daf6868dcad47070c35c1abaec5cf3d2a5)

Change-Id: Ic4209059ac6e22aac18ef95010c7da1439686962
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/meta-phosphor/classes/obmc-phosphor-image.bbclass b/meta-phosphor/classes/obmc-phosphor-image.bbclass
index d6ece7f..1c744ca 100644
--- a/meta-phosphor/classes/obmc-phosphor-image.bbclass
+++ b/meta-phosphor/classes/obmc-phosphor-image.bbclass
@@ -3,9 +3,11 @@
 # Additional IMAGE_FEATURES available with Phosphor OpenBMC:
 #
 # - obmc-bmc-state-mgmt               - OpenBMC BMC state management
+# - obmc-bmcweb                       - OpenBMC webserver
 # - obmc-chassis-mgmt                 - OpenBMC chassis management
 # - obmc-chassis-state-mgmt           - OpenBMC chassis state management
 # - obmc-console                      - OpenBMC serial over LAN
+# - obmc-dbus-monitor                 - OpenBMC dbus monitoring
 # - obmc-devtools                     - OpenBMC development and debugging tools
 # - obmc-fan-control                  - OpenBMC fan management
 # - obmc-fan-mgmt                     - Deprecated - use obmc-fan-control instead
@@ -13,6 +15,7 @@
 # - obmc-host-ctl                     - OpenBMC host control
 # - obmc-host-ipmi                    - OpenBMC host IPMI
 # - obmc-host-state-mgmt              - OpenBMC host state management
+# - obmc-ikvm                         - OpenBMC KVM over IP
 # - obmc-inventory                    - OpenBMC inventory support
 # - obmc-leds                         - OpenBMC LED support
 # - obmc-logging-mgmt                 - OpenBMC logging management
@@ -23,14 +26,17 @@
 # - obmc-software                     - OpenBMC software management
 # - obmc-system-mgmt                  - OpenBMC system management
 # - obmc-user-mgmt                    - OpenBMC user management
+# - obmc-user-mgmt-ldap               - OpenBMC LDAP users
 # - obmc-debug-collector              - OpenBMC debug collector
 
 inherit core-image
 
 FEATURE_PACKAGES_obmc-bmc-state-mgmt ?= "packagegroup-obmc-apps-bmc-state-mgmt"
+FEATURE_PACKAGES_obmc-bmcweb ?= "packagegroup-obmc-apps-bmcweb"
 FEATURE_PACKAGES_obmc-chassis-mgmt ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-phosphor-chassis-mgmt', 'virtual-obmc-chassis-mgmt', '', d)}"
 FEATURE_PACKAGES_obmc-chassis-state-mgmt ?= "packagegroup-obmc-apps-chassis-state-mgmt"
 FEATURE_PACKAGES_obmc-console ?= "packagegroup-obmc-apps-console"
+FEATURE_PACKAGES_obmc-dbus-monitor ?= "packagegroup-obmc-apps-dbus-monitor"
 FEATURE_PACKAGES_obmc-devtools ?= "packagegroup-obmc-apps-devtools"
 FEATURE_PACKAGES_obmc-fan-control ?= "packagegroup-obmc-apps-fan-control"
 FEATURE_PACKAGES_obmc-fan-mgmt ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-phosphor-fan-mgmt', 'virtual-obmc-fan-mgmt', '', d)}"
@@ -38,6 +44,7 @@
 FEATURE_PACKAGES_obmc-host-ctl ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-host-ctl', 'virtual-obmc-host-ctl', '', d)}"
 FEATURE_PACKAGES_obmc-host-ipmi ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-host-ipmi', 'virtual-obmc-host-ipmi-hw', '', d)}"
 FEATURE_PACKAGES_obmc-host-state-mgmt ?= "packagegroup-obmc-apps-host-state-mgmt"
+FEATURE_PACKAGES_obmc-ikvm ?= "packagegroup-obmc-apps-ikvm"
 FEATURE_PACKAGES_obmc-inventory ?= "packagegroup-obmc-apps-inventory"
 FEATURE_PACKAGES_obmc-leds ?= "packagegroup-obmc-apps-leds"
 FEATURE_PACKAGES_obmc-logging-mgmt ?= "packagegroup-obmc-apps-logging"
@@ -51,6 +58,7 @@
 FEATURE_PACKAGES_obmc-settings-mgmt ?= "packagegroup-obmc-apps-settings"
 FEATURE_PACKAGES_obmc-network-mgmt ?= "packagegroup-obmc-apps-network"
 FEATURE_PACKAGES_obmc-user-mgmt ?= "packagegroup-obmc-apps-user-mgmt"
+FEATURE_PACKAGES_obmc-user-mgmt-ldap ?= "packagegroup-obmc-apps-user-mgmt-ldap"
 
 # FIXME: phosphor-net-ipmi depends on phosphor-ipmi-host !?!? and
 # cannot be built on core-qemu machines because of the dependency
diff --git a/meta-phosphor/recipes-phosphor/images/obmc-phosphor-image.bb b/meta-phosphor/recipes-phosphor/images/obmc-phosphor-image.bb
index 3d2b7b7..c7512ed 100644
--- a/meta-phosphor/recipes-phosphor/images/obmc-phosphor-image.bb
+++ b/meta-phosphor/recipes-phosphor/images/obmc-phosphor-image.bb
@@ -6,9 +6,11 @@
 
 IMAGE_FEATURES += " \
         obmc-bmc-state-mgmt \
+        obmc-bmcweb \
         obmc-chassis-mgmt \
         obmc-chassis-state-mgmt \
         obmc-console \
+        obmc-dbus-monitor \
         obmc-devtools \
         obmc-fan-control \
         obmc-fan-mgmt \
@@ -16,6 +18,7 @@
         obmc-host-ctl \
         obmc-host-ipmi \
         obmc-host-state-mgmt \
+        obmc-ikvm \
         obmc-inventory \
         obmc-leds \
         obmc-logging-mgmt \
@@ -26,6 +29,7 @@
         obmc-software \
         obmc-system-mgmt \
         obmc-user-mgmt \
+        obmc-user-mgmt-ldap \
         ${@bb.utils.contains('DISTRO_FEATURES', 'obmc-ubi-fs', 'read-only-rootfs', '', d)} \
         ${@bb.utils.contains('DISTRO_FEATURES', 'phosphor-mmc', 'read-only-rootfs', '', d)} \
         ssh-server-dropbear \
diff --git a/meta-phosphor/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb b/meta-phosphor/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
index 1da216c..deeae79 100644
--- a/meta-phosphor/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
+++ b/meta-phosphor/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bb
@@ -6,12 +6,15 @@
 PROVIDES = "${PACKAGES}"
 PACKAGES = " \
         ${PN}-bmc-state-mgmt \
+        ${PN}-bmcweb \
         ${PN}-chassis-state-mgmt \
         ${PN}-console \
+        ${PN}-dbus-monitor \
         ${PN}-extras \
         ${PN}-devtools \
         ${PN}-fan-control \
         ${PN}-host-state-mgmt \
+        ${PN}-ikvm \
         ${PN}-inventory \
         ${PN}-leds \
         ${PN}-logging \
@@ -24,6 +27,7 @@
         ${PN}-settings \
         ${PN}-network \
         ${PN}-user-mgmt \
+        ${PN}-user-mgmt-ldap \
         "
 
 SUMMARY_${PN}-bmc-state-mgmt = "BMC state management"
@@ -32,6 +36,12 @@
         phosphor-state-manager-systemd-target-monitor \
         "
 
+SUMMARY_${PN}-bmcweb = "bmcweb support"
+RDEPENDS_${PN}-bmcweb = " \
+        bmcweb \
+        phosphor-bmcweb-cert-config \
+        "
+
 SUMMARY_${PN}-chassis-state-mgmt = "Chassis state management"
 RDEPENDS_${PN}-chassis-state-mgmt = " \
         ${VIRTUAL-RUNTIME_obmc-chassis-state-manager} \
@@ -43,15 +53,9 @@
         obmc-console \
         "
 
+# Deprecated - add new packages to an existing packagegroup or create a new one.
 SUMMARY_${PN}-extras = "Extra features"
-RDEPENDS_${PN}-extras = " \
-        bmcweb \
-        phosphor-bmcweb-cert-config \
-        phosphor-nslcd-cert-config \
-        phosphor-nslcd-authority-cert-config \
-        obmc-ikvm \
-        phosphor-dbus-monitor \
-        "
+RDEPENDS_${PN}-extras = ""
 
 SUMMARY_${PN}-devtools = "Development tools"
 RDEPENDS_${PN}-devtools = " \
@@ -63,6 +67,11 @@
         rsync \
         "
 
+SUMMARY_${PN}-dbus-monitor = "Support for dbus monitoring"
+RDEPENDS_${PN}-dbus-monitor = " \
+        phosphor-dbus-monitor \
+        "
+
 # Use the fan control package group for applications
 # implementing fan control or system fan policy only.
 # Applications that create inventory or sensors should
@@ -79,6 +88,11 @@
         ${VIRTUAL-RUNTIME_obmc-discover-system-state} \
         "
 
+SUMMARY_${PN}-ikvm = "KVM over IP support"
+RDEPENDS_${PN}-ikvm = " \
+        obmc-ikvm \
+        "
+
 SUMMARY_${PN}-inventory = "Inventory applications"
 RDEPENDS_${PN}-inventory = " \
         ${VIRTUAL-RUNTIME_obmc-inventory-manager} \
@@ -152,9 +166,16 @@
 SUMMARY_${PN}-user-mgmt = "User management applications"
 RDEPENDS_${PN}-user-mgmt = " \
         ${VIRTUAL-RUNTIME_obmc-user-mgmt} \
-        ${@bb.utils.contains('DISTRO_FEATURES', 'ldap', 'nss-pam-ldapd', '', d)} \
-        ${@bb.utils.contains('DISTRO_FEATURES', 'ldap', 'phosphor-ldap', '', d)} \
         "
 RRECOMMENDS_${PN}-user-mgmt = " \
         pam-plugin-access \
         "
+
+SUMMARY_${PN}-user-mgmt-ldap = "LDAP users and groups support"
+RDEPENDS_${PN}-user-mgmt-ldap = " \
+        ${PN}-user-mgmt \
+        nss-pam-ldapd \
+        phosphor-ldap \
+        phosphor-nslcd-cert-config \
+        phosphor-nslcd-authority-cert-config \
+        "