meson: generate configurations list
To avoid manually listing all the configuration files, use a script to
make a list of them.
There is a tradeoff when running a command to get the filenames, as it
may not regenerate when file is added/removed [1].
So the list can still be kept as source, but generated in its own
separate file.
References:
[1] https://mesonbuild.com/FAQ.html#but-i-really-want-to-use-wildcards
Change-Id: I760486bafe94fce6485dfb7627946d0a77fdd322
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
diff --git a/CONFIG_FORMAT.md b/CONFIG_FORMAT.md
index 15df5ee..96b61f2 100644
--- a/CONFIG_FORMAT.md
+++ b/CONFIG_FORMAT.md
@@ -109,6 +109,11 @@
If you're just getting started and your goal is to add sensors dynamically,
check out [My First Sensors](docs/my_first_sensors.md)
+## When adding/moving/removing a configuration file
+
+Please run `scripts/generate_config_list.sh` from the root of the repository so
+that configuration files are correctly referenced by meson.
+
## Configuration schema
The config schema is documented in [README.md](schemas/README.md)
diff --git a/configurations/meson.build b/configurations/meson.build
new file mode 100644
index 0000000..1294696
--- /dev/null
+++ b/configurations/meson.build
@@ -0,0 +1,179 @@
+# This file is auto-generated. Do not edit manually.
+# File content generated with generate_config_list.sh.
+configs = [
+ '1ux16_riser.json',
+ '2ux8_riser.json',
+ '3ypower_vast2112_psu.json',
+ '8x25_hsbp.json',
+ 'a2ul16riser.json',
+ 'a2ux8x4riser.json',
+ 'acbel_r1ca2122a_psu.json',
+ 'acbell_rica_psu.json',
+ 'ahw1um2riser.json',
+ 'aspower_u1a-d10550_psu.json',
+ 'aspower_u1a-d10800_psu.json',
+ 'aspower_u1a-d11200_psu.json',
+ 'aspower_u1a-d11600_psu.json',
+ 'aspower_u1d-d10800_psu.json',
+ 'asrock_c3_medium_x86.json',
+ 'asrock_e3c246d4i.json',
+ 'asrock_e3c256d4i.json',
+ 'asrock_m3_small_x86.json',
+ 'asrock_n3_xlarge_x86.json',
+ 'asrock_romed8hm3.json',
+ 'asrock_spc621d8hm3.json',
+ 'axx1p100hssi_aic.json',
+ 'axx2prthdhd.json',
+ 'bellavista.json',
+ 'blueridge_1s4u_chassis.json',
+ 'blueridge_2u_chassis.json',
+ 'blueridge_4u_chassis.json',
+ 'blyth.json',
+ 'bnp_baseboard.json',
+ 'bonnell.json',
+ 'brcm_100g_1p_ocp_mezz.json',
+ 'brcm_200g_1p_ocp_mezz.json',
+ 'compuware_cdr_9011_3m1_psu.json',
+ 'cx7_ocp.json',
+ 'delta_awf2dc3200w_psu.json',
+ 'delta_dps-1600ab_psu.json',
+ 'delta_dps-2000ab_psu.json',
+ 'delta_dps-750xb_psu.json',
+ 'everest.json',
+ 'f1u12x25_hsbp.json',
+ 'f1u4x25_hsbp.json',
+ 'f2u12x35_hsbp.json',
+ 'f2u8x25_hsbp.json',
+ 'flextronics_s-1100adu00-201_psu.json',
+ 'fp5280g3_chassis.json',
+ 'fp5280g3_fanboard.json',
+ 'fuji.json',
+ 'genesis3_baseboard.json',
+ 'genesis3_chassis.json',
+ 'genesis3_psu.json',
+ 'gospower_g1136-1300wna_psu.json',
+ 'ibm_tacoma_rack_controller.json',
+ 'ingraham.json',
+ 'intel_front_panel.json',
+ 'kudo_bmc.json',
+ 'kudo_motherboard.json',
+ 'meta/bletchley_baseboard.json',
+ 'meta/bletchley_chassis.json',
+ 'meta/bletchley_frontpanel.json',
+ 'meta/bmc_storage_module.json',
+ 'meta/catalina_fio.json',
+ 'meta/catalina_hdd.json',
+ 'meta/catalina_hdd_nvme.json',
+ 'meta/catalina_osfp.json',
+ 'meta/catalina_pdb.json',
+ 'meta/catalina_scm.json',
+ 'meta/fbtp.json',
+ 'meta/fbyv2.json',
+ 'meta/fbyv35.json',
+ 'meta/fbyv35_nic_mellanox.json',
+ 'meta/greatlakes.json',
+ 'meta/greatlakes_nic_mellanox.json',
+ 'meta/harma_bsm.json',
+ 'meta/harma_fanboard.json',
+ 'meta/harma_mb.json',
+ 'meta/harma_mb_vr_infineon.json',
+ 'meta/harma_scm.json',
+ 'meta/minerva_cmm.json',
+ 'meta/minerva_cmm_bsm.json',
+ 'meta/minerva_cmm_hsc_infineon.json',
+ 'meta/minerva_cmm_scm.json',
+ 'meta/minerva_fanboard.json',
+ 'meta/minerva_pdb.json',
+ 'meta/minerva_pdb_hsc_xdp.json',
+ 'meta/minerva_pttv.json',
+ 'meta/minerva_sitv.json',
+ 'meta/terminus_2x100g_nic_tsff.json',
+ 'meta/twinlake.json',
+ 'meta/ventura_fanboard.json',
+ 'meta/ventura_ioboard.json',
+ 'meta/ventura_ledboard.json',
+ 'meta/ventura_rmc.json',
+ 'meta/ventura_scm.json',
+ 'meta/yosemite4.json',
+ 'meta/yosemite4_chassis.json',
+ 'meta/yosemite4_cpu.json',
+ 'meta/yosemite4_fanboard_fsc_max_adc_ti_led_nxp_efuse_max.json',
+ 'meta/yosemite4_fanboard_fsc_max_adc_ti_led_nxp_efuse_mps.json',
+ 'meta/yosemite4_fanboard_fsc_max_adc_ti_led_ons_efuse_mps.json',
+ 'meta/yosemite4_fanboard_fsc_nct_adc_max_led_ons_efuse_max.json',
+ 'meta/yosemite4_fanboard_fsc_nct_adc_max_led_ons_efuse_mps.json',
+ 'meta/yosemite4_floatingfalls.json',
+ 'meta/yosemite4_medusaboard_adc_rns_12vhsc_adi_48vhsc_inf.json',
+ 'meta/yosemite4_medusaboard_adc_rns_12vhsc_mps_48vhsc_adi.json',
+ 'meta/yosemite4_medusaboard_adc_rns_12vhsc_mps_48vhsc_inf.json',
+ 'meta/yosemite4_medusaboard_adc_rns_hsc_adi.json',
+ 'meta/yosemite4_medusaboard_adc_rns_isl_12vhsc_adi_48vhsc_inf.json',
+ 'meta/yosemite4_medusaboard_adc_rns_isl_12vhsc_mps_48vhsc_adi.json',
+ 'meta/yosemite4_medusaboard_adc_rns_isl_12vhsc_mps_48vhsc_inf.json',
+ 'meta/yosemite4_medusaboard_adc_rns_isl_hsc_adi.json',
+ 'meta/yosemite4_medusaboard_adc_ti_12vhsc_adi_48vhsc_inf.json',
+ 'meta/yosemite4_medusaboard_adc_ti_12vhsc_mps_48vhsc_adi.json',
+ 'meta/yosemite4_medusaboard_adc_ti_12vhsc_mps_48vhsc_inf.json',
+ 'meta/yosemite4_medusaboard_adc_ti_hsc_adi.json',
+ 'meta/yosemite4_sentineldome_chassis.json',
+ 'meta/yosemite4_sentineldome_t1.json',
+ 'meta/yosemite4_sentineldome_t1_retimer.json',
+ 'meta/yosemite4_sentineldome_t2.json',
+ 'meta/yosemite4_sentineldome_t2_retimer.json',
+ 'meta/yosemite4_spiderboard_adc_max_pwr_ti.json',
+ 'meta/yosemite4_spiderboard_adc_ti_pwr_ti.json',
+ 'meta/yosemite4_wailuafalls.json',
+ 'meta/yosemite4n.json',
+ 'micron_7450.json',
+ 'mori_bmc.json',
+ 'mori_motherboard.json',
+ 'mtjade.json',
+ 'mtjefferson_bmc.json',
+ 'mtjefferson_bp.json',
+ 'mtjefferson_mb.json',
+ 'mtmitchell_bmc.json',
+ 'mtmitchell_bp.json',
+ 'mtmitchell_mb.json',
+ 'mtmitchell_riser.json',
+ 'mudflap.json',
+ 'nf5280m7_baseboard.json',
+ 'nisqually.json',
+ 'nuvoton_npcm8xx_evb.json',
+ 'nvidia_gb200.json',
+ 'nvidia_gb200_io_board.json',
+ 'nvidia_hmc.json',
+ 'nvme_intel_p_series.json',
+ 'nvme_p4500_p5500.json',
+ 'pcie_ssd_retimer.json',
+ 'pennybacker.json',
+ 'pssf132202a.json',
+ 'pssf162205a.json',
+ 'pssf212201a.json',
+ 'pssf222201a.json',
+ 'r1000_chassis.json',
+ 'r2000_chassis.json',
+ 'rainier_1s4u_chassis.json',
+ 'rainier_2u_chassis.json',
+ 'rainier_4u_chassis.json',
+ 'sas_module.json',
+ 'sbp1_baseboard.json',
+ 'sbp1_chassis.json',
+ 'sbp1_hbm.json',
+ 'sbp1_nvme.json',
+ 'sbp1_psu.json',
+ 'sbp1_rssd.json',
+ 'solum_pssf162202_psu.json',
+ 'storm_king.json',
+ 'stp_baseboard.json',
+ 'stp_p4000_chassis.json',
+ 'supermicro-pws-920p-sq_psu.json',
+ 'system1_baseboard.json',
+ 'system1_chassis.json',
+ 'tola.json',
+ 'tyan_s7106_baseboard.json',
+ 'tyan_s8036_baseboard.json',
+ 'vegman_n110_baseboard.json',
+ 'vegman_rx20_baseboard.json',
+ 'vegman_sx20_baseboard.json',
+ 'wft_baseboard.json',
+]
diff --git a/meson.build b/meson.build
index d42af59..fc77e8a 100644
--- a/meson.build
+++ b/meson.build
@@ -69,182 +69,9 @@
install_data('blacklist.json')
-configs = [
- '1ux16_riser.json',
- '2ux8_riser.json',
- '3ypower_vast2112_psu.json',
- '8x25_hsbp.json',
- 'a2ul16riser.json',
- 'a2ux8x4riser.json',
- 'acbel_r1ca2122a_psu.json',
- 'acbell_rica_psu.json',
- 'ahw1um2riser.json',
- 'aspower_u1a-d10550_psu.json',
- 'aspower_u1a-d10800_psu.json',
- 'aspower_u1a-d11200_psu.json',
- 'aspower_u1a-d11600_psu.json',
- 'aspower_u1d-d10800_psu.json',
- 'asrock_c3_medium_x86.json',
- 'asrock_e3c246d4i.json',
- 'asrock_e3c256d4i.json',
- 'asrock_m3_small_x86.json',
- 'asrock_n3_xlarge_x86.json',
- 'asrock_romed8hm3.json',
- 'asrock_spc621d8hm3.json',
- 'axx1p100hssi_aic.json',
- 'axx2prthdhd.json',
- 'bellavista.json',
- 'blueridge_1s4u_chassis.json',
- 'blueridge_2u_chassis.json',
- 'blueridge_4u_chassis.json',
- 'blyth.json',
- 'bnp_baseboard.json',
- 'bonnell.json',
- 'brcm_100g_1p_ocp_mezz.json',
- 'brcm_200g_1p_ocp_mezz.json',
- 'cx7_ocp.json',
- 'delta_awf2dc3200w_psu.json',
- 'delta_dps-1600ab_psu.json',
- 'delta_dps-2000ab_psu.json',
- 'delta_dps-750xb_psu.json',
- 'everest.json',
- 'f1u12x25_hsbp.json',
- 'f1u4x25_hsbp.json',
- 'f2u12x35_hsbp.json',
- 'f2u8x25_hsbp.json',
- 'flextronics_s-1100adu00-201_psu.json',
- 'fp5280g3_chassis.json',
- 'fp5280g3_fanboard.json',
- 'fuji.json',
- 'genesis3_baseboard.json',
- 'genesis3_chassis.json',
- 'genesis3_psu.json',
- 'gospower_g1136-1300wna_psu.json',
- 'ibm_tacoma_rack_controller.json',
- 'ingraham.json',
- 'intel_front_panel.json',
- 'kudo_bmc.json',
- 'kudo_motherboard.json',
- 'meta/bletchley_baseboard.json',
- 'meta/bletchley_chassis.json',
- 'meta/bletchley_frontpanel.json',
- 'meta/bmc_storage_module.json',
- 'meta/catalina_fio.json',
- 'meta/catalina_hdd.json',
- 'meta/catalina_hdd_nvme.json',
- 'meta/catalina_osfp.json',
- 'meta/catalina_pdb.json',
- 'meta/catalina_scm.json',
- 'meta/fbtp.json',
- 'meta/fbyv2.json',
- 'meta/fbyv35.json',
- 'meta/fbyv35_nic_mellanox.json',
- 'meta/greatlakes.json',
- 'meta/greatlakes_nic_mellanox.json',
- 'meta/harma_bsm.json',
- 'meta/harma_fanboard.json',
- 'meta/harma_mb.json',
- 'meta/harma_mb_vr_infineon.json',
- 'meta/harma_scm.json',
- 'meta/minerva_cmm.json',
- 'meta/minerva_cmm_bsm.json',
- 'meta/minerva_cmm_hsc_infineon.json',
- 'meta/minerva_cmm_scm.json',
- 'meta/minerva_fanboard.json',
- 'meta/minerva_pdb.json',
- 'meta/minerva_pdb_hsc_xdp.json',
- 'meta/minerva_pttv.json',
- 'meta/minerva_sitv.json',
- 'meta/terminus_2x100g_nic_tsff.json',
- 'meta/twinlake.json',
- 'meta/ventura_fanboard.json',
- 'meta/ventura_ioboard.json',
- 'meta/ventura_ledboard.json',
- 'meta/ventura_rmc.json',
- 'meta/ventura_scm.json',
- 'meta/yosemite4.json',
- 'meta/yosemite4_chassis.json',
- 'meta/yosemite4_cpu.json',
- 'meta/yosemite4_fanboard_fsc_max_adc_ti_led_nxp_efuse_max.json',
- 'meta/yosemite4_fanboard_fsc_max_adc_ti_led_nxp_efuse_mps.json',
- 'meta/yosemite4_fanboard_fsc_max_adc_ti_led_ons_efuse_mps.json',
- 'meta/yosemite4_fanboard_fsc_nct_adc_max_led_ons_efuse_max.json',
- 'meta/yosemite4_fanboard_fsc_nct_adc_max_led_ons_efuse_mps.json',
- 'meta/yosemite4_floatingfalls.json',
- 'meta/yosemite4_medusaboard_adc_rns_12vhsc_adi_48vhsc_inf.json',
- 'meta/yosemite4_medusaboard_adc_rns_12vhsc_mps_48vhsc_adi.json',
- 'meta/yosemite4_medusaboard_adc_rns_12vhsc_mps_48vhsc_inf.json',
- 'meta/yosemite4_medusaboard_adc_rns_hsc_adi.json',
- 'meta/yosemite4_medusaboard_adc_rns_isl_12vhsc_adi_48vhsc_inf.json',
- 'meta/yosemite4_medusaboard_adc_rns_isl_12vhsc_mps_48vhsc_adi.json',
- 'meta/yosemite4_medusaboard_adc_rns_isl_12vhsc_mps_48vhsc_inf.json',
- 'meta/yosemite4_medusaboard_adc_rns_isl_hsc_adi.json',
- 'meta/yosemite4_medusaboard_adc_ti_12vhsc_adi_48vhsc_inf.json',
- 'meta/yosemite4_medusaboard_adc_ti_12vhsc_mps_48vhsc_adi.json',
- 'meta/yosemite4_medusaboard_adc_ti_12vhsc_mps_48vhsc_inf.json',
- 'meta/yosemite4_medusaboard_adc_ti_hsc_adi.json',
- 'meta/yosemite4_sentineldome_chassis.json',
- 'meta/yosemite4_sentineldome_t1.json',
- 'meta/yosemite4_sentineldome_t1_retimer.json',
- 'meta/yosemite4_sentineldome_t2.json',
- 'meta/yosemite4_sentineldome_t2_retimer.json',
- 'meta/yosemite4_spiderboard_adc_max_pwr_ti.json',
- 'meta/yosemite4_spiderboard_adc_ti_pwr_ti.json',
- 'meta/yosemite4_wailuafalls.json',
- 'meta/yosemite4n.json',
- 'micron_7450.json',
- 'mori_bmc.json',
- 'mori_motherboard.json',
- 'mtjade.json',
- 'mtjefferson_bmc.json',
- 'mtjefferson_bp.json',
- 'mtjefferson_mb.json',
- 'mtmitchell_bmc.json',
- 'mtmitchell_bp.json',
- 'mtmitchell_mb.json',
- 'mtmitchell_riser.json',
- 'mudflap.json',
- 'nf5280m7_baseboard.json',
- 'nisqually.json',
- 'nuvoton_npcm8xx_evb.json',
- 'nvidia_gb200.json',
- 'nvidia_gb200_io_board.json',
- 'nvidia_hmc.json',
- 'nvme_intel_p_series.json',
- 'nvme_p4500_p5500.json',
- 'pcie_ssd_retimer.json',
- 'pennybacker.json',
- 'pssf132202a.json',
- 'pssf162205a.json',
- 'pssf212201a.json',
- 'pssf222201a.json',
- 'r1000_chassis.json',
- 'r2000_chassis.json',
- 'rainier_1s4u_chassis.json',
- 'rainier_2u_chassis.json',
- 'rainier_4u_chassis.json',
- 'sas_module.json',
- 'sbp1_baseboard.json',
- 'sbp1_chassis.json',
- 'sbp1_hbm.json',
- 'sbp1_nvme.json',
- 'sbp1_psu.json',
- 'sbp1_rssd.json',
- 'solum_pssf162202_psu.json',
- 'storm_king.json',
- 'stp_baseboard.json',
- 'stp_p4000_chassis.json',
- 'supermicro-pws-920p-sq_psu.json',
- 'system1_baseboard.json',
- 'system1_chassis.json',
- 'tola.json',
- 'tyan_s7106_baseboard.json',
- 'tyan_s8036_baseboard.json',
- 'vegman_n110_baseboard.json',
- 'vegman_rx20_baseboard.json',
- 'vegman_sx20_baseboard.json',
- 'wft_baseboard.json',
-]
+# this creates the 'configs' variable
+subdir('configurations')
+
filepaths = []
foreach c : configs
file = join_paths('configurations', c)
diff --git a/scripts/generate_config_list.sh b/scripts/generate_config_list.sh
new file mode 100755
index 0000000..22d3fca
--- /dev/null
+++ b/scripts/generate_config_list.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+set -eu
+
+json_files=$(cd configurations; find . -iname "*.json" | sort | sed 's|^\./||')
+
+MESON_FILE=configurations/meson.build
+
+SELF=$(basename "$0")
+
+# Generate the Meson file
+{
+ echo "# This file is auto-generated. Do not edit manually."
+ echo "# File content generated with ${SELF}."
+ echo "configs = ["
+ for file in $json_files; do
+ echo " '${file}',"
+ done
+ echo "]"
+} > "$MESON_FILE"
diff --git a/scripts/run-ci.sh b/scripts/run-ci.sh
index ca63842..9364a97 100755
--- a/scripts/run-ci.sh
+++ b/scripts/run-ci.sh
@@ -1,2 +1,9 @@
#!/bin/sh
+
+set -e
+
scripts/validate_configs.py -v -k -e test/expected-schema-errors.txt
+
+# fail the script if someone forgot to update the list of configurations
+scripts/generate_config_list.sh
+git --no-pager diff --exit-code -- .