diff options
Diffstat (limited to 'tcwg_chromium-build.sh')
-rwxr-xr-x | tcwg_chromium-build.sh | 115 |
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 ] \ |