Skip to content

Commit d412ac6

Browse files
committed
Merge branch 'tools/support_multi_ci_files' into 'master'
tools(ci): Support multiple CI sdkconfig files See merge request sdk/ESP8266_RTOS_SDK!1712
2 parents 7fdbbb2 + 47c5405 commit d412ac6

File tree

4 files changed

+129
-82
lines changed

4 files changed

+129
-82
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y

tools/ci/build_examples.sh

+66-44
Original file line numberDiff line numberDiff line change
@@ -118,53 +118,75 @@ build_example () {
118118
local EXAMPLE_DIR=$(dirname "${MAKE_FILE}")
119119
local EXAMPLE_NAME=$(basename "${EXAMPLE_DIR}")
120120

121-
local EXAMPLE_BUILD_DIR="${ID}_${EXAMPLE_NAME}"
121+
local EXAMPLE_BUILD_DIRS=()
122122

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}"
125127
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
167134
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
168190
}
169191

170192
EXAMPLE_NUM=0

tools/ci/build_examples_cmake.sh

+61-38
Original file line numberDiff line numberDiff line change
@@ -132,47 +132,70 @@ build_example () {
132132
local EXAMPLE_DIR=$(dirname "${CMAKELISTS}")
133133
local EXAMPLE_NAME=$(basename "${EXAMPLE_DIR}")
134134

135-
local EXAMPLE_BUILD_DIR="${ID}_${EXAMPLE_NAME}"
135+
local EXAMPLE_BUILD_DIRS=()
136136

137-
if [[ -f "example_builds/${EXAMPLE_BUILD_DIR}/build/ci_build_success" ]]; then
138-
echo "Project ${EXAMPLE_NAME} has been built and skip building ..."
137+
# count number of CI sdkconfig files
138+
SDKCONFIG_CI_FILES=$( find ${EXAMPLE_DIR}/ -type f -name sdkconfig.ci.* | sort )
139+
if [[ -z ${SDKCONFIG_CI_FILES} ]]; then
140+
EXAMPLE_BUILD_DIRS[0]="${ID}_${EXAMPLE_NAME}"
139141
else
140-
echo "Building ${EXAMPLE_BUILD_DIR}..."
141-
mkdir -p "example_builds/${EXAMPLE_BUILD_DIR}"
142-
cp -r "${EXAMPLE_DIR}/"* "example_builds/${EXAMPLE_BUILD_DIR}"
143-
pushd "example_builds/${EXAMPLE_BUILD_DIR}"
144-
# be stricter in the CI build than the default IDF settings
145-
export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
146-
export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
147-
148-
prepare_build ${EXAMPLE_NAME}
149-
150-
# sdkconfig files are normally not checked into git, but may be present when
151-
# a developer runs this script locally
152-
rm -f sdkconfig
153-
154-
# If sdkconfig.ci file is present, append it to sdkconfig.defaults,
155-
# replacing environment variables
156-
if [[ -f "$SDKCONFIG_DEFAULTS_CI" ]]; then
157-
cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH/tools/ci/envsubst.py >> sdkconfig.defaults
158-
fi
159-
160-
# build non-verbose first
161-
local BUILDLOG=${LOG_PATH}/ex_${EXAMPLE_BUILD_DIR}_log.txt
162-
touch ${BUILDLOG}
163-
164-
idf.py build >>${BUILDLOG} 2>&1 &&
165-
cp build/flash_project_args build/download.config && # backwards compatible download.config filename
166-
touch build/ci_build_success ||
167-
{
168-
RESULT=$?; FAILED_EXAMPLES+=" ${EXAMPLE_NAME}" ;
169-
}
170-
171-
cat ${BUILDLOG}
172-
popd
173-
174-
grep -i "error\|warning" "${BUILDLOG}" 2>&1 | grep -v "error.c.obj" >> "${LOG_SUSPECTED}" || :
142+
COUNT=0
143+
for CI_FILE in ${SDKCONFIG_CI_FILES}
144+
do
145+
echo "${COUNT} ${CI_FILE}"
146+
EXAMPLE_BUILD_DIRS[COUNT]="${ID}_${EXAMPLE_NAME}_${CI_FILE##*.}"
147+
COUNT=$(( $COUNT + 1 ))
148+
done
175149
fi
150+
151+
for EXAMPLE_BUILD_DIR in ${EXAMPLE_BUILD_DIRS[*]}
152+
do
153+
if [[ -f "example_builds/${EXAMPLE_BUILD_DIR}/build/ci_build_success" ]]; then
154+
echo "Project ${EXAMPLE_BUILD_DIR} has been built and skip building ..."
155+
else
156+
echo "Building ${EXAMPLE_BUILD_DIR}..."
157+
mkdir -p "example_builds/${EXAMPLE_BUILD_DIR}"
158+
cp -r "${EXAMPLE_DIR}/"* "example_builds/${EXAMPLE_BUILD_DIR}/"
159+
160+
if [[ -n ${SDKCONFIG_CI_FILES} ]]; then
161+
cp "example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci.${EXAMPLE_BUILD_DIR##*_}" "example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci"
162+
rm example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci.*
163+
fi
164+
165+
pushd "example_builds/${EXAMPLE_BUILD_DIR}"
166+
# be stricter in the CI build than the default IDF settings
167+
export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
168+
export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
169+
170+
prepare_build ${EXAMPLE_NAME}
171+
172+
# sdkconfig files are normally not checked into git, but may be present when
173+
# a developer runs this script locally
174+
rm -f sdkconfig
175+
176+
# If sdkconfig.ci file is present, append it to sdkconfig.defaults,
177+
# replacing environment variables
178+
if [[ -f "$SDKCONFIG_DEFAULTS_CI" ]]; then
179+
cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH/tools/ci/envsubst.py >> sdkconfig.defaults
180+
fi
181+
182+
# build non-verbose first
183+
local BUILDLOG=${LOG_PATH}/ex_${EXAMPLE_BUILD_DIR}_log.txt
184+
touch ${BUILDLOG}
185+
186+
idf.py build >>${BUILDLOG} 2>&1 &&
187+
cp build/flash_project_args build/download.config && # backwards compatible download.config filename
188+
touch build/ci_build_success ||
189+
{
190+
RESULT=$?; FAILED_EXAMPLES+=" ${EXAMPLE_NAME}" ;
191+
}
192+
193+
cat ${BUILDLOG}
194+
popd
195+
196+
grep -i "error\|warning" "${BUILDLOG}" 2>&1 | grep -v "error.c.obj" >> "${LOG_SUSPECTED}" || :
197+
fi
198+
done
176199
}
177200

178201
EXAMPLE_NUM=0

0 commit comments

Comments
 (0)