99 lines
2.9 KiB
Bash
Executable File
99 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
|
|
#Used filter mode and set the repository list with manual mode,plese use '#' to split
|
|
#For example:source scripts/build_all.sh rtos_sdk/arch/arm64#rtos_sdk/libc#
|
|
[ -z "$OUTPUT_DIR" ] && OUTPUT_DIR=$PWD/output
|
|
[ ! -d $OUTPUT_DIR ] && mkdir -p $OUTPUT_DIR
|
|
|
|
[ -z "$BUILD_LOG" ] && BUILD_LOG="$OUTPUT_DIR/build.log"
|
|
[ -z "$LAST_BUILD_FAILURE" ] && LAST_BUILD_FAILURE="$OUTPUT_DIR/.last_build_failure"
|
|
|
|
if [ "$1" == "auto" ]; then
|
|
CHG_REPO=$(python3 scripts/repositories_changed_filter.py)
|
|
else
|
|
CHG_REPO="$1"
|
|
fi
|
|
if [ "$CHG_REPO" == "" ]; then
|
|
use_filter=0
|
|
else
|
|
echo -e "Changed repositories:$CHG_REPO\n"
|
|
use_filter=1
|
|
fi
|
|
|
|
# Clear build.log
|
|
> $BUILD_LOG
|
|
|
|
source scripts/publish.sh
|
|
|
|
echo "======== Building all projects ========" | tee -a $BUILD_LOG
|
|
|
|
source scripts/gen_build_combination.sh
|
|
|
|
nr=0
|
|
while IFS= read -r LINE; do
|
|
nr=$((nr+1))
|
|
|
|
check_project "$LINE"
|
|
[ "$?" -ne 0 ] && continue
|
|
source scripts/env.sh $LINE >> $BUILD_LOG 2>&1
|
|
[ "$?" -ne 0 ] && echo "Ignore unsupported combination! $LINE" && continue
|
|
make distclean
|
|
[ "$?" -ne 0 ] && echo "Failed to make distclean! $LINE" && return 2
|
|
if [ "$use_filter" -eq 1 ]; then
|
|
make config >> $BUILD_LOG 2>&1
|
|
array=($LINE)
|
|
python3 scripts/projects_changed_filter.py "$OUTPUT_DIR" "$LINE" "$CHG_REPO"
|
|
is_need_compile=$?
|
|
if [ "$is_need_compile" -eq 1 ]; then
|
|
echo -n -e "$nr. $LINE"
|
|
make >> $BUILD_LOG 2>&1
|
|
else
|
|
echo -n -e "$nr. $LINE is unchanged, skip...\t"
|
|
:
|
|
fi
|
|
else
|
|
echo -n -e "$nr. $LINE"
|
|
make >> $BUILD_LOG 2>&1
|
|
fi
|
|
[ "$?" -ne 0 ] && echo " failed!" && cat $BUILD_LOG && touch $LAST_BUILD_FAILURE && echo -e "\nAborted with errors!\n" && return 3
|
|
grep -qr "warning: " $BUILD_LOG
|
|
[ "$?" -eq 0 ] && echo " with warnings!" && cat $BUILD_LOG && touch $LAST_BUILD_FAILURE && echo -e "\nAborted with warnings!\n" && return 1
|
|
rm -f $LAST_BUILD_FAILURE
|
|
if [[ "$SUBMIT_TYPE" == "daily" || "$SUBMIT_TYPE" == "patch" || "$SUBMIT_TYPE" == "release" ]]; then
|
|
publish_images >> $BUILD_LOG 2>&1
|
|
[ "$?" -ne 0 ] && echo "Failed to publish images!" && return 4
|
|
|
|
if [[ "$ARCH" == "arm64" && "$PRODUCT" == "speaker" ]]; then
|
|
echo -e "\n======== Building document ========" >> $BUILD_LOG
|
|
make docs >> $BUILD_LOG 2>&1
|
|
LOCAL_DOC_PATH=$(grep -oP 'Generated docs in \K\S+' $BUILD_LOG)/html
|
|
if [ -d $LOCAL_DOC_PATH ]; then
|
|
pushd $LOCAL_DOC_PATH >/dev/null
|
|
publish_docoment
|
|
if [ $? -ne 0 ]; then
|
|
echo -n -e "(failed to update doc)"
|
|
else
|
|
echo -n -e "(doc updated)"
|
|
fi
|
|
popd >/dev/null
|
|
else
|
|
echo -n -e "(failed to build doc)"
|
|
fi
|
|
echo -e "======== Done ========\n" >> $BUILD_LOG
|
|
fi
|
|
fi
|
|
echo ""
|
|
done <"$BUILD_COMBINATION"
|
|
|
|
echo -e "======== Done ========\n" | tee -a $BUILD_LOG
|
|
|
|
if [[ "$SUBMIT_TYPE" == "daily" || "$SUBMIT_TYPE" == "patch" || "$SUBMIT_TYPE" == "release" ]]; then
|
|
post_publish_images >> $BUILD_LOG 2>&1
|
|
show_download_url
|
|
fi
|