@@ -118,53 +118,75 @@ build_example () {
118
118
local EXAMPLE_DIR=$( dirname " ${MAKE_FILE} " )
119
119
local EXAMPLE_NAME=$( basename " ${EXAMPLE_DIR} " )
120
120
121
- local EXAMPLE_BUILD_DIR= " ${ID} _ ${EXAMPLE_NAME} "
121
+ local EXAMPLE_BUILD_DIRS=()
122
122
123
- if [[ -f " example_builds/${EXAMPLE_BUILD_DIR} /build/ci_build_success" ]]; then
124
- echo " Project ${EXAMPLE_BUILD_DIR} has been built and skip building ..."
123
+ # count number of CI sdkconfig files
124
+ SDKCONFIG_CI_FILES=$( find ${EXAMPLE_DIR} / -type f -name sdkconfig.ci.* | sort )
125
+ if [[ -z ${SDKCONFIG_CI_FILES} ]]; then
126
+ EXAMPLE_BUILD_DIRS[0]=" ${ID} _${EXAMPLE_NAME} "
125
127
else
126
- echo " Building ${EXAMPLE_BUILD_DIR} ..."
127
- mkdir -p " example_builds/${EXAMPLE_BUILD_DIR} "
128
- cp -r " ${EXAMPLE_DIR} /" * " example_builds/${EXAMPLE_BUILD_DIR} /"
129
- pushd " example_builds/${EXAMPLE_BUILD_DIR} "
130
- # be stricter in the CI build than the default IDF settings
131
- export EXTRA_CFLAGS=" -Werror -Werror=deprecated-declarations"
132
- export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
133
-
134
- # sdkconfig files are normally not checked into git, but may be present when
135
- # a developer runs this script locally
136
- rm -f sdkconfig
137
-
138
- # If sdkconfig.ci file is present, append it to sdkconfig.defaults,
139
- # replacing environment variables
140
- if [[ -f " $SDKCONFIG_DEFAULTS_CI " ]]; then
141
- cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH /tools/ci/envsubst.py >> sdkconfig.defaults
142
- fi
143
-
144
- # build non-verbose first
145
- local BUILDLOG=${LOG_PATH} /ex_${EXAMPLE_BUILD_DIR} _log.txt
146
- touch ${BUILDLOG}
147
-
148
- local FLASH_ARGS=build/download.config
149
-
150
- make clean >> ${BUILDLOG} 2>&1 &&
151
- make defconfig >> ${BUILDLOG} 2>&1 &&
152
- make all -j4 >> ${BUILDLOG} 2>&1 &&
153
- make ota >> ${BUILDLOG} 2>&1 &&
154
- make print_flash_cmd > ${FLASH_ARGS} .full 2>> ${BUILDLOG} &&
155
- touch build/ci_build_success ||
156
- {
157
- RESULT=$? ; FAILED_EXAMPLES+=" ${EXAMPLE_NAME} " ;
158
- }
159
-
160
- tail -n 1 ${FLASH_ARGS} .full > ${FLASH_ARGS} || :
161
- test -s ${FLASH_ARGS} || die " Error: ${FLASH_ARGS} file is empty"
162
-
163
- cat ${BUILDLOG}
164
- popd
165
-
166
- grep -i " error\|warning" " ${BUILDLOG} " 2>&1 >> " ${LOG_SUSPECTED} " || :
128
+ COUNT=0
129
+ for CI_FILE in ${SDKCONFIG_CI_FILES}
130
+ do
131
+ EXAMPLE_BUILD_DIRS[COUNT]=" ${ID} _${EXAMPLE_NAME} _${CI_FILE##* .} "
132
+ COUNT=$(( $COUNT + 1 ))
133
+ done
167
134
fi
135
+
136
+ for EXAMPLE_BUILD_DIR in ${EXAMPLE_BUILD_DIRS[*]}
137
+ do
138
+ if [[ -f " example_builds/${EXAMPLE_BUILD_DIR} /build/ci_build_success" ]]; then
139
+ echo " Project ${EXAMPLE_BUILD_DIR} has been built and skip building ..."
140
+ else
141
+ echo " Building ${EXAMPLE_BUILD_DIR} ..."
142
+ mkdir -p " example_builds/${EXAMPLE_BUILD_DIR} "
143
+ cp -r " ${EXAMPLE_DIR} /" * " example_builds/${EXAMPLE_BUILD_DIR} /"
144
+
145
+ if [[ -n ${SDKCONFIG_CI_FILES} ]]; then
146
+ cp " example_builds/${EXAMPLE_BUILD_DIR} /sdkconfig.ci.${EXAMPLE_BUILD_DIR##* _} " " example_builds/${EXAMPLE_BUILD_DIR} /sdkconfig.ci"
147
+ rm example_builds/${EXAMPLE_BUILD_DIR} /sdkconfig.ci.*
148
+ fi
149
+
150
+ pushd " example_builds/${EXAMPLE_BUILD_DIR} "
151
+ # be stricter in the CI build than the default IDF settings
152
+ export EXTRA_CFLAGS=" -Werror -Werror=deprecated-declarations"
153
+ export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
154
+
155
+ # sdkconfig files are normally not checked into git, but may be present when
156
+ # a developer runs this script locally
157
+ rm -f sdkconfig
158
+
159
+ # If sdkconfig.ci file is present, append it to sdkconfig.defaults,
160
+ # replacing environment variables
161
+ if [[ -f " $SDKCONFIG_DEFAULTS_CI " ]]; then
162
+ cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH /tools/ci/envsubst.py >> sdkconfig.defaults
163
+ fi
164
+
165
+ # build non-verbose first
166
+ local BUILDLOG=${LOG_PATH} /ex_${EXAMPLE_BUILD_DIR} _log.txt
167
+ touch ${BUILDLOG}
168
+
169
+ local FLASH_ARGS=build/download.config
170
+
171
+ make clean >> ${BUILDLOG} 2>&1 &&
172
+ make defconfig >> ${BUILDLOG} 2>&1 &&
173
+ make all -j4 >> ${BUILDLOG} 2>&1 &&
174
+ make ota >> ${BUILDLOG} 2>&1 &&
175
+ make print_flash_cmd > ${FLASH_ARGS} .full 2>> ${BUILDLOG} &&
176
+ touch build/ci_build_success ||
177
+ {
178
+ RESULT=$? ; FAILED_EXAMPLES+=" ${EXAMPLE_NAME} " ;
179
+ }
180
+
181
+ tail -n 1 ${FLASH_ARGS} .full > ${FLASH_ARGS} || :
182
+ test -s ${FLASH_ARGS} || die " Error: ${FLASH_ARGS} file is empty"
183
+
184
+ cat ${BUILDLOG}
185
+ popd
186
+
187
+ grep -i " error\|warning" " ${BUILDLOG} " 2>&1 >> " ${LOG_SUSPECTED} " || :
188
+ fi
189
+ done
168
190
}
169
191
170
192
EXAMPLE_NUM=0
0 commit comments