summaryrefslogtreecommitdiffstats
path: root/taskcluster/docker/recipes/install-mercurial.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xtaskcluster/docker/recipes/install-mercurial.sh134
1 files changed, 134 insertions, 0 deletions
diff --git a/taskcluster/docker/recipes/install-mercurial.sh b/taskcluster/docker/recipes/install-mercurial.sh
new file mode 100755
index 0000000000..2e394c6775
--- /dev/null
+++ b/taskcluster/docker/recipes/install-mercurial.sh
@@ -0,0 +1,134 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This script installs and configures Mercurial.
+
+set -e
+
+# Detect OS.
+if [ -f /etc/lsb-release ]; then
+ # Disabled so linting works on Mac
+ # shellcheck disable=SC1091
+ . /etc/lsb-release
+
+ if [ "${DISTRIB_ID}" = "Ubuntu" ] && [[ "${DISTRIB_RELEASE}" = "20.04" ]]; then
+ HG_APT=1
+ elif [ "${DISTRIB_ID}" = "Ubuntu" ] && [[ "${DISTRIB_RELEASE}" = "16.04" || "${DISTRIB_RELEASE}" = "17.10" || "${DISTRIB_RELEASE}" = "18.04" ]]
+ then
+ HG_DEB=1
+ HG_DIGEST=54a215232a340139707a968b58943c2903a8297f0da32f96622d1acab47de6013a5b96d2ca4ba241b1fee142b4098a6cdd236b308a1657c31f42807d7385d327
+ HG_SIZE=278440
+ HG_FILENAME=mercurial_4.8.1_amd64.deb
+
+ HG_COMMON_DIGEST=5577fec8d0f6643d17751b3f6be76b0c2bb888ae1920a8b085245e05110e3d5cfe1c4e9d51e334ab0dd0865fe553c63c704e72852e00b71eb668980cb6b33fa4
+ HG_COMMON_SIZE=2439436
+ HG_COMMON_FILENAME=mercurial-common_4.8.1_all.deb
+ elif [ "${DISTRIB_ID}" = "Ubuntu" ] && [ "${DISTRIB_RELEASE}" = "12.04" ]
+ then
+ echo "Ubuntu 12.04 not supported"
+ exit 1
+ fi
+
+ CERT_PATH=/etc/ssl/certs/ca-certificates.crt
+
+elif [ -f /etc/os-release ]; then
+ # Disabled so linting works on Mac
+ # shellcheck disable=SC1091
+ . /etc/os-release
+
+ if [ "${ID}" = "debian" ]; then
+ if [ -f /usr/bin/pip2 ]; then
+ PIP_PATH=/usr/bin/pip2
+ elif [ -f /usr/bin/pip ]; then
+ # Versions of debian that don't have pip2 have pip pointing to the python2 version.
+ PIP_PATH=/usr/bin/pip
+ else
+ echo "We currently require Python 2.7 and pip to run Mercurial"
+ exit 1
+ fi
+ else
+ echo "Unsupported debian-like system with ID '${ID}' and VERSION_ID '${VERSION_ID}'"
+ exit 1
+ fi
+
+ CERT_PATH=/etc/ssl/certs/ca-certificates.crt
+
+elif [ -f /etc/centos-release ]; then
+ CENTOS_VERSION="$(rpm -q --queryformat '%{VERSION}' centos-release)"
+ if [ "${CENTOS_VERSION}" = "6" ]; then
+ if [ -f /usr/bin/pip2.7 ]; then
+ PIP_PATH=/usr/bin/pip2.7
+ else
+ echo "We currently require Python 2.7 and /usr/bin/pip2.7 to run Mercurial"
+ exit 1
+ fi
+ else
+ echo "Unsupported CentOS version: ${CENTOS_VERSION}"
+ exit 1
+ fi
+
+ CERT_PATH=/etc/ssl/certs/ca-bundle.crt
+fi
+
+if [ -n "${HG_APT}" ]; then
+apt-get install -y mercurial
+elif [ -n "${HG_DEB}" ]; then
+tooltool_fetch <<EOF
+[
+ {
+ "size": ${HG_SIZE},
+ "digest": "${HG_DIGEST}",
+ "algorithm": "sha512",
+ "filename": "${HG_FILENAME}"
+ },
+ {
+ "size": ${HG_COMMON_SIZE},
+ "digest": "${HG_COMMON_DIGEST}",
+ "algorithm": "sha512",
+ "filename": "${HG_COMMON_FILENAME}"
+ }
+]
+EOF
+
+ dpkg -i --auto-deconfigure ${HG_COMMON_FILENAME} ${HG_FILENAME}
+elif [ -n "${HG_RPM}" ]; then
+tooltool_fetch <<EOF
+[
+ {
+ "size": ${HG_SIZE},
+ "digest": "${HG_DIGEST}",
+ "algorithm": "sha512",
+ "filename": "${HG_FILENAME}"
+ }
+]
+EOF
+
+ rpm -i ${HG_FILENAME}
+elif [ -n "${PIP_PATH}" ]; then
+tooltool_fetch <<EOF
+[
+ {
+ "size": 6869733,
+ "digest": "a4485c22f9bb0bb752bf42941f613cb3542c66cbec5d7d49be2090ac544f5dca0f476e4535a56e3f4f4f5fc02fb12739e6d1c7b407264fc2ba4b19b0230b9f93",
+ "algorithm": "sha512",
+ "filename": "mercurial-4.8.1.tar.gz"
+ }
+]
+EOF
+
+ ${PIP_PATH} install mercurial-4.8.1.tar.gz
+else
+ echo "Do not know how to install Mercurial on this OS"
+ exit 1
+fi
+
+chmod 644 /usr/local/mercurial/robustcheckout.py
+
+cat >/etc/mercurial/hgrc.d/cacerts.rc <<EOF
+[web]
+cacerts = ${CERT_PATH}
+EOF
+
+chmod 644 /etc/mercurial/hgrc.d/cacerts.rc