update meta-supermicro layer for new bitbake

Signed-off-by: Ryan Sie <ryans@supermicro.com.tw>
Change-Id: I05c85576fad2dae9f9a3e90afdac7565d9cefcf4
diff --git a/meta-supermicro/conf/layer.conf b/meta-supermicro/conf/layer.conf
index d3943d3..a5142e2 100644
--- a/meta-supermicro/conf/layer.conf
+++ b/meta-supermicro/conf/layer.conf
@@ -5,7 +5,9 @@
 BBFILES += "${LAYERDIR}/meta-common/recipes-*/*/*.bb \
             ${LAYERDIR}/meta-common/recipes-*/*/*.bbappend"
 
-BBFILE_COLLECTIONS += "supermicro-layer"
-BBFILE_PATTERN_supermicro-layer := "^${LAYERDIR}/"
-LAYERSERIES_COMPAT_supermicro-layer := "hardknott"
+BBFILE_COLLECTIONS += "supermicro"
+BBFILE_PATTERN_supermicro = "^${LAYERDIR}/"
+LAYERVERSION_supermicro = "1"
+LAYERSERIES_COMPAT_supermicro = "hardknott honister"
+LAYERDEPENDS_supermicro = "phosphor-layer"
 
diff --git a/meta-supermicro/conf/machine/include/supermicro.inc b/meta-supermicro/conf/machine/include/supermicro.inc
index f7f37be..bb26af8 100644
--- a/meta-supermicro/conf/machine/include/supermicro.inc
+++ b/meta-supermicro/conf/machine/include/supermicro.inc
@@ -1,22 +1,22 @@
 OBMC_MACHINE_FEATURES += "\
         obmc-bmc-state-mgmt \
         obmc-chassis-state-mgmt \
-        obmc-host-ipmi \
         obmc-host-state-mgmt \
+        obmc-host-ipmi \
+        obmc-host-ctl \
         obmc-phosphor-chassis-mgmt \
         obmc-phosphor-fan-mgmt \
         obmc-phosphor-flash-mgmt \
         "
 
 VIRTUAL-RUNTIME_skeleton_workbook = "${MACHINE}-config"
-VIRTUAL-RUNTIME_obmc-host-state-manager ?= "x86-power-control"
-VIRTUAL-RUNTIME_obmc-chassis-state-manager ?= "x86-power-control"
 
 PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-supermicro-apps"
 PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-supermicro-apps"
 PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-supermicro-apps"
-PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw ?= "phosphor-ipmi-kcs"
-PREFERRED_PROVIDER_virtual/obmc-inventory-data ?= "${VIRTUAL-RUNTIME_skeleton_workbook}"
 PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-supermicro-apps"
+PREFERRED_PROVIDER_virtual/obmc-host-ctl ?= "obmc-op-control-host"
+PREFERRED_PROVIDER_virtual/obmc-inventory-data ?= "${VIRTUAL-RUNTIME_skeleton_workbook}"
+PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw ?= "phosphor-ipmi-kcs"
 
 OVERRIDES .= ":supermicro"
