blob: 4924b7538dbdddb10fc5ccac50ecdbf34e3d6116 [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 ;;
65 *)
66 echo "ERROR: Unknown parameter passed to clone command. sync.sh failed!"
67 exit 1
68 ;;
69 esac
70
Zelalem393f2a12020-10-15 09:27:46 -050071 # Remove old tree if it exists
72 if [ -d $1 ]; then
73 rm -rf "$1"
Zelalem917b43e2020-08-04 11:39:55 -050074 fi
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -050075
Zelalem393f2a12020-10-15 09:27:46 -050076 # Fresh clone
77 echo Cloning $repo_name from trustedfirmware.org...
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -050078 git clone $2 $repo_url
Zelalem917b43e2020-08-04 11:39:55 -050079}
80
81# Pull changes from tf.org to the local repo
82#
83# $1 = repo to update. It must be the same with the directory name
84pull_changes()
85{
86 cd $1
87 echo Pulling $1 from trustedfirmware.org...
88 git remote update --prune
89 git checkout master
90 git merge --ff-only origin/master
91 cd - > /dev/null
92}
93
94# exit if anything fails
95set -e
96
97# Source this file to get TF-A and TF-A-Tests repo URLs
98source "$CI_ROOT/utils.sh"
99
100clone_repo trusted-firmware-a
101clone_repo tf-a-tests
Jimmy Brisson29ca0a02020-09-22 16:15:35 -0500102clone_repo tf-a-ci-scripts
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500103clone_repo hafnium --recurse-submodules
Zelalem917b43e2020-08-04 11:39:55 -0500104
105pull_changes trusted-firmware-a
106pull_changes tf-a-tests
Jimmy Brisson29ca0a02020-09-22 16:15:35 -0500107pull_changes tf-a-ci-scripts
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500108pull_changes hafnium/project/reference
109pull_changes hafnium/prebuilts
110pull_changes hafnium/driver/linux
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -0500111pull_changes hafnium
Zelalem917b43e2020-08-04 11:39:55 -0500112
113# stop exiting automatically
114set +e
115
116# Update TF-A remotes
117cd trusted-firmware-a
118sync_repo GitHub https://$GH_USER:$GH_PASSWORD@github.com/ARM-software/arm-trusted-firmware.git
119github=$?
120sync_repo "internal TF-A Gerrit" $tf_arm_gerrit_repo
121tfa_gerrit=$?
122
123# Update TF-A-Tests
124cd ../tf-a-tests
125sync_repo "internal TF-A-Tests Gerrit" $tftf_arm_gerrit_repo
126tftf_gerrit=$?
127
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -0500128# Update TF-A-CI-Scripts
Jimmy Brisson29ca0a02020-09-22 16:15:35 -0500129cd ../tf-a-ci-scripts
130sync_repo "internal TF-A-CI-Scripts Gerrit" $ci_arm_gerrit_repo
131ci_gerrit=$?
132
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500133# Update project/reference submodule of Hafnium
134cd ../hafnium/project/reference
135sync_repo "internal Hafnium project/reference Gerrit" $spm_proj_ref_arm_gerrit_repo
136spm_proj_ref_gerrit=$?
137
138# Update prebuilts submodule of Hafnium
139cd ../../prebuilts
140sync_repo "internal Hafnium prebuilts Gerrit" $spm_prebuilts_arm_gerrit_repo
141spm_prebuilts_gerrit=$?
142
143# Update driver/linux submodule of Hafnium
144cd ../driver/linux
145sync_repo "internal Hafnium driver/linux Gerrit" $spm_driver_linux_arm_gerrit_repo
146spm_driver_linux_gerrit=$?
147
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -0500148# Update Hafnium
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500149cd ../../
Madhukar Pappireddy4123cfe2023-09-11 11:10:33 -0500150sync_repo "internal Hafnium Gerrit" $spm_arm_gerrit_repo
151spm_gerrit=$?
152
Madhukar Pappireddy4b3dc762023-10-03 10:49:11 -0500153if [ $github != 0 -o $tfa_gerrit != 0 -o $tftf_gerrit != 0 -o $ci_gerrit != 0 -o $spm_gerrit != 0 ] ||
154 [ $spm_proj_ref_gerrit != 0 -o $spm_prebuilts_gerrit != 0 -o $spm_driver_linux_gerrit != 0 ];
Zelalem917b43e2020-08-04 11:39:55 -0500155then
156 exit 1
157fi