meta-phosphor: generate supported machine list

Add a script to generate a list of supported machines and hook it
into the `run-repotest` to ensure that it is ran as necessary when
new machines are added or removed.

Fixes openbmc/openbmc#3926.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: If33aa08451bb8a789459bf49d8d7ec9044973304
diff --git a/README.md b/README.md
index acd1884..72ce31b 100644
--- a/README.md
+++ b/README.md
@@ -53,28 +53,12 @@
 ```text
 $ . setup <machine> [build_dir]
 Target machine must be specified. Use one of:
-
-ahe50dc                 harma                   s7106
-bletchley               kudo                    s8036
-daytonax                lannister               sbp1
-dl360-g11               minerva                 spc621d8hm3
-dl360poc                mori                    starscream
-dl385-g11               mtjade                  system1
-e3c246d4i               mtmitchell              tatlin-archive-x86
-e3c256d4i               ncplite                 tiogapass
-ethanolx                nicole                  transformers
-evb-ast2500             olympus-nuvoton         vegman-n110
-evb-ast2600             p10bmc                  vegman-rx20
-evb-npcm750             palmetto                vegman-sx20
-evb-npcm845             qcom-dc-scm-v1          witherspoon
-f0b                     quanta-q71l             witherspoon-tacoma
-fp5280g3                rl300-g11               x11spi
-g220a                   romed8hm3               yosemite4
-gbs                     romulus                 yosemitev2
-genesis3                s2600wf                 zaius
-greatlakes              s6q
+...
 ```
 
+A more complete list of supported machines can be found under
+[meta-phosphor/docs](https://github.com/openbmc/openbmc/blob/master/meta-phosphor/docs/supported-machines.md).
+
 Once you know the target (e.g. romulus), source the `setup` script as follows:
 
 ```sh
@@ -170,6 +154,9 @@
 system and get some basic functionality, rough edges (such as your cooling fans
 running continuously at full throttle) are likely.
 
+See also
+["Supported Machines"](https://github.com/openbmc/openbmc/blob/master/meta-phosphor/docs/supported-machines.md).
+
 ## Features of OpenBMC
 
 ### Feature List
diff --git a/meta-phosphor/docs/supported-machines.md b/meta-phosphor/docs/supported-machines.md
new file mode 100644
index 0000000..b2ae21f
--- /dev/null
+++ b/meta-phosphor/docs/supported-machines.md
@@ -0,0 +1,97 @@
+# Supported machines
+
+The following machine product or codenames have some code which has been
+contributed to the project for support.  The specific level of functionality
+supported is unknown and has no level of warranty, promise of future
+development, or bug-fix guarantee.
+
+Systems which are actively developed and maintained by vendors are often
+covered by [Jenkins](https://jenkins.openbmc.org/job/ci-openbmc/) CI testing.
+
+## List
+
+* amd
+  * daytonax
+  * ethanolx
+* ampere
+  * mtjade
+  * mtmitchell
+* asrock
+  * e3c246d4i
+  * e3c256d4i
+  * romed8hm3
+  * spc621d8hm3
+  * x570d4u
+* bytedance
+  * g220a
+* delta
+  * ahe50dc
+* evb
+  * evb-ast2500
+  * evb-ast2600
+  * evb-npcm750
+  * evb-npcm845
+  * fvp
+* facebook
+  * bletchley
+  * catalina
+  * greatlakes
+  * harma
+  * minerva
+  * tiogapass
+  * ventura
+  * yosemite4
+  * yosemite4n
+  * yosemitev2
+* fii
+  * kudo
+  * mori
+* hpe
+  * dl360-g11
+  * dl360poc
+  * dl385-g11
+  * rl300-g11
+* ibm
+  * genesis3
+  * huygens
+  * p10bmc
+  * palmetto
+  * pstbmc
+  * romulus
+  * sbp1
+  * system1
+  * witherspoon
+  * witherspoon-tacoma
+* ieisystem
+  * fp5280g3
+  * nf5280m7
+* ingrasys
+  * zaius
+* intel
+  * s2600wf
+* inventec
+  * starscream
+  * transformers
+* qualcomm
+  * qcom-dc-scm-v1
+* quanta
+  * f0b
+  * gbs
+  * olympus-nuvoton
+  * quanta-q71l
+  * s6q
+* supermicro
+  * x11spi
+* tyan
+  * s7106
+  * s8036
+* ufispace
+  * ncplite
+* wistron
+  * lannister
+* yadro
+  * nicole
+  * tatlin-archive-x86
+  * vegman-n110
+  * vegman-rx20
+  * vegman-sx20
diff --git a/meta-phosphor/scripts/generate-machine-list b/meta-phosphor/scripts/generate-machine-list
new file mode 100755
index 0000000..df3a769
--- /dev/null
+++ b/meta-phosphor/scripts/generate-machine-list
@@ -0,0 +1,23 @@
+#!/bin/bash -e
+
+script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
+obmc_dir=${script_dir}/../../
+
+cd "$obmc_dir"
+
+cat > meta-phosphor/docs/supported-machines.md << EOF
+# Supported machines
+
+The following machine product or codenames have some code which has been
+contributed to the project for support.  The specific level of functionality
+supported is unknown and has no level of warranty, promise of future
+development, or bug-fix guarantee.
+
+Systems which are actively developed and maintained by vendors are often
+covered by [Jenkins](https://jenkins.openbmc.org/job/ci-openbmc/) CI testing.
+
+## List
+
+EOF
+
+./setup machines >> meta-phosphor/docs/supported-machines.md
diff --git a/meta-phosphor/scripts/run-repotest b/meta-phosphor/scripts/run-repotest
index dee4439..8458236 100755
--- a/meta-phosphor/scripts/run-repotest
+++ b/meta-phosphor/scripts/run-repotest
@@ -164,4 +164,10 @@
 
 done
 
+# Regenerate supported machines list.
+meta-phosphor/scripts/generate-machine-list
+if ! git --no-pager diff --exit-code ; then
+    echo "Changes to supported-machines.md necessary due to new meta-layer support."
+fi
+
 echo "Repo test passed"