#!/bin/bash set -ex # Must be provided by user RELEASE_DIR=$(realpath $1) PATCHES_DIR="$RELEASE_DIR/patches/" UPSTREAM_DIR="$RELEASE_DIR/upstream/" DEFAULT_DEPTH="100" NO_DEPTH="-1" # Format: <upstream repo name>@ # <upstream repo url>@ # <upstream branch>@ # <base revision on chosen upstream branch>@ # <clone depth> REVS_MAP=("DeepRecSys@https://github.com/harvard-acc@master@1383176@$NO_DEPTH" "dlrm@https://github.com/facebookresearch@main@4a9d0182@$NO_DEPTH" "pytorch@https://github.com/pytorch@release/2.0@c263bd43e8@$DEFAULT_DEPTH" "gramine@https://github.com/gramineproject@master@37550e1@$NO_DEPTH" "qemu@https://github.com/qemu@v7.2.0@b67b00e@$DEFAULT_DEPTH" "DRAMsim3@https://github.com/umd-memsys@master@2981759@$DEFAULT_DEPTH" "linux@https://git.kernel.org/pub/scm/linux/kernel/git/stable@v6.1.6@38f3ee126@$DEFAULT_DEPTH") PNM_LIB_DIR="PNMLibrary" rm -fr $UPSTREAM_DIR && mkdir -p $UPSTREAM_DIR cd $RELEASE_DIR setup_pnm_lib_repo() { (cd $PNM_LIB_DIR; patch -p1 < $PATCHES_DIR/$PNM_LIB_DIR/*.patch) } setup_upstream_repo() { URL="${2}/${1}" DEPTH_OPT="--depth $5" if [ "x$5" = "x$NO_DEPTH" ]; then DEPTH_OPT="" fi (cd $UPSTREAM_DIR && git clone $URL -b $3 $DEPTH_OPT && cd $1 && git checkout $4 && \ git checkout -b pnm && git am $PATCHES_DIR/$1/*.patch) } setup_pnm_lib_repo for rec in "${REVS_MAP[@]}"; do REPO=$(echo "$rec" | awk -F "@" '{print $1}') UPSTREAM_PREFIX=$(echo "$rec" | awk -F "@" '{print $2}') BRANCH=$(echo "$rec" | awk -F "@" '{print $3}') REV=$(echo "$rec" | awk -F "@" '{print $4}') DEPTH=$(echo "$rec" | awk -F "@" '{print $5}') setup_upstream_repo $REPO $UPSTREAM_PREFIX $BRANCH $REV $DEPTH done