blob: 3987db62afa8a02d71fcd3b11d19f45faa50c60c [file] [log] [blame]
Leonardo Sandoval9dfdd1b2020-08-06 17:08:11 -05001#!/usr/bin/env bash
Zelalem917b43e2020-08-04 11:39:55 -05002#
Leonardo Sandoval579c7372020-10-23 15:23:32 -05003# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
Zelalem917b43e2020-08-04 11:39:55 -05004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8# Push the updated master from local to the selected remote
9#
10# $1 = git remote human readable name
11# $2 = git remote URL
12sync_repo()
13{
14 local result
15
16 echo Pushing to "$1"...
17 git push --tags $2 master
18 result=$?
19 if [ $result != 0 ]
20 then
21 echo Pushing to $1 FAILED!
22 else
23 echo Pushing to $1 SUCCEEDED!
24 fi
25 return $result
26}
27
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -050028# Clone the selected repo, including submodules, if applicable, from tf.org
Zelalem917b43e2020-08-04 11:39:55 -050029#
30# Some variables utilised inside this function come from utils.sh
31#
32# $1 = repo to clone
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -050033# $2 = additional parameters passed to clone command
Zelalem917b43e2020-08-04 11:39:55 -050034clone_repo()
35{
36 local repo_url
37 local repo_name
38
39 case $1 in
40 trusted-firmware-a)
41 repo_url=$tf_src_repo_url
42 repo_name="TF-A"
43 ;;
44 tf-a-tests)
45 repo_url=$tftf_src_repo_url
46 repo_name="TF-A-Tests"
47 ;;
Jimmy Brisson29ca0a02020-09-22 16:15:35 -050048 tf-a-ci-scripts)
49 repo_url=$ci_src_repo_url
50 repo_name="TF-A-CI-Scripts"
51 ;;
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -050052 hafnium)
53 repo_url=$spm_src_repo_url
54 repo_name="hafnium"
55 ;;
Zelalem917b43e2020-08-04 11:39:55 -050056 *)
57 echo "ERROR: Unknown repo to be cloned. sync.sh failed!"
58 exit 1
59 ;;
60 esac
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -050061
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -050062 case $2 in
63 --recurse-submodules)
64 ;;
Madhukar Pappireddy993e6432023-10-26 08:30:03 -050065 "")
66 ;;
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -050067 *)
68 echo "ERROR: Unknown parameter passed to clone command. sync.sh failed!"
69 exit 1
70 ;;
71 esac
72
Zelalem393f2a12020-10-15 09:27:46 -050073 # Remove old tree if it exists
74 if [ -d $1 ]; then
75 rm -rf "$1"
Zelalem917b43e2020-08-04 11:39:55 -050076 fi
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -050077
Zelalem393f2a12020-10-15 09:27:46 -050078 # Fresh clone
79 echo Cloning $repo_name from trustedfirmware.org...
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -050080 git clone $2 $repo_url
Zelalem917b43e2020-08-04 11:39:55 -050081}
82
83# Pull changes from tf.org to the local repo
84#
85# $1 = repo to update. It must be the same with the directory name
86pull_changes()
87{
88 cd $1
89 echo Pulling $1 from trustedfirmware.org...
90 git remote update --prune
91 git checkout master
92 git merge --ff-only origin/master
93 cd - > /dev/null
94}
95
96# exit if anything fails
97set -e
98
99# Source this file to get TF-A and TF-A-Tests repo URLs
100source "$CI_ROOT/utils.sh"
101
102clone_repo trusted-firmware-a
103clone_repo tf-a-tests
Jimmy Brisson29ca0a02020-09-22 16:15:35 -0500104clone_repo tf-a-ci-scripts
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500105clone_repo hafnium --recurse-submodules
Zelalem917b43e2020-08-04 11:39:55 -0500106
107pull_changes trusted-firmware-a
108pull_changes tf-a-tests
Jimmy Brisson29ca0a02020-09-22 16:15:35 -0500109pull_changes tf-a-ci-scripts
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500110pull_changes hafnium/project/reference
111pull_changes hafnium/prebuilts
112pull_changes hafnium/driver/linux
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -0500113pull_changes hafnium
Zelalem917b43e2020-08-04 11:39:55 -0500114
115# stop exiting automatically
116set +e
117
118# Update TF-A remotes
119cd trusted-firmware-a
120sync_repo GitHub https://$GH_USER:$GH_PASSWORD@github.com/ARM-software/arm-trusted-firmware.git
121github=$?
122sync_repo "internal TF-A Gerrit" $tf_arm_gerrit_repo
123tfa_gerrit=$?
124
125# Update TF-A-Tests
126cd ../tf-a-tests
127sync_repo "internal TF-A-Tests Gerrit" $tftf_arm_gerrit_repo
128tftf_gerrit=$?
129
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -0500130# Update TF-A-CI-Scripts
Jimmy Brisson29ca0a02020-09-22 16:15:35 -0500131cd ../tf-a-ci-scripts
132sync_repo "internal TF-A-CI-Scripts Gerrit" $ci_arm_gerrit_repo
133ci_gerrit=$?
134
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500135# Update project/reference submodule of Hafnium
136cd ../hafnium/project/reference
137sync_repo "internal Hafnium project/reference Gerrit" $spm_proj_ref_arm_gerrit_repo
138spm_proj_ref_gerrit=$?
139
140# Update prebuilts submodule of Hafnium
141cd ../../prebuilts
142sync_repo "internal Hafnium prebuilts Gerrit" $spm_prebuilts_arm_gerrit_repo
143spm_prebuilts_gerrit=$?
144
145# Update driver/linux submodule of Hafnium
146cd ../driver/linux
147sync_repo "internal Hafnium driver/linux Gerrit" $spm_driver_linux_arm_gerrit_repo
148spm_driver_linux_gerrit=$?
149
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -0500150# Update Hafnium
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500151cd ../../
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -0500152sync_repo "internal Hafnium Gerrit" $spm_arm_gerrit_repo
153spm_gerrit=$?
154
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500155if [ $github != 0 -o $tfa_gerrit != 0 -o $tftf_gerrit != 0 -o $ci_gerrit != 0 -o $spm_gerrit != 0 ] ||
156 [ $spm_proj_ref_gerrit != 0 -o $spm_prebuilts_gerrit != 0 -o $spm_driver_linux_gerrit != 0 ];
Zelalem917b43e2020-08-04 11:39:55 -0500157then
158 exit 1
159fi