<html><body><p><font size="2">As the popularity of OpenBMC grows the project will hopefully find itself with additional pull requests to support more systems. As I did when I first started out you could easily be allured to simply copy/past the entire contents of a similar system under meta-openbmc-machines/... and call it your own. However scale that to anything greater then a few machines and the shier volume of duplicate code will become bulky and unmanageable. Yocto recognized this as an issue and has provided support to reduce. I would like to build a list of recommendations on how to add new hardware in to the OpenBMC Project.</font><br><br><br><font size="2">For hardware based on a similar design this is...</font><br><br><font size="2">Not good</font><br><font size="2">========</font><br><font size="2">meta-mfg/meta-redfish/</font><br><font size="2">meta-mfg/meta-bluefish/</font><br><font size="2">meta-mfg/meta-yellowfish/</font><br><font size="2">meta-mfg/meta-greenfish/</font><br><br><br><font size="2">Good</font><br><font size="2">========</font><br><font size="2">meta-mfg/meta-fish/</font><br><font size="2"><br></font><br><font size="2">So how can you do that? With a single variable in your local.conf... MACHINE. You change the MACHINE variable per system type but let default and use the base platform for common items. </font><br><br><font size="2"> MACHINE = "bluefish"</font><br><br><font size="2">A bbappend that are specific to the bluefish system you append the _bluefish</font><br><br><font size="2"> FILESEXTRAPATHS_prepend_bluefish := "${THISDIR}/${PN}:"</font><br><font size="2"> SRC_URI_append_bluefish = " </font><a href="file://0001-board-aspeed-Add-reset_phy-for-Zaius.patchch/"><font size="2">file://0001-blueworms.patch"</font></a><font size="2"> </font><br><br><font size="2">A bbappend that make a common change to all of the fish type. This means anyone adding the meta-fish layer gets this bbappend and the rainbowworms. </font><br><br><font size="2"> FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"</font><br><font size="2"> SRC_URI_append = " </font><a href="file://0001-board-aspeed-Add-reset_phy-for-Zaius.patchch/"><font size="2">file://0001-rainbowworms.patch"</font></a><font size="2"> </font><br><br><font size="2">Machine and default are all good until If you use a bluefish system but you have a company policy use the MACHINEOVERRIDES variable</font><br><br><font size="2"> FILESEXTRAPATHS_prepend_orgXfis := "${THISDIR}/${PN}:"</font><br><font size="2"> SRC_URI_append_orgXfis = " </font><a href="file://0001-board-aspeed-Add-reset_phy-for-Zaius.patchch/"><font size="2">file://0001-blueXworms.patch"</font></a><font size="2"> </font><br><br><font size="2">Note yocto matches and runs every hit. That means if you add a default, machine and machine override in the same bbappend, you get all three files. So use with caution...</font><br><br><font size="2"> FILESEXTRAPATHS_prepend_orgXfis := "${THISDIR}/${PN}:"</font><br><font size="2"> SRC_URI_append_orgXfis = " </font><a href="file://0001-board-aspeed-Add-reset_phy-for-Zaius.patchch/"><font size="2">file://0001-blueXworms.patch"</font></a><font size="2"> </font><br><font size="2"> SRC_URI_append = " </font><a href="file://0001-board-aspeed-Add-reset_phy-for-Zaius.patchch/"><font size="2">file://0001-rainbowworms.patch"</font></a><font size="2"> </font><br><font size="2"> SRC_URI_append_bluefish = " </font><a href="file://0001-board-aspeed-Add-reset_phy-for-Zaius.patchch/"><font size="2">file://0001-blueworms.patch"</font></a><font size="2"> </font><br><font size="2"> </font><br><font size="2"> $ ls</font><br><font size="2" color="#0000FF"> 0001-blueXworms.patch</font><br><font size="2" color="#0000FF"> 0001-rainbowworms.patch</font><font size="2"> </font><br><font size="2" color="#0000FF"> 0001-blueworms.patch</font><font size="2"> </font><br><br><br><font size="2">TBD.. need to add example of something being added, replaced and kernel device tree needs.</font><br><br><br><font size="2">Thoughts?</font><br><br><br><br><font size="2">Chris Austen<br></font><BR>
</body></html>