blob: 2903247803ffeca8f8a3c027fc59afaaf63fed2b [file] [log] [blame]
kelvin.zhanga1170fa2022-03-03 20:06:57 +08001#!/bin/bash
2#
3# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
4#
5# SPDX-License-Identifier: MIT
6#
7
Kelvin Zhange1cb8732022-03-22 11:39:49 +08008source /etc/profile.d/TOOLSENV.sh
9
kelvin.zhanga1170fa2022-03-03 20:06:57 +080010export PATH=/opt/cmake-3.18.4-Linux-x86_64/bin/:$PATH
11export PATH=/proj/coverity/cov-analysis/bin/:$PATH
12export LM_LICENSE_FILE=/mnt/fileroot/jenkins/Xplorer_key.txt:$LM_LICENSE_FILE
13export PATH=/opt/xtensa/XtDevTools/install/tools/RG-2018.9-linux/XtensaTools/bin:$PATH
14export XTENSA_SYSTEM=/opt/xtensa/XtDevTools/install/builds/RG-2018.9-linux/Amlogic_v0/config
15export XTENSA_CORE=Amlogic_v0
16
Kelvin Zhangcf643422022-11-22 15:28:31 +080017if [ -z "$MANIFEST_BRANCH" ] || [ -z "$PROJECT_NAME" ] || [ -z "$BRANCH_NAME" ]; then
kelvin.zhanga1170fa2022-03-03 20:06:57 +080018 echo "NULL params!"
19 exit 1
20fi
21
fugui.zhang89409e12024-07-03 14:10:05 +080022if [ "$SUBMIT_TYPE" = "daily" ];then
Keguang Zhang1cba8592024-08-20 20:30:28 +080023 BASE_PATH=/mnt/fileroot/autobuild/workdir/workspace/RTOS/RTOS_SDK/dailybuild
fugui.zhang89409e12024-07-03 14:10:05 +080024elif [ "$SUBMIT_TYPE" = "release" ];then
Keguang Zhang1cba8592024-08-20 20:30:28 +080025 BASE_PATH=/mnt/fileroot/autobuild/workdir/workspace/RTOS/RTOS_SDK/dailybuild_release
fugui.zhang89409e12024-07-03 14:10:05 +080026elif [ "$SUBMIT_TYPE" = "patch" ];then
Keguang Zhang1cba8592024-08-20 20:30:28 +080027 BASE_PATH=/mnt/fileroot/autobuild/workdir/workspace/RTOS/RTOS_SDK/patchbuild
kelvin.zhang01393902022-03-03 20:42:46 +080028elif [ "$SUBMIT_TYPE" = "every" ];then
Keguang Zhang1cba8592024-08-20 20:30:28 +080029 BASE_PATH=/mnt/fileroot/jenkins/build-check
kelvin.zhanga1170fa2022-03-03 20:06:57 +080030fi
31
32MATCH_PATTERN="projects/"
Kelvin Zhange1cb8732022-03-22 11:39:49 +080033BRANCH=${MANIFEST_BRANCH#*${MATCH_PATTERN}}
Keguang Zhang1cba8592024-08-20 20:30:28 +080034WORK_DIR=$BASE_PATH/$PROJECT_NAME/$BRANCH
Kelvin Zhangb2630702022-04-20 11:22:32 +080035OUTPUT_DIR=$WORK_DIR/output
kelvin.zhanga1170fa2022-03-03 20:06:57 +080036
Kelvin Zhang25f7ed42024-08-21 19:12:46 +080037REPO_PY=$WORK_DIR/.repo/repo/repo
Kelvin Zhangfdf8ff02023-04-21 21:23:30 +080038MANIFEST="$OUTPUT_DIR/manifest.xml"
Kelvin Zhang4982b0b2022-08-31 19:15:24 +080039LAST_MANIFEST="$OUTPUT_DIR/last_manifest.xml"
Kelvin Zhang7052f1c2022-09-20 11:11:41 +080040DIFF_MANIFEST="$OUTPUT_DIR/diff_manifest.xml"
Kelvin Zhangff0a2b32022-11-08 14:17:14 +080041LAST_BUILD_FAILURE="$OUTPUT_DIR/.last_build_failure"
kelvin.zhang5fd25982022-03-04 09:43:01 +080042
Kelvin Zhang461d2e12022-11-21 20:51:42 +080043GERRIT_SERVER="scgit.amlogic.com"
44GERRIT_PORT="29418"
45GERRIT_QUERY_RESULT="$OUTPUT_DIR/topic_changes.txt"
46
Kelvin Zhangb2630702022-04-20 11:22:32 +080047if [ -n "$EXCLUDE_REPOS" ]; then
48 echo "Exclude repos:"
49 echo "$EXCLUDE_REPOS"
50 while IFS= read -r line
51 do
52 [ -n "$REPO_SYNC_IPATTERN" ] && REPO_SYNC_IPATTERN+="|"
53 REPO_SYNC_IPATTERN+="$line"
54 done <<< "$EXCLUDE_REPOS"
55fi
56
57[ "$FRESH_DOWNLOAD" = "yes" ] && rm -rf $WORK_DIR
58
kelvin.zhang01393902022-03-03 20:42:46 +080059if [ ! -d "$WORK_DIR" ]; then
60 echo -e "\n======== Downloading source code ========"
61 mkdir -p $WORK_DIR
Kelvin Zhangb2630702022-04-20 11:22:32 +080062 mkdir -p $OUTPUT_DIR
kelvin.zhang01393902022-03-03 20:42:46 +080063 cd $WORK_DIR
Kelvin Zhang461d2e12022-11-21 20:51:42 +080064 repo init -u ssh://${GERRIT_SERVER}:${GERRIT_PORT}/${PROJECT_NAME} -b ${MANIFEST_BRANCH} --repo-url=git://${GERRIT_SERVER}/tools/repo.git --no-repo-verify
kelvin.zhang5fd25982022-03-04 09:43:01 +080065else
66 echo -e "\n======== Syncing source code ========"
67 cd $WORK_DIR
Kelvin Zhang442c9152022-05-30 17:29:53 +080068 if [ -n "$REPO_SYNC_IPATTERN" ]; then
Kelvin Zhang25f7ed42024-08-21 19:12:46 +080069 $REPO_PY forall -i "$REPO_SYNC_IPATTERN" -c git reset -q --hard origin/$BRANCH_NAME
Kelvin Zhang442c9152022-05-30 17:29:53 +080070 else
Kelvin Zhang25f7ed42024-08-21 19:12:46 +080071 $REPO_PY forall -c git reset -q --hard origin/$BRANCH_NAME
Kelvin Zhang442c9152022-05-30 17:29:53 +080072 fi
Kelvin Zhang25f7ed42024-08-21 19:12:46 +080073 $REPO_PY manifest -r -o $LAST_MANIFEST
kelvin.zhang01393902022-03-03 20:42:46 +080074fi
kelvin.zhanga1170fa2022-03-03 20:06:57 +080075
Kelvin Zhang25f7ed42024-08-21 19:12:46 +080076$REPO_PY sync -cq -j8 --prune
Kelvin Zhang442c9152022-05-30 17:29:53 +080077[ "$?" -ne 0 ] && cd - && echo "Sync error! will do fresh download next time" && exit 1
78if [ -n "$REPO_SYNC_IPATTERN" ]; then
Kelvin Zhang25f7ed42024-08-21 19:12:46 +080079 $REPO_PY forall -i "$REPO_SYNC_IPATTERN" -c git reset -q --hard origin/$BRANCH_NAME
Kelvin Zhang442c9152022-05-30 17:29:53 +080080else
Kelvin Zhang25f7ed42024-08-21 19:12:46 +080081 $REPO_PY forall -c git reset -q --hard origin/$BRANCH_NAME
Kelvin Zhang442c9152022-05-30 17:29:53 +080082fi
Kelvin Zhang25f7ed42024-08-21 19:12:46 +080083$REPO_PY manifest -r -o $MANIFEST
kelvin.zhang5fd25982022-03-04 09:43:01 +080084echo -e "======== Done ========\n"
kelvin.zhang01393902022-03-03 20:42:46 +080085
Kelvin Zhangfdf8ff02023-04-21 21:23:30 +080086if [ -f $LAST_MANIFEST ] && [ -f $MANIFEST ]; then
87 comm -23 <(sort $LAST_MANIFEST) <(sort $MANIFEST) > $DIFF_MANIFEST
kelvin.zhang5fd25982022-03-04 09:43:01 +080088
Kelvin Zhang7052f1c2022-09-20 11:11:41 +080089 if [ -s $DIFF_MANIFEST ]; then
kelvin.zhang5fd25982022-03-04 09:43:01 +080090 echo "======== Recent Changes ========"
91
92 while IFS= read -r line
93 do
94 keyline=`echo "$line" | grep 'name=.* path='`
95
96 for keyword in $keyline; do
97 [[ $keyword == path=* ]] && repo_path=`echo ${keyword#*path=} | sed 's/\"//g'`
98 [[ $keyword == name=* ]] && repo_name=`echo ${keyword#*name=} | sed 's/\"//g'`
99 [[ $keyword == revision=* ]] && repo_version=`echo ${keyword#*revision=} | sed 's/\"//g'`
100 done
101
102 if [ -d "$repo_path" ]; then
103 pushd $repo_path > /dev/null
104 echo -e "\nProject $repo_name"
105 git log $repo_version..HEAD
106 popd > /dev/null
107 fi
Kelvin Zhang7052f1c2022-09-20 11:11:41 +0800108 done < $DIFF_MANIFEST
Kelvin Zhange98bd542022-09-07 15:43:58 +0800109 echo -e "================\n"
kelvin.zhang5fd25982022-03-04 09:43:01 +0800110 else
Kelvin Zhange98bd542022-09-07 15:43:58 +0800111 echo -e "======== Nothing changed since last build ========\n"
Kelvin Zhang25f7ed42024-08-21 19:12:46 +0800112 [[ "$SUBMIT_TYPE" == "daily" || "$SUBMIT_TYPE" == "release" ]] && [ -z "$MANUAL_GERRIT_TOPIC" ] && exit 0
kelvin.zhang5fd25982022-03-04 09:43:01 +0800113 fi
Kelvin Zhang81eb1b12022-06-09 14:35:18 +0800114fi
115
Kelvin Zhang461d2e12022-11-21 20:51:42 +0800116source scripts/gerrit_review.sh
Kelvin Zhangc07a8db2022-09-06 21:06:31 +0800117# Cherry pick patches
Kelvin Zhang0f582792022-08-31 18:52:20 +0800118source scripts/cherry_pick.sh
Kelvin Zhanga04b9cb2022-11-29 15:05:27 +0800119[ "$?" -ne 0 ] && gerrit_review_for_gerrit_topic FAIL && exit 1
Kelvin Zhangcf643422022-11-22 15:28:31 +0800120gerrit_review_for_gerrit_topic Start
kelvin.zhang2219b412022-03-04 16:44:41 +0800121
fugui.zhangb2737ec2024-08-26 18:21:29 +0800122#The default patch required by patchbuild
123if [[ "$SUBMIT_TYPE" == "patch" ]]; then
124 MANUAL_GERRIT_TOPIC="SWPL-PatchBuild"
125 apply_patch_by_gerrit_topic
126fi
Kelvin Zhang7052f1c2022-09-20 11:11:41 +0800127# Generate Jenkins trigger
Kelvin Zhangfdf8ff02023-04-21 21:23:30 +0800128JENKINS_TRIGGER="$OUTPUT_DIR/jenkins_trigger.txt"
fugui.zhang89409e12024-07-03 14:10:05 +0800129[[ "$SUBMIT_TYPE" == "daily" || "$SUBMIT_TYPE" == "patch" ]] && source scripts/gen_jenkins_trigger.sh
Kelvin Zhang7052f1c2022-09-20 11:11:41 +0800130
shijie.xiongec398682022-09-07 15:57:54 +0800131if [[ "$MANIFEST_BRANCH" == "$BRANCH_NAME" ]]; then
132 source scripts/build_all_pkg.sh
kelvin.zhang5fd25982022-03-04 09:43:01 +0800133else
Kelvin Zhang727c3e32022-08-31 20:57:37 +0800134 source scripts/build_all.sh
kelvin.zhang5fd25982022-03-04 09:43:01 +0800135fi
Kelvin Zhang461d2e12022-11-21 20:51:42 +0800136
Kelvin Zhanga04b9cb2022-11-29 15:05:27 +0800137[ "$?" -ne 0 ] && gerrit_review_for_gerrit_topic FAIL && exit 1
Kelvin Zhang461d2e12022-11-21 20:51:42 +0800138gerrit_review_for_gerrit_topic SUCCESS