mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-07-02 15:05:12 +08:00
Merge branch 'tools/support_multi_ci_files' into 'master'
tools(ci): Support multiple CI sdkconfig files See merge request sdk/ESP8266_RTOS_SDK!1712
This commit is contained in:
1
examples/get-started/hello_world/sdkconfig.ci.2MB
Normal file
1
examples/get-started/hello_world/sdkconfig.ci.2MB
Normal file
@ -0,0 +1 @@
|
|||||||
|
CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
|
1
examples/get-started/hello_world/sdkconfig.ci.4MB
Normal file
1
examples/get-started/hello_world/sdkconfig.ci.4MB
Normal file
@ -0,0 +1 @@
|
|||||||
|
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
@ -118,53 +118,75 @@ build_example () {
|
|||||||
local EXAMPLE_DIR=$(dirname "${MAKE_FILE}")
|
local EXAMPLE_DIR=$(dirname "${MAKE_FILE}")
|
||||||
local EXAMPLE_NAME=$(basename "${EXAMPLE_DIR}")
|
local EXAMPLE_NAME=$(basename "${EXAMPLE_DIR}")
|
||||||
|
|
||||||
local EXAMPLE_BUILD_DIR="${ID}_${EXAMPLE_NAME}"
|
local EXAMPLE_BUILD_DIRS=()
|
||||||
|
|
||||||
if [[ -f "example_builds/${EXAMPLE_BUILD_DIR}/build/ci_build_success" ]]; then
|
# count number of CI sdkconfig files
|
||||||
echo "Project ${EXAMPLE_BUILD_DIR} has been built and skip building ..."
|
SDKCONFIG_CI_FILES=$( find ${EXAMPLE_DIR}/ -type f -name sdkconfig.ci.* | sort )
|
||||||
|
if [[ -z ${SDKCONFIG_CI_FILES} ]]; then
|
||||||
|
EXAMPLE_BUILD_DIRS[0]="${ID}_${EXAMPLE_NAME}"
|
||||||
else
|
else
|
||||||
echo "Building ${EXAMPLE_BUILD_DIR}..."
|
COUNT=0
|
||||||
mkdir -p "example_builds/${EXAMPLE_BUILD_DIR}"
|
for CI_FILE in ${SDKCONFIG_CI_FILES}
|
||||||
cp -r "${EXAMPLE_DIR}/"* "example_builds/${EXAMPLE_BUILD_DIR}/"
|
do
|
||||||
pushd "example_builds/${EXAMPLE_BUILD_DIR}"
|
EXAMPLE_BUILD_DIRS[COUNT]="${ID}_${EXAMPLE_NAME}_${CI_FILE##*.}"
|
||||||
# be stricter in the CI build than the default IDF settings
|
COUNT=$(( $COUNT + 1 ))
|
||||||
export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
|
done
|
||||||
export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
|
|
||||||
|
|
||||||
# sdkconfig files are normally not checked into git, but may be present when
|
|
||||||
# a developer runs this script locally
|
|
||||||
rm -f sdkconfig
|
|
||||||
|
|
||||||
# If sdkconfig.ci file is present, append it to sdkconfig.defaults,
|
|
||||||
# replacing environment variables
|
|
||||||
if [[ -f "$SDKCONFIG_DEFAULTS_CI" ]]; then
|
|
||||||
cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH/tools/ci/envsubst.py >> sdkconfig.defaults
|
|
||||||
fi
|
|
||||||
|
|
||||||
# build non-verbose first
|
|
||||||
local BUILDLOG=${LOG_PATH}/ex_${EXAMPLE_BUILD_DIR}_log.txt
|
|
||||||
touch ${BUILDLOG}
|
|
||||||
|
|
||||||
local FLASH_ARGS=build/download.config
|
|
||||||
|
|
||||||
make clean >>${BUILDLOG} 2>&1 &&
|
|
||||||
make defconfig >>${BUILDLOG} 2>&1 &&
|
|
||||||
make all -j4 >>${BUILDLOG} 2>&1 &&
|
|
||||||
make ota >>${BUILDLOG} 2>&1 &&
|
|
||||||
make print_flash_cmd >${FLASH_ARGS}.full 2>>${BUILDLOG} &&
|
|
||||||
touch build/ci_build_success ||
|
|
||||||
{
|
|
||||||
RESULT=$?; FAILED_EXAMPLES+=" ${EXAMPLE_NAME}" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
tail -n 1 ${FLASH_ARGS}.full > ${FLASH_ARGS} || :
|
|
||||||
test -s ${FLASH_ARGS} || die "Error: ${FLASH_ARGS} file is empty"
|
|
||||||
|
|
||||||
cat ${BUILDLOG}
|
|
||||||
popd
|
|
||||||
|
|
||||||
grep -i "error\|warning" "${BUILDLOG}" 2>&1 >> "${LOG_SUSPECTED}" || :
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
for EXAMPLE_BUILD_DIR in ${EXAMPLE_BUILD_DIRS[*]}
|
||||||
|
do
|
||||||
|
if [[ -f "example_builds/${EXAMPLE_BUILD_DIR}/build/ci_build_success" ]]; then
|
||||||
|
echo "Project ${EXAMPLE_BUILD_DIR} has been built and skip building ..."
|
||||||
|
else
|
||||||
|
echo "Building ${EXAMPLE_BUILD_DIR}..."
|
||||||
|
mkdir -p "example_builds/${EXAMPLE_BUILD_DIR}"
|
||||||
|
cp -r "${EXAMPLE_DIR}/"* "example_builds/${EXAMPLE_BUILD_DIR}/"
|
||||||
|
|
||||||
|
if [[ -n ${SDKCONFIG_CI_FILES} ]]; then
|
||||||
|
cp "example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci.${EXAMPLE_BUILD_DIR##*_}" "example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci"
|
||||||
|
rm example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci.*
|
||||||
|
fi
|
||||||
|
|
||||||
|
pushd "example_builds/${EXAMPLE_BUILD_DIR}"
|
||||||
|
# be stricter in the CI build than the default IDF settings
|
||||||
|
export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
|
||||||
|
export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
|
||||||
|
|
||||||
|
# sdkconfig files are normally not checked into git, but may be present when
|
||||||
|
# a developer runs this script locally
|
||||||
|
rm -f sdkconfig
|
||||||
|
|
||||||
|
# If sdkconfig.ci file is present, append it to sdkconfig.defaults,
|
||||||
|
# replacing environment variables
|
||||||
|
if [[ -f "$SDKCONFIG_DEFAULTS_CI" ]]; then
|
||||||
|
cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH/tools/ci/envsubst.py >> sdkconfig.defaults
|
||||||
|
fi
|
||||||
|
|
||||||
|
# build non-verbose first
|
||||||
|
local BUILDLOG=${LOG_PATH}/ex_${EXAMPLE_BUILD_DIR}_log.txt
|
||||||
|
touch ${BUILDLOG}
|
||||||
|
|
||||||
|
local FLASH_ARGS=build/download.config
|
||||||
|
|
||||||
|
make clean >>${BUILDLOG} 2>&1 &&
|
||||||
|
make defconfig >>${BUILDLOG} 2>&1 &&
|
||||||
|
make all -j4 >>${BUILDLOG} 2>&1 &&
|
||||||
|
make ota >>${BUILDLOG} 2>&1 &&
|
||||||
|
make print_flash_cmd >${FLASH_ARGS}.full 2>>${BUILDLOG} &&
|
||||||
|
touch build/ci_build_success ||
|
||||||
|
{
|
||||||
|
RESULT=$?; FAILED_EXAMPLES+=" ${EXAMPLE_NAME}" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
tail -n 1 ${FLASH_ARGS}.full > ${FLASH_ARGS} || :
|
||||||
|
test -s ${FLASH_ARGS} || die "Error: ${FLASH_ARGS} file is empty"
|
||||||
|
|
||||||
|
cat ${BUILDLOG}
|
||||||
|
popd
|
||||||
|
|
||||||
|
grep -i "error\|warning" "${BUILDLOG}" 2>&1 >> "${LOG_SUSPECTED}" || :
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
EXAMPLE_NUM=0
|
EXAMPLE_NUM=0
|
||||||
|
@ -132,47 +132,70 @@ build_example () {
|
|||||||
local EXAMPLE_DIR=$(dirname "${CMAKELISTS}")
|
local EXAMPLE_DIR=$(dirname "${CMAKELISTS}")
|
||||||
local EXAMPLE_NAME=$(basename "${EXAMPLE_DIR}")
|
local EXAMPLE_NAME=$(basename "${EXAMPLE_DIR}")
|
||||||
|
|
||||||
local EXAMPLE_BUILD_DIR="${ID}_${EXAMPLE_NAME}"
|
local EXAMPLE_BUILD_DIRS=()
|
||||||
|
|
||||||
if [[ -f "example_builds/${EXAMPLE_BUILD_DIR}/build/ci_build_success" ]]; then
|
# count number of CI sdkconfig files
|
||||||
echo "Project ${EXAMPLE_NAME} has been built and skip building ..."
|
SDKCONFIG_CI_FILES=$( find ${EXAMPLE_DIR}/ -type f -name sdkconfig.ci.* | sort )
|
||||||
|
if [[ -z ${SDKCONFIG_CI_FILES} ]]; then
|
||||||
|
EXAMPLE_BUILD_DIRS[0]="${ID}_${EXAMPLE_NAME}"
|
||||||
else
|
else
|
||||||
echo "Building ${EXAMPLE_BUILD_DIR}..."
|
COUNT=0
|
||||||
mkdir -p "example_builds/${EXAMPLE_BUILD_DIR}"
|
for CI_FILE in ${SDKCONFIG_CI_FILES}
|
||||||
cp -r "${EXAMPLE_DIR}/"* "example_builds/${EXAMPLE_BUILD_DIR}"
|
do
|
||||||
pushd "example_builds/${EXAMPLE_BUILD_DIR}"
|
echo "${COUNT} ${CI_FILE}"
|
||||||
# be stricter in the CI build than the default IDF settings
|
EXAMPLE_BUILD_DIRS[COUNT]="${ID}_${EXAMPLE_NAME}_${CI_FILE##*.}"
|
||||||
export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
|
COUNT=$(( $COUNT + 1 ))
|
||||||
export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
|
done
|
||||||
|
|
||||||
prepare_build ${EXAMPLE_NAME}
|
|
||||||
|
|
||||||
# sdkconfig files are normally not checked into git, but may be present when
|
|
||||||
# a developer runs this script locally
|
|
||||||
rm -f sdkconfig
|
|
||||||
|
|
||||||
# If sdkconfig.ci file is present, append it to sdkconfig.defaults,
|
|
||||||
# replacing environment variables
|
|
||||||
if [[ -f "$SDKCONFIG_DEFAULTS_CI" ]]; then
|
|
||||||
cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH/tools/ci/envsubst.py >> sdkconfig.defaults
|
|
||||||
fi
|
|
||||||
|
|
||||||
# build non-verbose first
|
|
||||||
local BUILDLOG=${LOG_PATH}/ex_${EXAMPLE_BUILD_DIR}_log.txt
|
|
||||||
touch ${BUILDLOG}
|
|
||||||
|
|
||||||
idf.py build >>${BUILDLOG} 2>&1 &&
|
|
||||||
cp build/flash_project_args build/download.config && # backwards compatible download.config filename
|
|
||||||
touch build/ci_build_success ||
|
|
||||||
{
|
|
||||||
RESULT=$?; FAILED_EXAMPLES+=" ${EXAMPLE_NAME}" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
cat ${BUILDLOG}
|
|
||||||
popd
|
|
||||||
|
|
||||||
grep -i "error\|warning" "${BUILDLOG}" 2>&1 | grep -v "error.c.obj" >> "${LOG_SUSPECTED}" || :
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
for EXAMPLE_BUILD_DIR in ${EXAMPLE_BUILD_DIRS[*]}
|
||||||
|
do
|
||||||
|
if [[ -f "example_builds/${EXAMPLE_BUILD_DIR}/build/ci_build_success" ]]; then
|
||||||
|
echo "Project ${EXAMPLE_BUILD_DIR} has been built and skip building ..."
|
||||||
|
else
|
||||||
|
echo "Building ${EXAMPLE_BUILD_DIR}..."
|
||||||
|
mkdir -p "example_builds/${EXAMPLE_BUILD_DIR}"
|
||||||
|
cp -r "${EXAMPLE_DIR}/"* "example_builds/${EXAMPLE_BUILD_DIR}/"
|
||||||
|
|
||||||
|
if [[ -n ${SDKCONFIG_CI_FILES} ]]; then
|
||||||
|
cp "example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci.${EXAMPLE_BUILD_DIR##*_}" "example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci"
|
||||||
|
rm example_builds/${EXAMPLE_BUILD_DIR}/sdkconfig.ci.*
|
||||||
|
fi
|
||||||
|
|
||||||
|
pushd "example_builds/${EXAMPLE_BUILD_DIR}"
|
||||||
|
# be stricter in the CI build than the default IDF settings
|
||||||
|
export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
|
||||||
|
export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
|
||||||
|
|
||||||
|
prepare_build ${EXAMPLE_NAME}
|
||||||
|
|
||||||
|
# sdkconfig files are normally not checked into git, but may be present when
|
||||||
|
# a developer runs this script locally
|
||||||
|
rm -f sdkconfig
|
||||||
|
|
||||||
|
# If sdkconfig.ci file is present, append it to sdkconfig.defaults,
|
||||||
|
# replacing environment variables
|
||||||
|
if [[ -f "$SDKCONFIG_DEFAULTS_CI" ]]; then
|
||||||
|
cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH/tools/ci/envsubst.py >> sdkconfig.defaults
|
||||||
|
fi
|
||||||
|
|
||||||
|
# build non-verbose first
|
||||||
|
local BUILDLOG=${LOG_PATH}/ex_${EXAMPLE_BUILD_DIR}_log.txt
|
||||||
|
touch ${BUILDLOG}
|
||||||
|
|
||||||
|
idf.py build >>${BUILDLOG} 2>&1 &&
|
||||||
|
cp build/flash_project_args build/download.config && # backwards compatible download.config filename
|
||||||
|
touch build/ci_build_success ||
|
||||||
|
{
|
||||||
|
RESULT=$?; FAILED_EXAMPLES+=" ${EXAMPLE_NAME}" ;
|
||||||
|
}
|
||||||
|
|
||||||
|
cat ${BUILDLOG}
|
||||||
|
popd
|
||||||
|
|
||||||
|
grep -i "error\|warning" "${BUILDLOG}" 2>&1 | grep -v "error.c.obj" >> "${LOG_SUSPECTED}" || :
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
EXAMPLE_NUM=0
|
EXAMPLE_NUM=0
|
||||||
|
Reference in New Issue
Block a user