summaryrefslogtreecommitdiff
path: root/tcwg_chromium-build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tcwg_chromium-build.sh')
-rwxr-xr-xtcwg_chromium-build.sh115
1 files changed, 70 insertions, 45 deletions
diff --git a/tcwg_chromium-build.sh b/tcwg_chromium-build.sh
index 7b176679..fcbc838d 100755
--- a/tcwg_chromium-build.sh
+++ b/tcwg_chromium-build.sh
@@ -9,6 +9,8 @@ scripts=$(dirname $0)
. $scripts/round-robin.sh
# shellcheck source=ci-autotest.sh
. $scripts/ci-autotest.sh
+# shellcheck source=tcwg-config.sh
+. $scripts/tcwg-config.sh
workspace="${workspace-$(pwd)}"
@@ -23,9 +25,6 @@ declare -A deps_branch
# Execution mode: build or bisect
rr[mode]="${rr[mode]-build}"
-# shellcheck source=tcwg_chromium-config.sh
-. $scripts/tcwg_chromium-config.sh
-
# Set custom revision for one of the projects, and use baseline revisions
# for all other projects.
rr[baseline_branch]="${rr[baseline_branch]-linaro-local/ci/${rr[ci_project]}/${rr[ci_config]}}"
@@ -39,6 +38,11 @@ rr[minor]=0
# fast_demo mode
fast_demo="${fast_demo-false}"
+# Initialize the global vars : deps_url, deps_branch, deps_dir, ..
+declare -A deps_dir deps_branch
+tcwg_config_init
+
+
# 1) components list
rr[components_to_update]="${rr[components_to_update]-}"
@@ -90,9 +94,11 @@ for dep in ${rr[components]}; do
fi
done
-# create rr[${c}_git]=baseline for any other components
+# create rr[${c}_git]="$default_component_rev" for any other components
+# default_component_rev could be for ex : "baseline"(default) "lastvalid" "main", ..
+default_component_rev="${default_component_rev-baseline}"
for dep in ${rr[components]}; do
- [[ -v rr[${dep}_git] ]] || rr[${dep}_git]="baseline"
+ [[ -v rr[${dep}_git] ]] || rr[${dep}_git]="$default_component_rev"
done
# 3) and dump for DEBUG
@@ -141,19 +147,21 @@ get_sources()
if [ ! -d $PWD/src ] || $force_fetch; then
/bin/rm -fr $PWD/src $PWD/.gclient $PWD/.gclient_entries $PWD/.gclient_previous_sync_commits
-
fetch --nohooks chromium
+ else
+ git -C src reset --hard
+ git -C src clean -f
+ git -C src rebase-update
fi
-
cd $workspace/src
+ /bin/rm -fr out/Default
+
#
# for fast_demo mode, we skip this
- if ! $fast_demo; then
- gclient revinfo > REVINFO.BEF
- fi
+ $fast_demo || gclient revinfo > REVINFO.BEF
# Updating individual components from rr[xxx_git]
(
@@ -163,30 +171,47 @@ get_sources()
for dep in ${rr[components]}; do
- # update artifacts/git/xxx_rev from rr[xxx_git] if necessary
- if [ x"${rr[${dep}_git]}" != x"baseline" ]; then
- dep_url="${rr[${dep}_git]%#*}"
- dep_rev="${rr[${dep}_git]#*#}"
-
- # resolve dep_rev if necessary
- git_component_cmd "$dep" fetch origin "$dep_rev"
- dep_rev2=$(git_component_cmd "$dep" rev-parse FETCH_HEAD)
-
- # set git repo
- echo "UPDATING [$dep] : $dep_rev -> $$dep_rev2"
- echo "$dep_rev2" | set_current_git ${dep}_rev
- echo "$dep_url" | set_current_git ${dep}_url
- fi
-
- # and update sources from artifacts/git/xxx_rev
- dep_dir="$(get_component_dir ${dep})"
- dep_rev=$(get_current_git ${dep}_rev)
-
- if ! git_component_cmd "$dep" cat-file -e "$dep_rev^{commit}"; then
- git_component_cmd "$dep" fetch origin "$dep_rev"
- fi
- git_component_cmd "$dep" checkout $dep_rev
- revision_args+=( "--revision=$dep_dir@$dep_rev" )
+ # fetch origin on this component to make sure we have up-to-date branches
+ $fast_demo || git_component_cmd "$dep" fetch origin
+
+ # update artifacts/git/xxx_rev from rr[xxx_git] unless it is a CI keyword
+ local dep_url dep_rev dep_dir
+ dep_dir=$(get_component_dir ${dep})
+ case "${rr[${dep}_git]}" in
+ baseline)
+ # for the component, set the git revision specified in the baseline
+ dep_url="$(get_baseline_git ${dep}_url)"
+ dep_rev="$(get_baseline_git ${dep}_rev)"
+ ;;
+ lastvalid)
+ # gclient getdep will get the proper version from the DEPS file
+ dep_url="$(git_component_cmd "$dep" remote get-url origin)"
+ dep_rev="$(cd $workspace/src && gclient getdep --revision=$dep_dir)"
+ ;;
+ *) # one of the following suyntaxes:
+ # <git-repository>#<git-branch> or <git-repository>#<git-sha1>
+ # <git-branch> or <git-sha1>
+ if [[ "${rr[${dep}_git]}" =~ .*\#.* ]]; then
+ dep_url="${rr[${dep}_git]%#*}"
+ dep_rev="${rr[${dep}_git]#*#}"
+ else
+ dep_url="$(get_baseline_git ${dep}_url)"
+ dep_rev="${rr[${dep}_git]}"
+ fi
+
+ # resolve dep_rev if necessary
+ git_component_cmd "$dep" fetch origin "$dep_rev"
+ dep_rev=$(git_component_cmd "$dep" rev-parse FETCH_HEAD)
+ ;;
+ esac
+
+ # set git repo
+ echo "UPDATING [$dep] : ${rr[${dep}_git]} -> $dep_rev"
+ echo "$dep_rev" | set_current_git ${dep}_rev
+ echo "$dep_url" | set_current_git ${dep}_url
+
+ # prepare gclient setdep
+ revision_args+=( "--revision=$dep_dir@$dep_rev" )
# DEBUG
echo "== $PWD/${rr[top_artifacts]}/git/${dep}_rev"
@@ -194,20 +219,23 @@ get_sources()
git_component_cmd "$dep" log -1 --oneline
done
- if ! $fast_demo && [ ! -z "${revision_args[*]}" ] ; then
- cd $workspace/src
- gclient setdep "${revision_args[@]}"
- fi
+ cd $workspace/src
+ gclient setdep "${revision_args[@]}"
)
+ # update all sources
+ $fast_demo || gclient revinfo > REVINFO.AFT
+ gclient sync --nohooks
+ gclient runhooks
+
+ cp DEPS $run_step_artifacts/
+
# for fast_demo mode, we stop here
if $fast_demo; then
return
fi
- gclient revinfo > REVINFO.AFT
-
- #
+ # Install necessary packages
sudo apt-get update
sudo env DEBIAN_FRONTEND=noninteractive apt-get install keyboard-configuration
@@ -215,10 +243,7 @@ get_sources()
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm64
- gclient sync --nohooks
-
- gclient runhooks
-
+ # Generate ninja files for the build
gn gen out/Default
[ "$(grep target_cpu out/Default/args.gn | wc -l)" -ne 0 ] \