1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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
|