blob: 4f54d94340a280c10bc884d811acd90a98ac698e [file] [log] [blame]
Kelvin Zhang14bca5e2021-12-15 19:19:35 +08001#!/bin/bash
yang.li09520922022-01-12 15:51:51 +08002#
yang.liffa60e52022-01-11 14:38:56 +08003# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
yang.li09520922022-01-12 15:51:51 +08004#
yang.liffa60e52022-01-11 14:38:56 +08005# SPDX-License-Identifier: MIT
yang.li09520922022-01-12 15:51:51 +08006#
yang.liffa60e52022-01-11 14:38:56 +08007
Kelvin Zhang09786122022-02-11 15:56:08 +08008# usage:./scripts/build_all.sh at rtos sdk root dir
Kelvin Zhang14bca5e2021-12-15 19:19:35 +08009
Kelvin Zhang23075212022-02-11 18:26:18 +080010LOCAL_DOC_PATH="$PWD/output/docs/html"
Kelvin Zhang69dc9fb2022-02-18 16:44:04 +080011REMOTE_DOC_PATH="ftp://platform:platform@10.68.11.163:2222/Documents/Ecosystem/RTOS/rtos-sdk/"
Kelvin Zhang14bca5e2021-12-15 19:19:35 +080012
Kelvin Zhang09786122022-02-11 15:56:08 +080013# Build and upload document
Kelvin Zhang1fea9142022-02-11 18:19:56 +080014update_docoment()
15{
16 find -type f | while read filename
17 do
Kelvin Zhang69dc9fb2022-02-18 16:44:04 +080018 curl -s --ftp-create-dirs -T $filename $REMOTE_DOC_PATH/$filename
Kelvin Zhang1fea9142022-02-11 18:19:56 +080019 if [ $? -ne 0 ]; then
20 return 1;
21 fi
22 done
23}
24
Kelvin Zhang09786122022-02-11 15:56:08 +080025if [[ "$SUBMIT_TYPE" == "daily" ]]; then
26 make docs
kelvin.zhang77dd5442022-02-14 10:26:15 +080027 if [ -d $LOCAL_DOC_PATH ]; then
Kelvin Zhang69dc9fb2022-02-18 16:44:04 +080028 pushd $LOCAL_DOC_PATH > /dev/null
Kelvin Zhang23075212022-02-11 18:26:18 +080029 update_docoment
30 if [ $? -ne 0 ]; then
31 echo "Failed to update document"
32 else
33 echo "Document updated!"
34 fi
Kelvin Zhang69dc9fb2022-02-18 16:44:04 +080035 popd > /dev/null
Kelvin Zhang1fea9142022-02-11 18:19:56 +080036 else
Kelvin Zhang23075212022-02-11 18:26:18 +080037 echo "$LOCAL_DOC_PATH not exist!"
Kelvin Zhang7f0d2e02022-02-14 10:16:35 +080038 fi
Kelvin Zhang09786122022-02-11 15:56:08 +080039fi
40
Kelvin Zhang69dc9fb2022-02-18 16:44:04 +080041BUILD_DATE=`date +%F`
42FIRMWARE_SERVER=firmware.amlogic.com
43
44publish_firmware()
45{
46 LOCAL_FIRMWARE_PATH=output/$BOARD-$PRODUCT
47 REMOTE_FIRMWARE_PATH=/data/shanghai/image/RTOS/$BUILD_DATE/$BOARD-$PRODUCT
48
49 if [ -d $LOCAL_FIRMWARE_PATH ]
50 then
51
52 ssh -n autobuild@$FIRMWARE_SERVER "mkdir -p $REMOTE_FIRMWARE_PATH"
53 if [ $? -ne 0 ]
54 then
55 echo "Failed to create remote path! $REMOTE_FIRMWARE_PATH"
56 exit 1
57 else
58 echo "Remote path: $REMOTE_FIRMWARE_PATH"
59 fi
60 scp build.log autobuild@$FIRMWARE_SERVER:$REMOTE_FIRMWARE_PATH
61 pushd $LOCAL_FIRMWARE_PATH > /dev/null
62 tar -cJf $KERNEL.tar.xz $KERNEL/$KERNEL.*
63 LOCAL_FILES="manifest.xml $KERNEL.tar.xz"
64 scp $LOCAL_FILES autobuild@$FIRMWARE_SERVER:$REMOTE_FIRMWARE_PATH
65 scp -r images autobuild@$FIRMWARE_SERVER:$REMOTE_FIRMWARE_PATH
66 popd > /dev/null
67 echo "Publish success."
68 else
69 echo "No local path! $LOCAL_FIRMWARE_PATH"
70 fi
71}
72
kelvin.zhang5fd25982022-03-04 09:43:01 +080073cherry_pick()
74{
kelvin.zhang1d43cea2022-03-04 16:24:10 +080075 [ -z "$CURRENT_MANIFEST_FILE" ] && CURRENT_MANIFEST_FILE="manifest.xml"
76 [ ! -f $CURRENT_MANIFEST_FILE ] && repo manifest -r -o $CURRENT_MANIFEST_FILE
kelvin.zhang5fd25982022-03-04 09:43:01 +080077
kelvin.zhang5fd25982022-03-04 09:43:01 +080078 echo "$GIT_CHERRY_PICK" | while read line
79 do
80 pattern=":29418/"
81 for keyword in $line; do
82 if [[ $keyword == *$pattern* ]]; then
83 GIT_PROJECT=`echo ${keyword#*${pattern}} | sed 's/\"//g' | sed 's/\/>//g'`
84 break;
85 fi
86 done
87
88 echo -e "\n======== Applying manual patch on Project $GIT_PROJECT ========"
89 keyline=`grep "name=\"$GIT_PROJECT\"" $CURRENT_MANIFEST_FILE`
90
91 for keyword in $keyline; do
92 if [[ $keyword == path=* ]]; then
93 repo_path=`echo ${keyword#*path=} | sed 's/\"//g'`
94 break;
95 fi
96 done
97
98 if [ -d "$repo_path" ]; then
99 pushd $repo_path > /dev/null
100 cmd=`echo $line | sed -e 's/ssh:\/\/.*@scgit.amlogic.com/ssh:\/\/scgit.amlogic.com/'`
101 eval $cmd
102 if [ "$?" -ne 0 ]; then
103 echo -e "========= Applying patch failed! =========\n"
104 exit 1
105 fi
106 popd > /dev/null
107 else
108 echo "No such directory! $repo_path"
109 exit 1
110 fi
111 echo -e "======== Done ========\n"
112 done
113}
114
115if [ -n "$GIT_CHERRY_PICK" ]; then
116 cherry_pick
kelvin.zhang5fd25982022-03-04 09:43:01 +0800117fi
118
Kelvin Zhang0f465a02022-02-11 15:39:54 +0800119# Build all projects
Kelvin Zhang69dc9fb2022-02-18 16:44:04 +0800120BUILD_COMBINATION="$PWD/scripts/build_combination.txt"
121
Kelvin Zhang14bca5e2021-12-15 19:19:35 +0800122i=0
123while IFS= read -r LINE; do
124 [[ "$i" -ne 0 ]] && echo ""
125 i=$((i+1))
Kelvin Zhang14bca5e2021-12-15 19:19:35 +0800126 source scripts/env.sh $LINE
Xiaohu.Huangb6ad9762022-02-11 17:49:09 +0800127 [ "$?" -ne 0 ] && echo "Failed to source scripts/env.sh!" && exit 1
kelvin.zhang05852a72022-01-19 10:30:24 +0800128 make distclean
Xiaohu.Huangb6ad9762022-02-11 17:49:09 +0800129 [ "$?" -ne 0 ] && echo "Failed to make distclean!" && exit 2
bin.chene9875112022-01-18 15:00:50 +0800130 make
Xiaohu.Huangb6ad9762022-02-11 17:49:09 +0800131 [ "$?" -ne 0 ] && echo "Failed to make!" && exit 3
Xiaohu.Huang7dac8722022-01-18 16:21:29 +0800132 if [[ "$SUBMIT_TYPE" == "daily" ]]; then
Kelvin Zhang69dc9fb2022-02-18 16:44:04 +0800133 publish_firmware
Xiaohu.Huangb6ad9762022-02-11 17:49:09 +0800134 [ "$?" -ne 0 ] && echo "Failed to source scripts/scp.sh!" && exit 4
bin.chen439b9342022-01-18 13:35:42 +0800135 fi
Kelvin Zhang14bca5e2021-12-15 19:19:35 +0800136done < "$BUILD_COMBINATION"
kelvin.zhangf59bf9a2022-02-16 10:41:47 +0800137
138echo "Build completed!"