blob: 652e8a48328bb99f1262d3f522738c93193486b5 [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
17if [ -z "$MANIFEST_URL" ] || [ -z "$MANIFEST_BRANCH" ] || [ -z "$PROJECT_NAME" ] || [ -z "$BRANCH_NAME" ]; then
18 echo "NULL params!"
19 exit 1
20fi
21
Kelvin Zhangd64c8832022-04-02 19:56:24 +080022if [ "$SUBMIT_TYPE" = "daily" -o "$SUBMIT_TYPE" = "release" ];then
kelvin.zhanga1170fa2022-03-03 20:06:57 +080023 BUILDCHECK_BASE_PATH=/mnt/fileroot/autobuild/workdir/workspace/RTOS/RTOS_SDK/patchbuild
kelvin.zhang01393902022-03-03 20:42:46 +080024elif [ "$SUBMIT_TYPE" = "every" ];then
kelvin.zhanga1170fa2022-03-03 20:06:57 +080025 BUILDCHECK_BASE_PATH=/mnt/fileroot/jenkins/build-check
kelvin.zhanga1170fa2022-03-03 20:06:57 +080026fi
27
28MATCH_PATTERN="projects/"
Kelvin Zhange1cb8732022-03-22 11:39:49 +080029BRANCH=${MANIFEST_BRANCH#*${MATCH_PATTERN}}
kelvin.zhanga1170fa2022-03-03 20:06:57 +080030WORK_DIR=$BUILDCHECK_BASE_PATH/$PROJECT_NAME/$BRANCH
Kelvin Zhangb2630702022-04-20 11:22:32 +080031OUTPUT_DIR=$WORK_DIR/output
kelvin.zhanga1170fa2022-03-03 20:06:57 +080032
Kelvin Zhang4982b0b2022-08-31 19:15:24 +080033LAST_FULL_MANIFEST="$OUTPUT_DIR/last_full_manifest.xml"
34CURRENT_FULL_MANIFEST="$OUTPUT_DIR/curr_full_manifest.xml"
35DIFF_FULL_MANIFEST="$OUTPUT_DIR/diff_full_manifest.xml"
36LAST_MANIFEST="$OUTPUT_DIR/last_manifest.xml"
37CURRENT_MANIFEST="$OUTPUT_DIR/curr_manifest.xml"
Kelvin Zhangb2630702022-04-20 11:22:32 +080038BUILD_LOG="$OUTPUT_DIR/build.log"
kelvin.zhang5fd25982022-03-04 09:43:01 +080039
Kelvin Zhangb2630702022-04-20 11:22:32 +080040if [ -n "$EXCLUDE_REPOS" ]; then
41 echo "Exclude repos:"
42 echo "$EXCLUDE_REPOS"
43 while IFS= read -r line
44 do
45 [ -n "$REPO_SYNC_IPATTERN" ] && REPO_SYNC_IPATTERN+="|"
46 REPO_SYNC_IPATTERN+="$line"
47 done <<< "$EXCLUDE_REPOS"
48fi
49
50[ "$FRESH_DOWNLOAD" = "yes" ] && rm -rf $WORK_DIR
51
kelvin.zhang01393902022-03-03 20:42:46 +080052if [ ! -d "$WORK_DIR" ]; then
53 echo -e "\n======== Downloading source code ========"
54 mkdir -p $WORK_DIR
Kelvin Zhangb2630702022-04-20 11:22:32 +080055 mkdir -p $OUTPUT_DIR
kelvin.zhang01393902022-03-03 20:42:46 +080056 cd $WORK_DIR
57 repo init -u ${MANIFEST_URL} -b ${MANIFEST_BRANCH} --repo-url=git://scgit.amlogic.com/tools/repo.git --no-repo-verify
kelvin.zhang5fd25982022-03-04 09:43:01 +080058else
59 echo -e "\n======== Syncing source code ========"
60 cd $WORK_DIR
Kelvin Zhang442c9152022-05-30 17:29:53 +080061 if [ -n "$REPO_SYNC_IPATTERN" ]; then
62 repo forall -i "$REPO_SYNC_IPATTERN" -c git reset -q --hard origin/$BRANCH_NAME
63 else
64 repo forall -c git reset -q --hard origin/$BRANCH_NAME
65 fi
Kelvin Zhang81eb1b12022-06-09 14:35:18 +080066 repo manifest -r -o $LAST_FULL_MANIFEST
67 repo manifest -o $LAST_MANIFEST
kelvin.zhang01393902022-03-03 20:42:46 +080068fi
kelvin.zhanga1170fa2022-03-03 20:06:57 +080069
Kelvin Zhang81eb1b12022-06-09 14:35:18 +080070repo sync -cq -j8 --prune
Kelvin Zhang442c9152022-05-30 17:29:53 +080071[ "$?" -ne 0 ] && cd - && echo "Sync error! will do fresh download next time" && exit 1
72if [ -n "$REPO_SYNC_IPATTERN" ]; then
73 repo forall -i "$REPO_SYNC_IPATTERN" -c git reset -q --hard origin/$BRANCH_NAME
74else
75 repo forall -c git reset -q --hard origin/$BRANCH_NAME
76fi
Kelvin Zhang81eb1b12022-06-09 14:35:18 +080077repo manifest -r -o $CURRENT_FULL_MANIFEST
78repo manifest -o $CURRENT_MANIFEST
kelvin.zhang5fd25982022-03-04 09:43:01 +080079echo -e "======== Done ========\n"
kelvin.zhang01393902022-03-03 20:42:46 +080080
Kelvin Zhang81eb1b12022-06-09 14:35:18 +080081if [ -f $LAST_FULL_MANIFEST ] && [ -f $CURRENT_FULL_MANIFEST ]; then
82 comm -23 <(sort $LAST_FULL_MANIFEST) <(sort $CURRENT_FULL_MANIFEST) > $DIFF_FULL_MANIFEST
kelvin.zhang5fd25982022-03-04 09:43:01 +080083
Kelvin Zhang81eb1b12022-06-09 14:35:18 +080084 if [ -s $DIFF_FULL_MANIFEST ]; then
kelvin.zhang5fd25982022-03-04 09:43:01 +080085 echo "======== Recent Changes ========"
86
87 while IFS= read -r line
88 do
89 keyline=`echo "$line" | grep 'name=.* path='`
90
91 for keyword in $keyline; do
92 [[ $keyword == path=* ]] && repo_path=`echo ${keyword#*path=} | sed 's/\"//g'`
93 [[ $keyword == name=* ]] && repo_name=`echo ${keyword#*name=} | sed 's/\"//g'`
94 [[ $keyword == revision=* ]] && repo_version=`echo ${keyword#*revision=} | sed 's/\"//g'`
95 done
96
97 if [ -d "$repo_path" ]; then
98 pushd $repo_path > /dev/null
99 echo -e "\nProject $repo_name"
100 git log $repo_version..HEAD
101 popd > /dev/null
102 fi
Kelvin Zhang81eb1b12022-06-09 14:35:18 +0800103 done < $DIFF_FULL_MANIFEST
Kelvin Zhange98bd542022-09-07 15:43:58 +0800104 echo -e "================\n"
kelvin.zhang5fd25982022-03-04 09:43:01 +0800105 else
Kelvin Zhange98bd542022-09-07 15:43:58 +0800106 echo -e "======== Nothing changed since last build ========\n"
kelvin.zhang5fd25982022-03-04 09:43:01 +0800107 fi
Kelvin Zhang81eb1b12022-06-09 14:35:18 +0800108 rm -f $DIFF_FULL_MANIFEST
109fi
110
Kelvin Zhang6461d482022-09-09 15:49:31 +0800111# Generate Jenkins trigger
112source gen_jenkins_trigger.sh
kelvin.zhang5fd25982022-03-04 09:43:01 +0800113
Kelvin Zhangc07a8db2022-09-06 21:06:31 +0800114# Cherry pick patches
Kelvin Zhang0f582792022-08-31 18:52:20 +0800115source scripts/cherry_pick.sh
kelvin.zhang2219b412022-03-04 16:44:41 +0800116
shijie.xiongec398682022-09-07 15:57:54 +0800117if [[ "$MANIFEST_BRANCH" == "$BRANCH_NAME" ]]; then
118 source scripts/build_all_pkg.sh
kelvin.zhang5fd25982022-03-04 09:43:01 +0800119else
Kelvin Zhang727c3e32022-08-31 20:57:37 +0800120 source scripts/build_all.sh
kelvin.zhang5fd25982022-03-04 09:43:01 +0800121fi