-
-
Save adduc/2104076905f3e2c2e7c2dfc6b5c43b21 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
TARGET_DIR=/opt/repos/third-parties | |
HG_GIT_VERSION=${1:-default} | |
HG_RELEASE_VERSION=${2:-5.5.2} | |
HG_REPO_VERSION=${3:-stable} | |
TORTOISEHG_VERSION=${4:-stable} | |
update() { | |
# Update packages | |
apt-get update | |
apt-get -y dist-upgrade | |
} | |
prepare() { | |
apt-get -y install \ | |
curl \ | |
gcc \ | |
make \ | |
python-is-python3 \ | |
python3 \ | |
python3-dev \ | |
python3-distutils \ | |
python3-docutils \ | |
python3-dulwich \ | |
python3-iniparse \ | |
python3-pip | |
## Ubuntu provides packages for PyQt5 and QScintilla, but there | |
## appears to be a bug in the versions shipped with Ubuntu 20.10 | |
## that crashes TortoiseHG when viewing console logs. Until this bug | |
## is fixed, use pip to install QT5 dependencies | |
# python3-pyqt5 \ | |
# python3-pyqt5.qsci \ | |
pip3 install PyQt5 QScintilla | |
mkdir -p ${TARGET_DIR} | |
} | |
install_hg_release() { | |
cd ${TARGET_DIR} \ | |
&& curl "https://www.mercurial-scm.org/release/mercurial-${HG_RELEASE_VERSION}.tar.gz" -o mercurial.tar.gz \ | |
&& tar xf mercurial.tar.gz \ | |
&& rm -rf mercurial.tar.gz \ | |
&& mv mercurial-* mercurial \ | |
&& cd ${TARGET_DIR}/mercurial \ | |
&& make -j $(nproc) build | |
} | |
install_hg_repo() { | |
cd ${TARGET_DIR} \ | |
&& ${TARGET_DIR}/mercurial/hg clone -u ${HG_REPO_VERSION} https://www.mercurial-scm.org/repo/hg \ | |
&& cd ${TARGET_DIR}/hg \ | |
&& make -j $(nproc) build install \ | |
&& rm -rf ${TARGET_DIR}/mercurial | |
} | |
install_hg_git() { | |
cd ${TARGET_DIR} \ | |
&& hg clone https://foss.heptapod.net/mercurial/hg-git | |
} | |
install_tortoisehg() { | |
cd ${TARGET_DIR} \ | |
&& hg clone -u ${TORTOISEHG_VERSION} https://foss.heptapod.net/mercurial/tortoisehg/thg \ | |
&& ln -fs ${TARGET_DIR}/thg/thg /usr/local/bin/thg | |
} | |
main() { | |
set -xe | |
update | |
prepare | |
install_hg_release | |
install_hg_repo | |
install_hg_git | |
install_tortoisehg | |
} | |
main |
And another small issue / inconvenience: I ran the script with sudo
(because without it apt
fails and the script exits), but now I cannot run thg
without sudo
(getting "permission denied"), but I think this wouldn't have been necessary if thg
wasn't built under sudo
. In other words, I think the script should specifically use sudo
, and only where it's needed, so that the script could be run without sudo.
Now I see root's home folder in the "Open repo" dialog so even just navigating the disk is a challenge.
I fixed a few problems (mostly related to file and folder permissions) and simplified the script to use pip
and apt
instead of building everything from source (also removed hg-git which I don't need, so it's not a drop-in analog for this original script).
https://gist.github.com/VioletGiraffe/166b62c4e170174976ee7691431c25e6
I appreciate the feedback, the script has been updated.