| #!/bin/bash |
| |
| if [[ -f repos.conf ]]; then |
| source repos.conf |
| fi |
| |
| # Check out the repository of the specified package from Gerrit or a local repository. |
| # |
| # Parameters: |
| # name of package used in repository names (e.g., ndn-cxx or NFD) |
| # name of package used in variable names (e.g., NDNCXX or NFD) |
| # |
| # This function changes the working directory to the directory containing the package source. |
| prepare_repo() { |
| local PACKAGE_NAME=$1 |
| local PACKAGE_VAR=PACKAGE_$2 |
| local PACKAGE_SOURCE=${!PACKAGE_VAR} |
| if [[ -z $PACKAGE_SOURCE ]]; then |
| PACKAGE_SOURCE=branch:master |
| fi |
| |
| local SOURCE=${PACKAGE_SOURCE%%:*} |
| local LOCATION=${PACKAGE_SOURCE#*:} |
| if [[ $SOURCE == branch || $SOURCE == gerrit ]]; then |
| if [[ $SOURCE == branch ]]; then |
| local GERRIT_BRANCH=$LOCATION |
| else |
| local GERRIT_CHANGE=${LOCATION%%,*} |
| local GERRIT_PATCHSET=${LOCATION#*,} |
| local GERRIT_BRANCH="refs/changes/$(printf '%02d' $(($GERRIT_CHANGE % 100)))/$GERRIT_CHANGE/$GERRIT_PATCHSET" |
| fi |
| |
| echo "Checking out from Gerrit: $GERRIT_BRANCH" |
| cd prepare |
| git init $PACKAGE_NAME |
| cd $PACKAGE_NAME |
| git pull --depth 1 https://gerrit.named-data.net/$PACKAGE_NAME $GERRIT_BRANCH |
| elif [[ $SOURCE == local ]]; then |
| echo "Using local copy of $PACKAGE_NAME" |
| if [[ ! -d packages/$PACKAGE_NAME ]]; then |
| echo "ERROR: No local copy of package $PACKAGE_NAME could be found in prepare" |
| exit 1 |
| fi |
| cp -r packages/$PACKAGE_NAME prepare |
| cd prepare/$PACKAGE_NAME |
| else |
| echo "SYNTAX ERROR: Package $PACKAGE_NAME has incorrectly formatted source: $PACKAGE_SOURCE" |
| exit 2 |
| fi |
| } |