diff --git a/README.md b/README.md index 00b2fff3..2510084b 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,57 @@ Intro for new developers and witnesses This is a quick introduction to get new developers and witnesses up to speed on Peerplays blockchain. It is intended for witnesses plannig to join a live, already deployed blockchain. +# Using setup.sh to install prebuilt packages & compile dependencies + +The following script can be used to install debian packages of the following: +- witness_node (1.5.19, and 1.5.22-alpha) +- cli_wallet (1.5.19, and 1.5.22-alpha) +- libbitcoin libraries (required for witness_node & cli_wallet runtimes) + +The script also gives the option to build some of the other dependencies from source, these dependencies are: +- libboost 1.72.0 +- libzmq 4.3.4 +- cppzmq 4.9.0 +- witness_node (COMING SOON) +- cli_wallet (COMING SOON) + +## The script can be downloaded as follows + +Note: Ensure you verify the sha256 checksum to ensure the script has not been interfered with + +# Cloning this git repository: + +## Grab the repository +``` +git clone https://gitlab.com/pbsa/peerplays.git +cd peerplays +``` + +## Verify the checksum +``` +wget https://peerplays.download/downloads/scripts/setup.sh.sha256 +sha256sum -c setup.sh.sha256 +``` + +## Output of verifying the checksum should be as follows +``` +setup.sh: OK +``` + +``` +chmod +x setup.sh +./setup.sh +``` + +# Downloading directly without git: + +``` +wget https://peerplays.download/downloads/scripts/setup.sh +wget https://peerplays.download/downloads/scripts/setup.sh.sha256 +sha256sum -c setup.sh.sha256 +chmod +x setup.sh +./setup.sh +``` # Building and Installation Instructions diff --git a/setup.sh b/setup.sh new file mode 100644 index 00000000..0b75ce42 --- /dev/null +++ b/setup.sh @@ -0,0 +1,323 @@ +#!/bin/bash + +download_and_install_cli_wallet() { + echo "Select the version of cli-wallet:" + echo "1. v1.5.22 - Latest Alpha Release" + echo "2. v1.5.19 - Latest Production Release (Mainnet)" + echo "Enter the number (1-2):" + read -r version_selection + case $version_selection in + 1) + if [[ -e "cli_wallet_1.5.22_all.deb" ]]; then + echo "cli_wallet_1.5.22_all.deb already exists, skipping download." + else + wget https://peerplays.download/downloads/debian-files/cli-wallet/cli_wallet_1.5.22_all.deb + fi + sudo apt install -f ./cli_wallet_1.5.22_all.deb + ;; + 2) + if [[ -e "cli_wallet_1.5.19_all.deb" ]]; then + echo "cli_wallet_1.5.19_all.deb already exists, skipping download." + else + wget https://peerplays.download/downloads/debian-files/cli-wallet/cli_wallet_1.5.19_all.deb + fi + sudo apt install -f ./cli_wallet_1.5.19_all.deb + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 2." + ;; + esac +} + +download_and_install_witness_node() { + echo "Select the version of witness-node:" + echo "1. v1.5.22 - Latest Alpha Release" + echo "2. v1.5.19 - Latest Production Release (Mainnet)" + echo "Enter the number (1-2):" + read -r version_selection + case $version_selection in + 1) + if [[ -e "witness_node_1.5.22_all.deb" ]]; then + echo "witness_node_1.5.22_all.deb already exists, skipping download." + else + wget https://peerplays.download/downloads/debian-files/witness-node/witness_node_1.5.22_all.deb + fi + sudo apt install -f ./witness_node_1.5.22_all.deb + ;; + 2) + if [[ -e "witness_node_1.5.19_all.deb" ]]; then + echo "witness_node_1.5.19_all.deb already exists, skipping download." + else + wget https://peerplays.download/downloads/debian-files/witness-node/witness_node_1.5.19_all.deb + fi + sudo apt install -f ./witness_node_1.5.19_all.deb + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 2." + ;; + esac +} + +download_and_install_libbitcoin3_dev_all() { + if [[ -e "libbitcoin3-all-dev_3.0.0_all.deb" ]]; then + echo "libbitcoin3-all-dev_3.0.0-1_all.deb already exists, skipping download." + else + wget https://peerplays.download/downloads/debian-files/libbitcoin-libs/libbitcoin3-all-dev_3.0.0_all.deb + fi + sudo apt install -f ./libbitcoin3-all-dev_3.0.0_all.deb +} + +download_and_compile_boost1_72_0(){ + if [[ -e "boost_1_72_0.tar.gz" ]]; then + echo "boost_1_72_0.tar.gz already exists, skipping downloading and rebuilding from source.." + exit 0 + else + wget https://boostorg.jfrog.io/artifactory/main/release/1.72.0/source/boost_1_72_0.tar.gz + fi + + tar -xzf boost_1_72_0.tar.gz boost_1_72_0 + cd boost_1_72_0 || return + ./bootstrap.sh + ./b2 + sudo ./b2 install + sudo ldconfig +} + +download_and_compile_libzmq4_3_4() { + if [[ -f "v4.3.4.tar.gz" || -d "libzmq-4.3.4/" ]]; then + echo "Skipping downloading and compiling, directory or tarball already exists" + exit 0 + else + wget https://github.com/zeromq/libzmq/archive/refs/tags/v4.3.4.tar.gz + tar -xzvf v4.3.4.tar.gz + cd libzmq-4.3.4 || return + mkdir build + cd build || return + cmake .. + make -j"$(nproc)" + sudo make install + sudo ldconfig + fi +} + +download_and_compile_cppzmq-4_9_0() { + if [[ -f "v4.9.0.tar.gz" || -d cppzmq-4.9.0 ]]; then + echo "Skipping downloading and compiling, directory or tarball already exists" + exit 0 + else + wget https://github.com/zeromq/cppzmq/archive/refs/tags/v4.9.0.tar.gz + fi + tar -xzvf v4.9.0.tar.gz + cd cppzmq-4.9.0 || return + mkdir build + cd build || return + cmake .. + make -j"$(nproc)" + sudo make install + sudo ldconfig +} + +##download_and_compile_cli_wallet_1_5_22(){ +# +# echo "Select the version of cli-wallet:" +# echo "1. v1.5.22 - Latest Alpha Release (NOTE - This option grabs and compiles all required dependencies, 1.5+ hours)" +# echo "2. v1.5.19 - Latest Production Release (Mainnet - - This option grabs and compiles all required dependencies, 1+ hour) " +# echo "Enter the number (1-2):" +# read -r version_selection +# case $version_selection in +# 1) +# if [[ -d "peerplays/" ]]; then +# echo "Skipping cloning the repository, already exists.." +# else +# git clone --depth 1 --branch 1.5.22-alpha https://gitlab.com/pbsa/peerplays.git +# fi +# +# sudo apt-get install \ +# autoconf bash bison build-essential ca-certificates dnsutils expect flex git \ +# graphviz libbz2-dev libcurl4-openssl-dev libncurses-dev libpcre3-dev \ +# libsnappy-dev libsodium-dev libssl-dev libtool libzip-dev locales lsb-release \ +# mc nano net-tools ntp openssh-server pkg-config python3 python3-jinja2 sudo \ +# systemd-coredump wget +# +# +# ;; +# +# +#} + +uninstall_software() { + echo "Select the software you'd like to uninstall:" + echo "1. cli-wallet" + echo "2. witness-node" + echo "3. libbitcoin3-all-dev" + echo "Enter the number (1-3):" + read -r software_selection + case $software_selection in + 1) + sudo dpkg -r cli-wallet + ;; + 2) + sudo dpkg -r witness-node + ;; + 3) + sudo dpkg -r libbitcoin3-all-dev + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 3." + ;; + esac +} +while true; do + echo "Select an action:" + echo "1. Download & install software" + echo "2. Build from source" + echo "3. Uninstall software" + echo "4. Exit" + echo "Enter the number (1-4):" + read -r action_selection + + case $action_selection in + 1) + while true; do + echo "Select the software you'd like to download & install:" + echo "1. Apps" + echo "2. Libraries" + echo "3. Go back" + echo "Enter the number (1-3):" + read -r software_selection + case $software_selection in + 1) + while true; do + echo "Select an app:" + echo "1. cli-wallet" + echo "2. witness-node" + echo "3. Go back" + echo "Enter the number (1-3):" + read -r app_selection + case $app_selection in + 1) + download_and_install_cli_wallet + ;; + 2) + download_and_install_witness_node + ;; + 3) + break + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 3." + ;; + esac + done + ;; + 2) + while true; do + echo "Select a library:" + echo "1. libbitcoin3-dev-all" + echo "2. Go back" + echo "Enter the number (1-2):" + read -r library_selection + case $library_selection in + 1) + download_and_install_libbitcoin3_dev_all + ;; + 2) + break + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 2." + ;; + esac + done + ;; + 3) + break + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 3." + ;; + esac + done + ;; + 2) + while true; do + echo "Select the software you'd like to build from source:" + echo "1. Apps" + echo "2. Libraries" + echo "3. Go back" + echo "Enter the number (1-3):" + read -r software_selection + case $software_selection in + 1) + while true; do + echo "Select an app:" + echo "1. cli-wallet - COMING SOON, DOESNT WORK " + echo "2. witness-node - COMING SOON, DOESNT WORK" + echo "3. Go back" + echo "Enter the number (1-3):" + read -r app_selection + case $app_selection in + 1) + download_and_compile_cli_wallet_1_5_19 + ;; + 2) + download_and_compile_witness_node_1_5_19 + ;; + 3) + break + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 3." + ;; + esac + done + ;; + 2) + while true; do + echo "Select a library:" + echo "1. boost-1.72.0" + echo "2. libzmq-4.3.4" + echo "3. cppzmq-4.9.0" + echo "4. Go back" + echo "Enter the number (1-4):" + read -r library_selection + case $library_selection in + 1) + download_and_compile_boost1_72_0 + ;; + 2) + download_and_compile_libzmq4_3_4 + ;; + 3) + download_and_compile_cppzmq-4_9_0 + ;; + 4) + break + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 4." + ;; + esac + done + ;; + 3) + break + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 3." + ;; + esac + done + ;; + 3) + uninstall_software + ;; + 4) + echo "Exiting the script." + exit 0 + ;; + *) + echo "Invalid selection. Please enter a number between 1 and 4." + ;; + esac +done \ No newline at end of file