fix: don't check presence of `GERRIT_PROJECT_PREFIX`

In POSIX shell and derivatives like Bash, the `${FOO?}` parameter
expansion expands the `FOO` variable if it's defined, and triggers a
"parameter not set" error if it isn't.

We use this to sanity-check our use of the `GERRIT_PROJECT_PREFIX`
environment variable, which is expected to represent the site-specific
Gerrit project prefix ("" on production, "next/" on staging). This
environment variable is defined globally by our CloudBees bundles.

Unfortunately, Jenkins appears to skip exporting environment variables
with empty values to processes it executes (see [here][1]), which means
that this environment variable is unset on the production site.

This change works around this behaviour by removing the sanity-checks,
instead expanding to an empty variable if the variable is undefined
using the `${FOO:-}` parameter expansion.

[1]: https://community.jenkins.io/t/environment-variables-with-empty-values-are-not-passed-to-process-jenkins-exec/9949

Change-Id: I5c2fd0bec6bfcdb23024e3e02802f9842f2970f1
Signed-off-by: Chris Kay <chris.kay@arm.com>
diff --git a/rf-a-main.yaml b/rf-a-main.yaml
index 7244cb0..88a482f 100644
--- a/rf-a-main.yaml
+++ b/rf-a-main.yaml
@@ -106,7 +106,7 @@
           RFA_REFSPEC=${{RFA_REFSPEC}}
           GERRIT_REFSPEC=${{GERRIT_REFSPEC}}
           GERRIT_BRANCH=${{GERRIT_BRANCH}}
-          TF_GERRIT_PROJECT=${{GERRIT_PROJECT_PREFIX?}}TF-A/trusted-firmware-a
+          TF_GERRIT_PROJECT=${{GERRIT_PROJECT_PREFIX:-}}TF-A/trusted-firmware-a
           TF_GERRIT_REFSPEC=${{TF_GERRIT_REFSPEC}}
           EOF
       - multijob:
diff --git a/scripts/clone.sh b/scripts/clone.sh
index b59cea1..7611fb4 100755
--- a/scripts/clone.sh
+++ b/scripts/clone.sh
@@ -22,31 +22,31 @@
 export GIT_SSH_COMMAND="ssh ${SSH_PARAMS}"
 
 # Defaults Projects
