1# Common code for generating Phosphor OpenBMC images.
2
3# Additional IMAGE_FEATURES available with Phosphor OpenBMC:
4#
5# - obmc-bmc-state-mgmt               - OpenBMC BMC state management
6# - obmc-bmcweb                       - OpenBMC webserver
7# - obmc-chassis-mgmt                 - OpenBMC chassis management
8# - obmc-chassis-state-mgmt           - OpenBMC chassis state management
9# - obmc-console                      - OpenBMC serial over LAN
10# - obmc-dbus-monitor                 - OpenBMC dbus monitoring
11# - obmc-debug-collector              - OpenBMC debug collector
12# - obmc-devtools                     - OpenBMC development and debugging tools
13# - obmc-fan-control                  - OpenBMC fan management
14# - obmc-fan-mgmt                     - Deprecated - use obmc-fan-control instead
15# - obmc-flash-mgmt                   - OpenBMC flash management
16# - obmc-fru-ipmi                     - OpenBMC IPMI FRU EEPROM support
17# - obmc-health-monitor               - OpenBMC health monitoring
18# - obmc-host-ctl                     - OpenBMC host control
19# - obmc-host-ipmi                    - OpenBMC host IPMI
20# - obmc-host-state-mgmt              - OpenBMC host state management
21# - obmc-ikvm                         - OpenBMC KVM over IP
22# - obmc-inventory                    - OpenBMC inventory support
23# - obmc-leds                         - OpenBMC LED support
24# - obmc-logging-mgmt                 - OpenBMC logging management
25# - obmc-remote-logging-mgmt          - OpenBMC remote logging management
26# - obmc-rng                          - OpenBMC random number generator
27# - obmc-sensors                      - OpenBMC sensor support
28# - obmc-settings-mgmt                - OpenBMC settings management
29# - obmc-software                     - OpenBMC software management
30# - obmc-system-mgmt                  - OpenBMC system management
31# - obmc-telemetry                    - OpenBMC telemetry solution
32# - obmc-user-mgmt                    - OpenBMC user management
33# - obmc-user-mgmt-ldap               - OpenBMC LDAP users
34
35inherit core-image
36inherit obmc-phosphor-utils
37
38FEATURE_PACKAGES_obmc-bmc-state-mgmt ?= "packagegroup-obmc-apps-bmc-state-mgmt"
39FEATURE_PACKAGES_obmc-bmcweb ?= "packagegroup-obmc-apps-bmcweb"
40FEATURE_PACKAGES_obmc-chassis-mgmt ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-phosphor-chassis-mgmt', 'virtual-obmc-chassis-mgmt', '', d)}"
41FEATURE_PACKAGES_obmc-chassis-state-mgmt ?= "packagegroup-obmc-apps-chassis-state-mgmt"
42FEATURE_PACKAGES_obmc-console ?= "packagegroup-obmc-apps-console"
43FEATURE_PACKAGES_obmc-dbus-monitor ?= "packagegroup-obmc-apps-dbus-monitor"
44FEATURE_PACKAGES_obmc-devtools ?= "packagegroup-obmc-apps-devtools"
45FEATURE_PACKAGES_obmc-fan-control ?= "packagegroup-obmc-apps-fan-control"
46FEATURE_PACKAGES_obmc-fan-mgmt ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-phosphor-fan-mgmt', 'virtual-obmc-fan-mgmt', '', d)}"
47FEATURE_PACKAGES_obmc-flash-mgmt ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-phosphor-flash-mgmt', 'virtual-obmc-flash-mgmt', '', d)}"
48FEATURE_PACKAGES_obmc-fru-ipmi ?= "packagegroup-obmc-apps-fru-ipmi"
49FEATURE_PACKAGES_obmc-health-monitor ?= "packagegroup-obmc-apps-health-monitor"
50FEATURE_PACKAGES_obmc-host-ctl ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-host-ctl', 'virtual-obmc-host-ctl', '', d)}"
51FEATURE_PACKAGES_obmc-host-ipmi ?= "${@bb.utils.contains('COMBINED_FEATURES', 'obmc-host-ipmi', 'virtual-obmc-host-ipmi-hw', '', d)}"
52FEATURE_PACKAGES_obmc-host-state-mgmt ?= "packagegroup-obmc-apps-host-state-mgmt"
53FEATURE_PACKAGES_obmc-ikvm ?= "packagegroup-obmc-apps-ikvm"
54FEATURE_PACKAGES_obmc-inventory ?= "packagegroup-obmc-apps-inventory"
55FEATURE_PACKAGES_obmc-leds ?= "packagegroup-obmc-apps-leds"
56FEATURE_PACKAGES_obmc-logging-mgmt ?= "packagegroup-obmc-apps-logging"
57FEATURE_PACKAGES_obmc-remote-logging-mgmt ?= "packagegroup-obmc-apps-remote-logging"
58FEATURE_PACKAGES_obmc-rng ?= "packagegroup-obmc-apps-rng"
59FEATURE_PACKAGES_obmc-net-ipmi ?= "phosphor-ipmi-net"
60FEATURE_PACKAGES_obmc-sensors ?= "packagegroup-obmc-apps-sensors"
61FEATURE_PACKAGES_obmc-software ?= "packagegroup-obmc-apps-software"
62FEATURE_PACKAGES_obmc-system-mgmt ?= "${@bb.utils.contains('DISTRO_FEATURES', 'obmc-phosphor-system-mgmt', 'virtual-obmc-system-mgmt', '', d)}"
63FEATURE_PACKAGES_obmc-debug-collector ?= "packagegroup-obmc-apps-debug-collector"
64FEATURE_PACKAGES_obmc-settings-mgmt ?= "packagegroup-obmc-apps-settings"
65FEATURE_PACKAGES_obmc-network-mgmt ?= "packagegroup-obmc-apps-network"
66FEATURE_PACKAGES_obmc-telemetry ?= "packagegroup-obmc-apps-telemetry"
67FEATURE_PACKAGES_obmc-user-mgmt ?= "packagegroup-obmc-apps-user-mgmt"
68FEATURE_PACKAGES_obmc-user-mgmt-ldap ?= "packagegroup-obmc-apps-user-mgmt-ldap"
69
70# FIXME: phosphor-net-ipmi depends on phosphor-ipmi-host !?!? and
71# cannot be built on core-qemu machines because of the dependency
72# tree under phosphor-ipmi-host
73FEATURE_PACKAGES_obmc-net-ipmi:qemuall = ""
74
75# Add new packages to be installed to a package group in
76# packagegroup-obmc-apps, not here.
77OBMC_IMAGE_BASE_INSTALL = " \
78        packagegroup-obmc-apps-extras \
79        ${OBMC_IMAGE_EXTRA_INSTALL} \
80        "
81
82OBMC_IMAGE_EXTRA_INSTALL ?= ""
83
84CORE_IMAGE_EXTRA_INSTALL += "${OBMC_IMAGE_BASE_INSTALL}"
85
86remove_etc_version() {
87        rm ${IMAGE_ROOTFS}${sysconfdir}/version
88}
89
90enable_ldap_nsswitch() {
91    sed -i 's/\(\(passwd\|group\):\s*\).*/\1files systemd ldap/' \
92        "${IMAGE_ROOTFS}${sysconfdir}/nsswitch.conf"
93    sed -i 's/\(shadow:\s*\).*/\1files ldap/' \
94        "${IMAGE_ROOTFS}${sysconfdir}/nsswitch.conf"
95}
96
97ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('IMAGE_FEATURES', 'obmc-user-mgmt-ldap', 'enable_ldap_nsswitch ;', '', d)}"
98
99