#!/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