2020-05-22 05:00:08 +02:00
#!/bin/bash
2021-02-21 21:01:52 +01:00
2022-03-17 17:13:27 +01:00
set -o errexit
2022-04-08 18:58:46 +02:00
USAGE_TEXT = " \
Usage: $0 [ -d]
-n do not install Python development package, Python.h etc
-h display this help and exit
"
usage( ) {
echo " ${ USAGE_TEXT } "
}
INSTALL_PYTHON_DEV = 1
while getopts nh flag
do
case " ${ flag } " in
# development
n) INSTALL_PYTHON_DEV = ; ;
h) usage; exit 0; ;
*) echo; usage; exit 1; ;
esac
done
2021-02-21 21:01:52 +01:00
if [ -z " $VIRTUAL_ENV " ] ; then
echo "This requires the chia python virtual environment."
echo "Execute '. ./activate' before running."
exit 1
fi
2021-05-12 22:12:30 +02:00
echo "Timelord requires CMake 3.14+ to compile vdf_client."
2020-05-21 00:59:57 +02:00
2020-05-22 05:00:08 +02:00
PYTHON_VERSION = $( python -c 'import sys; print(f"python{sys.version_info.major}.{sys.version_info.minor}")' )
echo " Python version: $PYTHON_VERSION "
2020-05-21 00:59:57 +02:00
2022-04-08 18:58:46 +02:00
if [ " $INSTALL_PYTHON_DEV " ] ; then
PYTHON_DEV_DEPENDENCY = lib" $PYTHON_VERSION " -dev
else
PYTHON_DEV_DEPENDENCY =
fi
2020-04-18 01:17:36 +02:00
export BUILD_VDF_BENCH = Y # Installs the useful vdf_bench test of CPU squaring speed
2020-11-01 03:35:04 +01:00
THE_PATH = $( python -c 'import pkg_resources; print( pkg_resources.get_distribution("chiavdf").location)' 2>/dev/null) /vdf_client
2022-09-16 22:58:11 +02:00
CHIAVDF_VERSION = $( python -c 'import os; os.environ["CHIA_SKIP_SETUP"] = "1"; from setup import dependencies; t = [_ for _ in dependencies if _.startswith("chiavdf")][0]; print(t)' )
2020-04-06 02:52:34 +02:00
2020-05-22 05:00:08 +02:00
ubuntu_cmake_install( ) {
2020-11-01 03:35:04 +01:00
UBUNTU_PRE_2004 = $( python -c 'import subprocess; process = subprocess.run(["lsb_release", "-rs"], stdout=subprocess.PIPE); print(float(process.stdout) < float(20.04))' )
if [ " $UBUNTU_PRE_2004 " = "True" ] ; then
2022-03-23 00:19:32 +01:00
echo "Installing CMake with snap."
sudo apt-get install snapd -y
2020-11-01 03:35:04 +01:00
sudo apt-get remove --purge cmake -y
hash -r
sudo snap install cmake --classic
2022-03-23 00:19:32 +01:00
. /etc/profile
2020-11-01 03:35:04 +01:00
else
echo "Ubuntu 20.04LTS and newer support CMake 3.16+"
sudo apt-get install cmake -y
fi
2020-05-22 05:00:08 +02:00
}
symlink_vdf_bench( ) {
2020-11-01 03:35:04 +01:00
if [ ! -e vdf_bench ] && [ -e venv/lib/" $1 " /site-packages/vdf_bench ] ; then
echo ln -s venv/lib/" $1 " /site-packages/vdf_bench
ln -s venv/lib/" $1 " /site-packages/vdf_bench .
elif [ ! -e venv/lib/" $1 " /site-packages/vdf_bench ] ; then
echo " ERROR: Could not find venv/lib/ $1 /site-packages/vdf_bench "
else
2021-05-12 22:12:30 +02:00
echo "./vdf_bench link exists."
2020-11-01 03:35:04 +01:00
fi
2020-05-22 05:00:08 +02:00
}
if [ " $( uname) " = "Linux" ] && type apt-get; then
2020-11-01 03:35:04 +01:00
UBUNTU_DEBIAN = true
2021-05-12 22:12:30 +02:00
echo "Found Ubuntu/Debian."
2021-03-30 02:59:01 +02:00
elif [ " $( uname) " = "Linux" ] && type dnf || yum; then
RHEL_BASED = true
2021-05-12 22:12:30 +02:00
echo "Found RedHat."
2020-05-22 05:00:08 +02:00
elif [ " $( uname) " = "Darwin" ] ; then
2020-11-01 03:35:04 +01:00
MACOS = true
2021-05-12 22:12:30 +02:00
echo "Found MacOS."
2020-04-06 02:43:03 +02:00
fi
2020-05-22 05:00:08 +02:00
if [ -e " $THE_PATH " ] ; then
2020-11-01 03:35:04 +01:00
echo " $THE_PATH "
echo "vdf_client already exists, no action taken"
2020-03-27 23:59:25 +01:00
else
2020-11-01 03:35:04 +01:00
if [ -e venv/bin/python ] && test $UBUNTU_DEBIAN ; then
2022-04-12 19:51:29 +02:00
echo "Installing chiavdf dependencies on Ubuntu/Debian"
2020-11-01 03:35:04 +01:00
# If Ubuntu version is older than 20.04LTS then upgrade CMake
ubuntu_cmake_install
# Install remaining needed development tools - assumes venv and prior run of install.sh
2022-04-12 19:51:29 +02:00
echo " apt-get install libgmp-dev libboost-python-dev $PYTHON_DEV_DEPENDENCY libboost-system-dev build-essential -y "
2022-04-08 18:58:46 +02:00
sudo apt-get install libgmp-dev libboost-python-dev " $PYTHON_DEV_DEPENDENCY " libboost-system-dev build-essential -y
2022-04-12 19:51:29 +02:00
echo "Installing chiavdf from source on Ubuntu/Debian"
2020-11-01 03:35:04 +01:00
echo venv/bin/python -m pip install --force --no-binary chiavdf " $CHIAVDF_VERSION "
venv/bin/python -m pip install --force --no-binary chiavdf " $CHIAVDF_VERSION "
2021-03-30 02:59:01 +02:00
symlink_vdf_bench " $PYTHON_VERSION "
elif [ -e venv/bin/python ] && test $RHEL_BASED ; then
2022-04-12 19:51:29 +02:00
echo "Installing chiavdf dependencies on RedHat/CentOS/Fedora"
2021-03-30 02:59:01 +02:00
# Install remaining needed development tools - assumes venv and prior run of install.sh
2022-04-12 19:51:29 +02:00
echo " yum install gcc gcc-c++ gmp-devel $PYTHON_DEV_DEPENDENCY libtool make autoconf automake openssl-devel libevent-devel boost-devel python3 cmake -y "
sudo yum install gcc gcc-c++ gmp-devel " $PYTHON_DEV_DEPENDENCY " libtool make autoconf automake openssl-devel libevent-devel boost-devel python3 cmake -y
echo "Installing chiavdf from source on RedHat/CentOS/Fedora"
2021-03-30 02:59:01 +02:00
echo venv/bin/python -m pip install --force --no-binary chiavdf " $CHIAVDF_VERSION "
venv/bin/python -m pip install --force --no-binary chiavdf " $CHIAVDF_VERSION "
2020-11-01 03:35:04 +01:00
symlink_vdf_bench " $PYTHON_VERSION "
2022-04-12 19:51:29 +02:00
elif [ -e venv/bin/python ] && test $MACOS ; then
echo "Installing chiavdf dependencies for MacOS."
brew install boost cmake gmp
2021-05-12 22:12:30 +02:00
echo "Installing chiavdf from source."
2020-11-01 03:35:04 +01:00
# User needs to provide required packages
echo venv/bin/python -m pip install --force --no-binary chiavdf " $CHIAVDF_VERSION "
venv/bin/python -m pip install --force --no-binary chiavdf " $CHIAVDF_VERSION "
symlink_vdf_bench " $PYTHON_VERSION "
elif [ -e venv/bin/python ] ; then
2021-05-12 22:12:30 +02:00
echo "Installing chiavdf from source."
2020-11-01 03:35:04 +01:00
# User needs to provide required packages
echo venv/bin/python -m pip install --force --no-binary chiavdf " $CHIAVDF_VERSION "
venv/bin/python -m pip install --force --no-binary chiavdf " $CHIAVDF_VERSION "
symlink_vdf_bench " $PYTHON_VERSION "
else
2021-05-12 22:12:30 +02:00
echo "No venv created yet, please run install.sh."
2020-11-01 03:35:04 +01:00
fi
2020-03-27 23:59:25 +01:00
fi
2021-05-12 22:12:30 +02:00
echo "To estimate a timelord on this CPU try './vdf_bench square_asm 400000' for an ips estimate."