-TF_GERRIT_PROJECT="${TF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-A/trusted-firmware-a}"
-TF_M_TESTS_GERRIT_PROJECT="${TF_M_TESTS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-M/tf-m-tests}"
-TF_M_EXTRAS_GERRIT_PROJECT="${TF_M_EXTRAS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-M/tf-m-extras}"
-TFTF_GERRIT_PROJECT="${TFTF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-A/tf-a-tests}"
-SPM_GERRIT_PROJECT="${SPM_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}hafnium/hafnium}"
-RMM_GERRIT_PROJECT="${RMM_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-RMM/tf-rmm}"
-CI_GERRIT_PROJECT="${CI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}ci/tf-a-ci-scripts}"
-RF_GERRIT_PROJECT="${RF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}RF-A/rusted-firmware-a}"
-ARM_FFA_GERRIT_PROJECT="${ARM_FFA_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-ffa}"
-ARM_PL011_UART_GERRIT_PROJECT="${ARM_PL011_UART_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-pl011-uart}"
-ARM_PSCI_GERRIT_PROJECT="${ARM_PSCI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-psci}"
-ARM_FVP_BASE_PAC_GERRIT_PROJECT="${ARM_FVP_BASE_PAC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-fvp-base-pac}"
-ARM_SP805_GERRIT_PROJECT="${ARM_SP805_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-sp805}"
-ARM_XLAT_GERRIT_PROJECT="${ARM_XLAT_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}rust-spmc/arm-xlat}"
-ARM_FW_DEV_GUIDE_GERRIT_PROJECT="${ARM_FW_DEV_GUIDE_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}rust-spmc/firmware-development-guide}"
-ARM_GENERIC_TIMER_GERRIT_PROJECT="${ARM_GENERIC_TIMER_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-generic-timer}"
-ARM_CCI_GERRIT_PROJECT="${ARM_CCI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-cci}"
-ARM_GIC_GERRIT_PROJECT="${ARM_GIC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-gic}"
-ARM_TZC_GERRIT_PROJECT="${ARM_TZC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-tzc}"
-ARM_PL061_GERRIT_PROJECT="${ARM_PL061_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-pl061}"
-ARM_MHU_GERRIT_PROJECT="${ARM_MHU_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-mhu}"
-ARM_SCMI_GERRIT_PROJECT="${ARM_SCMI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-scmi}"
-ARM_SYSREGS_GERRIT_PROJECT="${ARM_SYSREGS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-sysregs}"
-TF_FIRMWARE_HANDOFF_GERRIT_PROJECT="${TF_FIRMWARE_HANDOFF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}shared/tf-firmware-handoff}"
-JOBS_PROJECT="${JOBS_PROJECT:-${GERRIT_PROJECT_PREFIX?}ci/tf-a-job-configs.git}"
+TF_GERRIT_PROJECT="${TF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-A/trusted-firmware-a}"
+TF_M_TESTS_GERRIT_PROJECT="${TF_M_TESTS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-M/tf-m-tests}"
+TF_M_EXTRAS_GERRIT_PROJECT="${TF_M_EXTRAS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-M/tf-m-extras}"
+TFTF_GERRIT_PROJECT="${TFTF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-A/tf-a-tests}"
+SPM_GERRIT_PROJECT="${SPM_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}hafnium/hafnium}"
+RMM_GERRIT_PROJECT="${RMM_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-RMM/tf-rmm}"
+CI_GERRIT_PROJECT="${CI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}ci/tf-a-ci-scripts}"
+RF_GERRIT_PROJECT="${RF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}RF-A/rusted-firmware-a}"
+ARM_FFA_GERRIT_PROJECT="${ARM_FFA_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-ffa}"
+ARM_PL011_UART_GERRIT_PROJECT="${ARM_PL011_UART_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-pl011-uart}"
+ARM_PSCI_GERRIT_PROJECT="${ARM_PSCI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-psci}"
+ARM_FVP_BASE_PAC_GERRIT_PROJECT="${ARM_FVP_BASE_PAC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-fvp-base-pac}"
+ARM_SP805_GERRIT_PROJECT="${ARM_SP805_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-sp805}"
+ARM_XLAT_GERRIT_PROJECT="${ARM_XLAT_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}rust-spmc/arm-xlat}"
+ARM_FW_DEV_GUIDE_GERRIT_PROJECT="${ARM_FW_DEV_GUIDE_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}rust-spmc/firmware-development-guide}"
+ARM_GENERIC_TIMER_GERRIT_PROJECT="${ARM_GENERIC_TIMER_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-generic-timer}"
+ARM_CCI_GERRIT_PROJECT="${ARM_CCI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-cci}"
+ARM_GIC_GERRIT_PROJECT="${ARM_GIC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-gic}"
+ARM_TZC_GERRIT_PROJECT="${ARM_TZC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-tzc}"
+ARM_PL061_GERRIT_PROJECT="${ARM_PL061_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-pl061}"
+ARM_MHU_GERRIT_PROJECT="${ARM_MHU_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-mhu}"
+ARM_SCMI_GERRIT_PROJECT="${ARM_SCMI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-scmi}"
+ARM_SYSREGS_GERRIT_PROJECT="${ARM_SYSREGS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-sysregs}"
+TF_FIRMWARE_HANDOFF_GERRIT_PROJECT="${TF_FIRMWARE_HANDOFF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}shared/tf-firmware-handoff}"
+JOBS_PROJECT="${JOBS_PROJECT:-${GERRIT_PROJECT_PREFIX}ci/tf-a-job-configs.git}"
 
 # Default Reference specs
 TF_GERRIT_REFSPEC="${TF_GERRIT_REFSPEC:-${REFSPEC_MASTER}}"
diff --git a/scripts/tf-a-lts-docs-watcher.sh b/scripts/tf-a-lts-docs-watcher.sh
index 693ebea..4ef6606 100755
--- a/scripts/tf-a-lts-docs-watcher.sh
+++ b/scripts/tf-a-lts-docs-watcher.sh
@@ -8,7 +8,7 @@
 
 set -e
 
-if [ "${GERRIT_PROJECT}" == "${GERRIT_PROJECT_PREFIX?}TF-A/trusted-firmware-a" ]; then
+if [ "${GERRIT_PROJECT}" == "${GERRIT_PROJECT_PREFIX:-}TF-A/trusted-firmware-a" ]; then
     # For real production project, non-sandbox run goes to production RTD project,
     # while for sandbox run to a separate RTD project.
     if [ "${SANDBOX_RUN}" == "false" ]; then