diff --git a/meta-supermicro/meta-common/recipes-extended/pam/libpam/pam.d/common-password b/meta-supermicro/meta-common/recipes-extended/pam/libpam/pam.d/common-password
new file mode 100644
index 0000000..5a42680
--- /dev/null
+++ b/meta-supermicro/meta-common/recipes-extended/pam/libpam/pam.d/common-password
@@ -0,0 +1,30 @@
+#
+# /etc/pam.d/common-password - password-related modules common to all services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of modules that define the services to be
+# used to change user passwords.  The default is pam_unix.
+
+# Explanation of pam_unix options:
+#
+# The "sha512" option enables salted SHA512 passwords.  Without this option,
+# the default is Unix crypt.  Prior releases used the option "md5".
+#
+# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
+# login.defs.
+#
+# See the pam_unix manpage for other options.
+
+# here are the per-package modules (the "Primary" block)
+password	[success=ok default=die]	pam_cracklib.so debug enforce_for_root reject_username minlen=9 difok=0 lcredit=-1 ocredit=-1 dcredit=-1 ucredit=-1 maxrepeat=3
+password	[success=ok default=die]	pam_ipmicheck.so spec_grp_name=ipmi use_authtok
+password	[success=ok ignore=ignore default=die]	pam_pwhistory.so debug enforce_for_root remember=0 use_authtok
+password	[success=ok default=die]	pam_unix.so sha512 use_authtok
+password	[success=1 default=die] 	pam_ipmisave.so spec_grp_name=ipmi spec_pass_file=/etc/ipmi_pass key_file=/etc/key_file
+# here's the fallback if no module succeeds
+password	requisite			pam_deny.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+password	required			pam_permit.so
+# and here are more per-package modules (the "Additional" block)
diff --git a/meta-supermicro/meta-common/recipes-extended/pam/libpam_%.bbappend b/meta-supermicro/meta-common/recipes-extended/pam/libpam_%.bbappend
new file mode 100644
index 0000000..20fe5e4
--- /dev/null
+++ b/meta-supermicro/meta-common/recipes-extended/pam/libpam_%.bbappend
@@ -0,0 +1,4 @@
+FILESEXTRAPATHS:append := "${THISDIR}/${PN}:"
+
+SRC_URI += " file://pam.d/common-password \
+            "
diff --git a/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rotate-event-logs.service b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rotate-event-logs.service
new file mode 100644
index 0000000..8f3a2bc
--- /dev/null
+++ b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rotate-event-logs.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Rotate the event logs
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/rotate-event-logs.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rotate-event-logs.sh b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rotate-event-logs.sh
new file mode 100644
index 0000000..5a8c5cc
--- /dev/null
+++ b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rotate-event-logs.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+while true; do
+    sleep 60
+    /usr/sbin/logrotate /etc/logrotate.d/logrotate.rsyslog
+    ec=$?
+    if [ $ec -ne 0 ] ; then
+        echo "logrotate failed ($ec)"
+    fi
+done
diff --git a/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog-override.conf b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog-override.conf
new file mode 100644
index 0000000..14bcc07
--- /dev/null
+++ b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog-override.conf
@@ -0,0 +1,2 @@
+[Service]
+ExecReload=/bin/kill -HUP $MAINPID
diff --git a/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.conf b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.conf
new file mode 100644
index 0000000..46a287e
--- /dev/null
+++ b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.conf
@@ -0,0 +1,79 @@
+# if you experience problems, check
+# http://www.rsyslog.com/troubleshoot for assistance
+
+# rsyslog v3: load input modules
+# If you do not load inputs, nothing happens!
+# You may need to set the module load path if modules are not found.
+#
+# Ported from debian's sysklogd.conf
+
+# Journal-style logging
+# Limit to no more than 2000 entries in one minute and enable the
+# journal workaround to avoid duplicate entries
+module(load="imjournal" StateFile="/var/log/state"
+                        RateLimit.Interval="60"
+                        RateLimit.Burst="2000")
+
+# Template for IPMI SEL messages
+# "<timestamp> <ID>,<Type>,<EventData>,[<Generator ID>,<Path>,<Direction>]"
+template(name="IPMISELTemplate" type="list") {
+    property(name="timereported" dateFormat="rfc3339")
+    constant(value=" ")
+    property(name="$!IPMI_SEL_RECORD_ID")
+    constant(value=",")
+    property(name="$!IPMI_SEL_RECORD_TYPE")
+    constant(value=",")
+    property(name="$!IPMI_SEL_DATA")
+    constant(value=",")
+    property(name="$!IPMI_SEL_GENERATOR_ID")
+    constant(value=",")
+    property(name="$!IPMI_SEL_SENSOR_PATH")
+    constant(value=",")
+    property(name="$!IPMI_SEL_EVENT_DIR")
+    constant(value="\n")
+}
+
+# Template for Redfish messages
+# "<timestamp> <MessageId>,<MessageArgs>"
+template(name="RedfishTemplate" type="list") {
+    property(name="timereported" dateFormat="rfc3339")
+    constant(value=" ")
+    property(name="$!REDFISH_MESSAGE_ID")
+    constant(value=",")
+    property(name="$!REDFISH_MESSAGE_ARGS")
+    constant(value="\n")
+}
+
+# Template for Application Crashes
+# "<timestamp> <MessageId>,<MessageArgs>"
+template(name="CrashTemplate" type="list") {
+    property(name="timereported" dateFormat="rfc3339")
+    constant(value=" ")
+    constant(value="OpenBMC.0.1.ServiceFailure")
+    constant(value=",")
+    property(name="$!UNIT")
+    constant(value="\n")
+}
+
+
+# If the journal entry has the IPMI SEL MESSAGE_ID, save as IPMI SEL
+# The MESSAGE_ID string is generated using journalctl and must match the
+# MESSAGE_ID used in IPMI to correctly find the SEL entries.
+if ($!MESSAGE_ID == "b370836ccf2f4850ac5bee185b77893a") then {
+   action(type="omfile" file="/var/log/ipmi_sel" template="IPMISELTemplate")
+}
+
+# If the journal entry has a Redfish MessageId, save as a Redfish event
+if ($!REDFISH_MESSAGE_ID != "") then {
+   action(type="omfile" file="/var/log/redfish" template="RedfishTemplate")
+}
+
+# If the journal entry has a Exit Code, save as a Redfish event
+if ($!EXIT_STATUS != "" and $!EXIT_STATUS != "0") then {
+   action(type="omfile" file="/var/log/redfish" template="CrashTemplate")
+}
+
+#
+# Include all config files in /etc/rsyslog.d/
+#
+$IncludeConfig /etc/rsyslog.d/*.conf
diff --git a/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
new file mode 100644
index 0000000..a6ba28d
--- /dev/null
+++ b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
@@ -0,0 +1,22 @@
+# /etc/logrotate.d/rsyslog - Ported from Debian
+
+# Keep up to four 64k files for ipmi_sel (256k total)
+/var/log/ipmi_sel
+{
+    rotate 3
+    size 64k
+    missingok
+    postrotate
+        systemctl reload rsyslog 2> /dev/null || true
+    endscript
+}
+# Keep up to four 64k files for redfish (256k total)
+/var/log/redfish
+{
+    rotate 3
+    size 64k
+    missingok
+    postrotate
+        systemctl reload rsyslog 2> /dev/null || true
+    endscript
+}
diff --git a/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog_%.bbappend b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog_%.bbappend
new file mode 100644
index 0000000..034ae3c
--- /dev/null
+++ b/meta-supermicro/meta-common/recipes-extended/rsyslog/rsyslog_%.bbappend
@@ -0,0 +1,24 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI += "file://rsyslog.conf \
+            file://rsyslog.logrotate \
+            file://rotate-event-logs.service \
+            file://rotate-event-logs.sh \
+            file://rsyslog-override.conf \
+           "
+
+FILES:${PN} += "${systemd_system_unitdir}/rsyslog.service.d/rsyslog-override.conf"
+
+PACKAGECONFIG:append = " imjournal"
+
+do_install:append() {
+        install -m 0644 ${WORKDIR}/rotate-event-logs.service ${D}${systemd_system_unitdir}
+        install -d ${D}${systemd_system_unitdir}/rsyslog.service.d
+        install -m 0644 ${WORKDIR}/rsyslog-override.conf \
+                        ${D}${systemd_system_unitdir}/rsyslog.service.d/rsyslog-override.conf
+        install -d ${D}${bindir}
+        install -m 0755 ${WORKDIR}/rotate-event-logs.sh ${D}/${bindir}/rotate-event-logs.sh
+        rm ${D}${sysconfdir}/rsyslog.d/imjournal.conf
+}
+
+SYSTEMD_SERVICE:${PN} += " rotate-event-logs.service"
diff --git a/meta-supermicro/meta-common/recipes-kernel/linux/linux-aspeed/smci.cfg b/meta-supermicro/meta-common/recipes-kernel/linux/linux-aspeed/smci.cfg
deleted file mode 100644
index d566e2d..0000000
--- a/meta-supermicro/meta-common/recipes-kernel/linux/linux-aspeed/smci.cfg
+++ /dev/null
@@ -1,83 +0,0 @@
-CONFIG_BLK_DEV_RAM=y
-CONFIG_HWMON=y
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-CONFIG_IIO=y
-CONFIG_SENSORS_IIO_HWMON=y
-CONFIG_ASPEED_ADC=y
-CONFIG_SGPIO_ASPEED=y
-CONFIG_CRC8=y
-CONFIG_PECI=y
-CONFIG_PECI_CHARDEV=y
-CONFIG_PECI_ASPEED=y
-CONFIG_SENSORS_PECI_CPUTEMP=y
-CONFIG_SENSORS_PECI_DIMMTEMP=y
-CONFIG_SENSORS_PECI_CPUPOWER=y
-CONFIG_SENSORS_PECI_DIMMPOWER=y
-CONFIG_SENSORS_PECI_PLATFORMPOWER=y
-CONFIG_CONFIGFS_FS=y
-CONFIG_BLK_DEV_RAM_SIZE=49152
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01
-CONFIG_MAGIC_SYSRQ_SERIAL=y
-CONFIG_ASPEED_ESPI_SLAVE=y
-CONFIG_ASPEED_KCS_IPMI_BMC=y
-CONFIG_I2C_SLAVE=y
-CONFIG_I2C_SLAVE_MQUEUE=y
-CONFIG_I2C_SLAVE_MQUEUE_MESSAGE_SIZE=256
-CONFIG_I2C_SLAVE_MQUEUE_QUEUE_SIZE=32
-CONFIG_ASPEED_BT_IPMI_BMC=n
-CONFIG_ASPEED_LPC_CTRL=n
-CONFIG_ASPEED_LPC_MBOX=y
-CONFIG_ASPEED_LPC_SIO=y
-CONFIG_JTAG=y
-CONFIG_JTAG_ASPEED=y
-CONFIG_FRAME_VECTOR=y
-CONFIG_MEDIA_SUPPORT=y
-CONFIG_MEDIA_CAMERA_SUPPORT=y
-CONFIG_VIDEO_DEV=y
-CONFIG_VIDEO_V4L2=y
-CONFIG_V4L_PLATFORM_DRIVERS=y
-CONFIG_VIDEO_ASPEED=y
-CONFIG_VIDEOBUF2_CORE=y
-CONFIG_VIDEOBUF2_V4L2=y
-CONFIG_VIDEOBUF2_MEMOPS=y
-CONFIG_VIDEOBUF2_DMA_CONTIG=y
-CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
-CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
-CONFIG_USB_LIBCOMPOSITE=y
-CONFIG_USB_F_HID=y
-CONFIG_USB_GADGET=y
-CONFIG_U_SERIAL_CONSOLE=y
-CONFIG_USB_ASPEED_VHUB=y
-CONFIG_USB_CONFIGFS=y
-CONFIG_USB_CONFIGFS_F_FS=y
-CONFIG_USB_CONFIGFS_F_HID=y
-CONFIG_ASPEED_UART_ROUTING=y
-CONFIG_ASPEED_VGA_SHAREDMEM=y
-CONFIG_PWM=y
-CONFIG_PWM_FTTMR010=y
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_PWM_BEEPER=y
-CONFIG_VFAT_FS=y
-CONFIG_NLS=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_15=y
-CONFIG_NLS_UTF8=y
-CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_CIFS=y
-CONFIG_CIFS_XATTR=y
-CONFIG_PSTORE=y
-CONFIG_PSTORE_ZLIB_COMPRESS=y
-CONFIG_PSTORE_RAM=y
-CONFIG_FSI=n
-CONFIG_FSI_MASTER_HUB=n
-CONFIG_FSI_MASTER_ASPEED=n
-CONFIG_FSI_SCOM=n
-CONFIG_FSI_SBEFIFO=n
-CONFIG_FSI_OCC=n
-CONFIG_ASPEED_P2A_CTRL=n
-CONFIG_IPMB_DEVICE_INTERFACE=y
diff --git a/meta-supermicro/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend b/meta-supermicro/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend
deleted file mode 100644
index 540aadc..0000000
--- a/meta-supermicro/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend
+++ /dev/null
@@ -1,3 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI += " file://smci.cfg"
diff --git a/meta-supermicro/meta-common/recipes-supermicro/packagegroups/packagegroup-supermicro-apps.bb b/meta-supermicro/meta-common/recipes-supermicro/packagegroups/packagegroup-supermicro-apps.bb
index 2373cec..4549bf7 100644
--- a/meta-supermicro/meta-common/recipes-supermicro/packagegroups/packagegroup-supermicro-apps.bb
+++ b/meta-supermicro/meta-common/recipes-supermicro/packagegroups/packagegroup-supermicro-apps.bb
@@ -16,28 +16,29 @@
 PROVIDES += "virtual/obmc-flash-mgmt"
 PROVIDES += "virtual/obmc-system-mgmt"
 
-RPROVIDES_${PN}-chassis += "virtual-obmc-chassis-mgmt"
-RPROVIDES_${PN}-fans += "virtual-obmc-fan-mgmt"
-RPROVIDES_${PN}-flash += "virtual-obmc-flash-mgmt"
-RPROVIDES_${PN}-system += "virtual-obmc-system-mgmt"
+RPROVIDES:${PN}-chassis += "virtual-obmc-chassis-mgmt"
+RPROVIDES:${PN}-fans += "virtual-obmc-fan-mgmt"
+RPROVIDES:${PN}-flash += "virtual-obmc-flash-mgmt"
+RPROVIDES:${PN}-system += "virtual-obmc-system-mgmt"
 
-SUMMARY_${PN}-chassis = "Supermicro Chassis"
-RDEPENDS_${PN}-chassis = " \
+SUMMARY:${PN}-chassis = "Supermicro Chassis"
+RDEPENDS:${PN}-chassis = " \
         x86-power-control \
+        obmc-host-failure-reboots \
         "
 
-SUMMARY_${PN}-fans = "Supermicro Fans"
-RDEPENDS_${PN}-fans = " \
+SUMMARY:${PN}-fans = "Supermicro Fans"
+RDEPENDS:${PN}-fans = " \
         phosphor-pid-control \
         "
 
-SUMMARY_${PN}-flash = "Supermicro Flash"
-RDEPENDS_${PN}-flash = " \
-        phosphor-software-manager \
+SUMMARY:${PN}-flash = "Supermicro Flash"
+RDEPENDS:${PN}-flash = " \
+        obmc-control-bmc \
         "
 
-SUMMARY_${PN}-system = "Supermicro System"
-RDEPENDS_${PN}-system = " \
+SUMMARY:${PN}-system = "Supermicro System"
+RDEPENDS:${PN}-system = " \
         bmcweb \
         entity-manager \
         dbus-sensors \
diff --git a/meta-supermicro/meta-x11spi/conf/layer.conf b/meta-supermicro/meta-x11spi/conf/layer.conf
index 83c64e4..da61bc1 100644
--- a/meta-supermicro/meta-x11spi/conf/layer.conf
+++ b/meta-supermicro/meta-x11spi/conf/layer.conf
@@ -8,4 +8,6 @@
 BBFILE_COLLECTIONS += "x11spi"
 BBFILE_PATTERN_x11spi = ""
 
-LAYERSERIES_COMPAT_x11spi = "hardknott"
+BBFILE_PRIORITY_x11spi = "5"
+LAYERSERIES_COMPAT_x11spi = "hardknott honister"
+
diff --git a/meta-supermicro/meta-x11spi/conf/local.conf.sample b/meta-supermicro/meta-x11spi/conf/local.conf.sample
index 2e57e47..fc8db0a9 100644
--- a/meta-supermicro/meta-x11spi/conf/local.conf.sample
+++ b/meta-supermicro/meta-x11spi/conf/local.conf.sample
@@ -2,7 +2,9 @@
 # This file is your local configuration file and is where all local user settings
 # are placed. The comments in this file give some guide to the options a new user
 # to the system might want to change but pretty much any configuration option can
-# be set in this file.
+# be set in this file. More adventurous users can look at local.conf.extended
+# which contains other examples of configuration which can be placed in this file
+# but new users likely won't need any of them initially.
 #
 # Lines starting with the '#' character are commented out and in some cases the
 # default values are provided as comments to show people example syntax. Enabling
@@ -85,16 +87,14 @@
 PACKAGE_CLASSES ?= "package_ipk"
 
 #
-# SDK/ADT target architecture
+# SDK target architecture
 #
-# This variable specifies the architecture to build SDK/ADT items for and means
+# This variable specifies the architecture to build SDK items for and means
 # you can build the SDK packages for architectures other than the machine you are
 # running the build on (i.e. building i686 packages on an x86_64 host).
-# Supported values are i686 and x86_64
+# Supported values are i686, x86_64, aarch64
 #SDKMACHINE ?= "i686"
 
-SANITY_TESTED_DISTROS_append ?= " *"
-
 #
 # Extra image configuration defaults
 #
@@ -103,6 +103,8 @@
 # variable can contain the following options:
 #  "dbg-pkgs"       - add -dbg packages for all installed packages
 #                     (adds symbol information for debugging/profiling)
+#  "src-pkgs"       - add -src packages for all installed packages
+#                     (adds source code for debugging)
 #  "dev-pkgs"       - add -dev packages for all installed packages
 #                     (useful if you want to develop against libs in the image)
 #  "ptest-pkgs"     - add -ptest packages for all ptest-enabled packages
@@ -110,14 +112,14 @@
 #  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
 #  "tools-debug"    - add debugging tools (gdb, strace)
 #  "eclipse-debug"  - add Eclipse remote debugging support
-#  "tools-profile"  - add profiling tools (oprofile, exmap, lttng, valgrind)
+#  "tools-profile"  - add profiling tools (oprofile, lttng, valgrind)
 #  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
 #  "debug-tweaks"   - make an image suitable for development
 #                     e.g. ssh root access has a blank password
 # There are other application targets that can be used here too, see
 # meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
 # We default to enabling the debugging tweaks.
-EXTRA_IMAGE_FEATURES = "debug-tweaks"
+EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
 
 #
 # Additional image features
@@ -126,20 +128,18 @@
 # enable extra features. Some available options which can be included in this variable
 # are:
 #   - 'buildstats' collect build statistics
-#   - 'image-prelink' in order to prelink the filesystem image
-#   - 'image-swab' to perform host system intrusion detection
-# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
-# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
-USER_CLASSES ?= "buildstats image-prelink"
+USER_CLASSES ?= "buildstats"
 
 #
 # Runtime testing of images
 #
 # The build system can test booting virtual machine images under qemu (an emulator)
-# after any root filesystems are created and run tests against those images. To
-# enable this uncomment this line. See classes/testimage(-auto).bbclass for
-# further details.
-#TEST_IMAGE = "1"
+# after any root filesystems are created and run tests against those images. It can also
+# run tests against any SDK that are built. To enable this uncomment these lines.
+# See classes/test{image,sdk}.bbclass for further details.
+#IMAGE_CLASSES += "testimage testsdk"
+#TESTIMAGE_AUTO_qemuall = "1"
+
 #
 # Interactive shell configuration
 #
@@ -164,12 +164,12 @@
 #
 # Monitor the disk space during the build. If there is less that 1GB of space or less
 # than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
-# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
+# shutdown the build. If there is less than 100MB or 1K inodes, perform a hard abort
 # of the build. The reason for this is that running completely out of space can corrupt
 # files and damages the build in ways which may not be easily recoverable.
 # It's necessary to monitor /tmp, if there is no space left the build will fail
 # with very exotic errors.
-BB_DISKMON_DIRS = "\
+BB_DISKMON_DIRS ??= "\
     STOPTASKS,${TMPDIR},1G,100K \
     STOPTASKS,${DL_DIR},1G,100K \
     STOPTASKS,${SSTATE_DIR},1G,100K \
@@ -182,7 +182,7 @@
 #
 # Shared-state files from other locations
 #
-# As mentioned above, shared state files are prebuilt cache data objects which can
+# As mentioned above, shared state files are prebuilt cache data objects which can be
 # used to accelerate build time. This variable can be used to configure the system
 # to search other mirror locations for these objects before it builds the data itself.
 #
@@ -197,22 +197,57 @@
 #file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
 #file://.* file:///some/local/dir/sstate/PATH"
 
+#
+# Yocto Project SState Mirror
+#
+# The Yocto Project has prebuilt artefacts available for its releases, you can enable
+# use of these by uncommenting the following line. This will mean the build uses
+# the network to check for artefacts at the start of builds, which does slow it down
+# equally, it will also speed up the builds by not having to build things if they are
+# present in the cache. It assumes you can download something faster than you can build it
+# which will depend on your network.
+#
+#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH"
 
 #
 # Qemu configuration
 #
-# By default qemu will build with a builtin VNC server where graphical output can be
-# seen. The two lines below enable the SDL backend too. This assumes there is a
-# libsdl library available on your build system.
-#PACKAGECONFIG_append_pn-qemu-native = " sdl"
-#PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
-#ASSUME_PROVIDED += "libsdl-native"
+# By default native qemu will build with a builtin VNC server where graphical output can be
+# seen. The line below enables the SDL UI frontend too.
+PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
+# By default libsdl2-native will be built, if you want to use your host's libSDL instead of 
+# the minimal libsdl built by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
+#ASSUME_PROVIDED += "libsdl2-native"
 
+# You can also enable the Gtk UI frontend, which takes somewhat longer to build, but adds
+# a handy set of menus for controlling the emulator.
+#PACKAGECONFIG:append:pn-qemu-system-native = " gtk+"
+
+#
+# Hash Equivalence
+#
+# Enable support for automatically running a local hash equivalence server and
+# instruct bitbake to use a hash equivalence aware signature generator. Hash
+# equivalence improves reuse of sstate by detecting when a given sstate
+# artifact can be reused as equivalent, even if the current task hash doesn't
+# match the one that generated the artifact.
+#
+# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format
+#
+#BB_HASHSERVE = "auto"
+#BB_SIGNATURE_HANDLER = "OEEquivHash"
+
+#
+# Memory Resident Bitbake
+#
+# Bitbake's server component can stay in memory after the UI for the current command
+# has completed. This means subsequent commands can run faster since there is no need
+# for bitbake to reload cache files and so on. Number is in seconds, after which the
+# server will shut down.
+#
+#BB_SERVER_TIMEOUT = "60"
 
 # CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
 # track the version of this file when it was generated. This can safely be ignored if
 # this doesn't mean anything to you.
-CONF_VERSION = "1"
-
-# Set the root password to '0penBmc'
-# Defaults from meta-phosphor/conf/distro/include/phosphor-defaults.inc
+CONF_VERSION = "2"
diff --git a/meta-supermicro/meta-x11spi/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json b/meta-supermicro/meta-x11spi/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json
new file mode 100644
index 0000000..de7352b
--- /dev/null
+++ b/meta-supermicro/meta-x11spi/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json
@@ -0,0 +1,42 @@
+{
+    "gpio_configs": {
+
+        "power_config": {
+            "power_good_in": "PGOOD",
+            "power_up_outs": [
+                {"name": "POWER_UP_PIN", "polarity": true}
+            ],
+            "reset_outs": [
+                {"name": "RESET_OUT", "polarity": false}
+            ]
+        }
+    },
+
+    "gpio_definitions": [
+        {
+            "name": "PGOOD",
+            "pin": "AA0",
+            "direction": "in"
+        },
+        {
+            "name": "POWER_BUTTON",
+            "pin": "AA1",
+            "direction": "both"
+        },
+        {
+            "name": "POWER_UP_PIN",
+            "pin": "E2",
+            "direction": "out"
+        },
+        {
+            "name": "RESET_OUT",
+            "pin": "E3",
+            "direction": "out"
+        },
+        {
+            "name": "ID_BUTTON",
+            "pin": "AA5",
+            "direction": "both"
+        }
+    ]
+}
diff --git a/meta-supermicro/meta-x11spi/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend b/meta-supermicro/meta-x11spi/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend
new file mode 100644
index 0000000..18a6314
--- /dev/null
+++ b/meta-supermicro/meta-x11spi/recipes-phosphor/skeleton/obmc-libobmc-intf_%.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS:prepend:x11spi := "${THISDIR}/${PN}:"