diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index de802ef83f79a..415c24848c571 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -181,6 +181,59 @@ jobs: export ARTIFACTDIR=`pwd`/buildartifacts git config --global --add safe.directory /github/workspace/sources/nuttx git config --global --add safe.directory /github/workspace/sources/apps + + # Validate the defconfig files in a temp folder, preserving the links + tar cf sources.tar sources/nuttx sources/apps + mkdir validate + pushd validate + tar xf ../sources.tar + pushd sources/nuttx + rm -rf .git ../apps/.git + testfile=tools/ci/testlist/${{matrix.boards}}.dat + echo Validating targets in $testfile + testlist=`grep -v -E "^(-|#)|^[C|c][M|m][A|a][K|k][E|e]" $testfile || true` + + # For every target in the .dat file + for line in $testlist; do + firstch=${line:0:1} + if [ "X$firstch" == "X/" ]; then + dir=`echo $line | cut -d',' -f1` + list=`find boards$dir -name defconfig | cut -d'/' -f4,6` + for config in ${list}; do + + # Skip the Excluded Targets, like "-moxa:nsh" + target=${config/\//:} + if grep -e "-$target" $testfile; then + echo Skipping Excluded Target $config + continue + fi + + # Skip the CMake Targets, like "CMake,nucleo-f334r8:adc" + if grep "CMake,$target" $testfile; then + echo Skipping CMake Target $config + continue + fi + + # Validate the target + make distclean >/dev/null 2>&1 || true + echo ./tools/refresh.sh --silent $config + if ! ./tools/refresh.sh --silent $config; then + echo Error: $config:1:1: error: $config is configured incorrectly. To fix it, run '"'tools/refresh.sh $config'"' + fail=1 + fi + done + fi + done + popd ; popd + rm -rf sources.tar validate + + # Quit if the defconfig validation failed + if [[ "$fail" == "1" ]]; then + echo Error: $testfile:1:1: error: Quitting, defconfig validation failed for $testfile + exit 1 + fi + + # Build the targets cd sources/nuttx/tools/ci if [ "X${{matrix.boards}}" = "Xcodechecker" ]; then ./cibuild.sh -c -A -N -R --codechecker testlist/${{matrix.boards}}.dat @@ -385,4 +438,4 @@ jobs: with: name: msvc-builds path: buildartifacts/ - continue-on-error: true \ No newline at end of file + continue-on-error: true