@@ -22,7 +22,7 @@
         RTD_WEBHOOK_SECRET_KEY=${TFA_SANDBOX_RTD_WEBHOOK_SECRET}
         RTD_API_TOKEN=${PFALCON_RTD_API_TOKEN}
     fi
-elif [ "${GERRIT_PROJECT}" == "${GERRIT_PROJECT_PREFIX?}sandbox/pfalcon/trusted-firmware-a" ]; then
+elif [ "${GERRIT_PROJECT}" == "${GERRIT_PROJECT_PREFIX:-}sandbox/pfalcon/trusted-firmware-a" ]; then
     # For test project, both "production" and "sandbox" go to the same elsewhere project.
     RTD_PROJECT="pfalcon-trustedfirmware-a-sandbox"
     RTD_WEBHOOK_URL="https://readthedocs.org/api/v2/webhook/pfalcon-trustedfirmware-a-sandbox/263459/"
@@ -68,7 +68,7 @@
 
     while [ "${ver_slug}" != "${version}" ];
     do
-        [ ${retry} -gt ${max_retry_time} ] && break 
+        [ ${retry} -gt ${max_retry_time} ] && break
         sleep 30
         retry=$((retry+1))
         ver_slug=$(curl -s -H "Authorization: Token ${RTD_API_TOKEN}" ${RTD_VER_API}/${version}/ | \
diff --git a/tf-a-builder/feedback-trace-splitter.sh b/tf-a-builder/feedback-trace-splitter.sh
index f6a59f7..69edecd 100755
--- a/tf-a-builder/feedback-trace-splitter.sh
+++ b/tf-a-builder/feedback-trace-splitter.sh
@@ -56,14 +56,14 @@
       temp_sources=$(cat <<-END
                 {
                 "type": "git",
-                "URL":  "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX?}TF-A/trusted-firmware-a",
+                "URL":  "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX:-}TF-A/trusted-firmware-a",
                 "COMMIT": "",
                 "REFSPEC": "${TF_GERRIT_REFSPEC}",
                 "LOCATION": "trusted-firmware-a"
                 },
                 {
                 "type": "git",
-                "URL":  "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX?}hafnium/hafnium",
+                "URL":  "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX:-}hafnium/hafnium",
                 "COMMIT": "",
                 "REFSPEC": "${SPM_REFSPEC}",
                 "LOCATION": "spm"
@@ -71,12 +71,12 @@
 END
       )
       ;;
-    *) 
+    *)
       grep -w "bl1\|bl2\|bl31" elfs.txt > tf-a-elfs.txt
       temp_sources=$(cat <<-END
                 {
                 "type": "git",
-                "URL":  "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX?}TF-A/trusted-firmware-a",
+                "URL":  "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX:-}TF-A/trusted-firmware-a",
                 "COMMIT": "",
                 "REFSPEC": "${TF_GERRIT_REFSPEC}",
                 "LOCATION": "trusted-firmware-a"
diff --git a/tf-a-eclair-daily.yaml b/tf-a-eclair-daily.yaml
index 3e84871..b1d9791 100644
--- a/tf-a-eclair-daily.yaml
+++ b/tf-a-eclair-daily.yaml
@@ -77,8 +77,8 @@
           set -ex
           export PATH=~/.local/bin:$PATH
           pwd
-          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
-          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-ci-scripts.git
+          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
+          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-ci-scripts.git
 
           git clone --recurse-submodules https://${{GERRIT_HOST}}/${{GERRIT_PROJECT}} -b ${{GERRIT_REFNAME}}
           ls -l
diff --git a/tf-a-eclair-delta.yaml b/tf-a-eclair-delta.yaml
index f1226b9..3b31270 100644
--- a/tf-a-eclair-delta.yaml
+++ b/tf-a-eclair-delta.yaml
@@ -98,8 +98,8 @@
           export PATH=~/.local/bin:$PATH
           pwd
           env | grep GERRIT
-          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
-          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-ci-scripts.git
+          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
+          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-ci-scripts.git
 
           git clone --recurse-submodules https://${{GERRIT_HOST}}/${{GERRIT_PROJECT}} -b ${{GERRIT_BRANCH}}
           if [ -n "${{GERRIT_REFSPEC}}" ]; then
diff --git a/tf-a-lts-automation.yaml b/tf-a-lts-automation.yaml
index ec21fcd..7695dfe 100644
--- a/tf-a-lts-automation.yaml
+++ b/tf-a-lts-automation.yaml
@@ -75,7 +75,7 @@
             # Triggered by hafnium-lts-automation
             echo "Triggered by hafnium-lts-automation"
             echo "New LTS branch created: ${{new_branch}}"
-            MAIN_PROJ="${{GERRIT_PROJECT_PREFIX?}}TF-A/trusted-firmware-a"
+            MAIN_PROJ="${{GERRIT_PROJECT_PREFIX:-}}TF-A/trusted-firmware-a"
           elif [ "${{GERRIT_EVENT_TYPE:-}}" = "ref-updated" -a \
                  "${{GERRIT_OLDREV:-}}" = "0000000000000000000000000000000000000000" ]; then
             # Triggered from new LTS branch creation
@@ -86,7 +86,7 @@
           fi
 
           # Create new LTS branch to related repositories
-          repos="${{MAIN_PROJ:-}} ${{GERRIT_PROJECT_PREFIX?}}TF-A/tf-a-tests ${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts ${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-job-configs"
+          repos="${{MAIN_PROJ:-}} ${{GERRIT_PROJECT_PREFIX:-}}TF-A/tf-a-tests ${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts ${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-job-configs"
           for r in ${{repos}};
           do
               echo "Create branch \"${{new_branch}}\" from tag \"${{forked_tag}}\" in the \"${{r}}\" project"
@@ -125,7 +125,7 @@
           condition-command: |
             set -eux
 
-            COUNTERPART_PROJ="${{GERRIT_PROJECT_PREFIX?}}hafnium/hafnium"
+            COUNTERPART_PROJ="${{GERRIT_PROJECT_PREFIX:-}}hafnium/hafnium"
             GERRIT_HOST=${{GERRIT_HOST:-review.trustedfirmware.org}}
             GERRIT_SERVER="https://${{GERRIT_HOST}}"
             REF="${{GERRIT_REFNAME:-}}"
diff --git a/tf-a-lts-cleanup.yaml b/tf-a-lts-cleanup.yaml
index bf63fcd..6f1c50e 100644
--- a/tf-a-lts-cleanup.yaml
+++ b/tf-a-lts-cleanup.yaml
@@ -28,6 +28,6 @@
           ssh-keyscan -p 29418 review.trustedfirmware.org >> ~/.ssh/known_hosts
           export GIT_SSH_COMMAND="ssh -i $CI_BOT_KEY -o 'PubkeyAcceptedKeyTypes +ssh-rsa'"
 
-          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
+          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
           cd tf-a-ci-scripts/lts
           ./lts-cleanup-sandbox-refs.py --user $CI_BOT_USERNAME --limit 1
diff --git a/tf-a-lts-create-release.yaml b/tf-a-lts-create-release.yaml
index 61c9c57..61e70d6 100644
--- a/tf-a-lts-create-release.yaml
+++ b/tf-a-lts-create-release.yaml
@@ -46,7 +46,7 @@
           set -ex
           env | grep GERRIT
           echo SANDBOX_RUN=$SANDBOX_RUN
-          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
+          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
           git clone https://$GERRIT_HOST/$GERRIT_PROJECT
           DIR=$(basename $GERRIT_PROJECT)
           cd $DIR
diff --git a/tf-a-lts-release-mail.yaml b/tf-a-lts-release-mail.yaml
index d8e6a75..261e068 100644
--- a/tf-a-lts-release-mail.yaml
+++ b/tf-a-lts-release-mail.yaml
@@ -57,7 +57,7 @@
           #!/bin/bash
           set -ex
 
-          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
+          git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
           ./tf-a-ci-scripts/lts/lts-release-mail.py --url https://${{GERRIT_HOST}}/${{GERRIT_PROJECT}} --branch "${{GERRIT_BRANCH}}" ${{RELEASE_TAG}} >email.txt
           awk -F": " '/Subject:/ {{print $2}}' email.txt >subject.txt
           # Remove email headers, put in a seperate file.