Skip to content

Commit

Permalink
Multithread the checkout script NOAA-EMC#1953
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidHuber-NOAA committed Oct 23, 2023
1 parent 08ce4f8 commit c8534c8
Showing 1 changed file with 18 additions and 12 deletions.
30 changes: 18 additions & 12 deletions sorc/checkout.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function checkout() {
# logdir [default: $(pwd)]: where you want logfiles written
# CLEAN [default: NO]: whether to delete existing directories and create a fresh clone
#
# Usage: checkout <dir> <remote> <version>
# Usage: checkout <dir> <remote> <cpus> <version>
#
# Arguments
# dir: Directory for the clone
Expand All @@ -48,7 +48,8 @@ function checkout() {
dir="$1"
remote="$2"
version="$3"
recursive=${4:-"YES"}
cpus="$4"
recursive=${5:-"YES"}

name=$(echo "${dir}" | cut -d '.' -f 1)
echo "Performing checkout of ${name}"
Expand Down Expand Up @@ -90,7 +91,7 @@ function checkout() {
fi
if [[ "${recursive}" == "YES" ]]; then
echo "|-- Updating submodules (if any)"
git submodule update --init --recursive >> "${logfile}" 2>&1
git submodule update --init --recursive -j "${cpus}" >> "${logfile}" 2>&1
status=$?
if ((status > 0)); then
echo " WARNING: Error while updating submodules of ${name}"
Expand Down Expand Up @@ -149,25 +150,30 @@ source "${topdir}/../workflow/gw_setup.sh"

# The checkout version should always be a speciifc commit (hash or tag), not a branch
errs=0
checkout "wxflow" "https://github.com/NOAA-EMC/wxflow" "528f5ab" ; errs=$((errs + $?))
checkout "gfs_utils.fd" "https://github.com/NOAA-EMC/gfs-utils" "a283262" ; errs=$((errs + $?))
checkout "ufs_utils.fd" "https://github.com/ufs-community/UFS_UTILS.git" "72a0471" ; errs=$((errs + $?))
checkout "ufs_model.fd" "https://github.com/ufs-community/ufs-weather-model" "${ufs_model_hash:-4d05445}" ; errs=$((errs + $?))
checkout "verif-global.fd" "https://github.com/NOAA-EMC/EMC_verif-global.git" "c267780" ; errs=$((errs + $?))
checkout "ufs_model.fd" "https://github.com/ufs-community/ufs-weather-model" "${ufs_model_hash:-4d05445}" "8" ; errs=$((errs + $?))

checkout "wxflow" "https://github.com/NOAA-EMC/wxflow" "528f5ab" "1" &
checkout "gfs_utils.fd" "https://github.com/NOAA-EMC/gfs-utils" "a283262" "1" &
checkout "ufs_utils.fd" "https://github.com/ufs-community/UFS_UTILS.git" "72a0471" "1" &
checkout "verif-global.fd" "https://github.com/NOAA-EMC/EMC_verif-global.git" "c267780" "1" &

if [[ ${checkout_gsi} == "YES" ]]; then
checkout "gsi_enkf.fd" "https://github.com/NOAA-EMC/GSI.git" "ca19008" "NO"; errs=$((errs + $?))
checkout "gsi_enkf.fd" "https://github.com/NOAA-EMC/GSI.git" "ca19008" "1" "NO" &
fi

if [[ ${checkout_gdas} == "YES" ]]; then
checkout "gdas.cd" "https://github.com/NOAA-EMC/GDASApp.git" "d347d22"; errs=$((errs + $?))
checkout "gdas.cd" "https://github.com/NOAA-EMC/GDASApp.git" "d347d22" "1" &
fi

if [[ ${checkout_gsi} == "YES" || ${checkout_gdas} == "YES" ]]; then
checkout "gsi_utils.fd" "https://github.com/NOAA-EMC/GSI-Utils.git" "322cc7b"; errs=$((errs + $?))
checkout "gsi_monitor.fd" "https://github.com/NOAA-EMC/GSI-Monitor.git" "45783e3"; errs=$((errs + $?))
checkout "gsi_utils.fd" "https://github.com/NOAA-EMC/GSI-Utils.git" "322cc7b" "1" &
checkout "gsi_monitor.fd" "https://github.com/NOAA-EMC/GSI-Monitor.git" "45783e3" "1" &
fi

for checkout_pid in $(jobs -p); do
wait "${checkout_pid}" || errs=$((errs + $?))
done

if (( errs > 0 )); then
echo "WARNING: One or more errors encountered during checkout process, please check logs before building"
fi
Expand Down

0 comments on commit c8534c8

Please sign in to comment.