#!/bin/bash # funcs (mac doesnt have realpath) realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}" } echo "$1 $2 $3" unameOut="$(uname -s)" case "${unameOut}" in Linux*) machine=Linux;; Darwin*) machine=Mac;; CYGWIN*) machine=Cygwin;; MINGW*) machine=MinGw;; MSYS*) machine=MinGw;; *) machine="UNKNOWN:${unameOut}" esac # install pyenv? echo " ### ## # # ### ## ### # # # #### # # # # # # # # # #### ### # # # # # # # # # # # #### # # ### ## # # # # # # ### installing... " if [ "$machine" = "MinGw" ] || [ "$machine" = "Cygwin" ] then echo -e "\nSorry, but Windows is not yet supported." echo -e "\nIf you are a developer, please lend a hand to support Windows." echo "The current attempt at a windows installation is located here:" echo "https://github.com/ComradOrg/Comrad/blob/master/script/install-windows.sh" exit 1 fi ### # Create paths ###### echo ' 1) setting up folders... ' # install dir? echo "Where should comrad live on your device?" path_comrad_default="`realpath ~/comrad`" if [ "$1" = "-n" ] then read -p "[$path_comrad_default] " path_comrad else path_comrad=$path_comrad_default fi if [ -z "$path_comrad" ] then path_comrad=$path_comrad_default fi if [ ! -d "$path_comrad" ] then mkdir -p $path_comrad echo "created $path_comrad" fi path_lib="$path_comrad/lib" if [ ! -d "$path_lib" ] then mkdir -p $path_lib echo "created $path_lib" fi path_repo="$path_comrad/code" path_bin="$path_repo/bin" # if [ ! -d "$path_bin" ] # then # mkdir -p $path_bin # echo "created $path_bin" # fi path_themis="$path_lib/themis/build" export LD_LIBRARY_PATH="$path_themis:$LD_LIBRARY_PATH" echo ' 2) configuring OS environment... ' echo "$machine detected." #### # Package manager setups # # windows if [ "$machine" = "MinGw" ] then echo "Installing base development packages" pacman -S curl wget unzip gcc make openssl-devel git fi # mac if [ "$machine" = "Mac" ] then if ! command -v brew &> /dev/null then echo "Installing homebrew..." cd "$path_lib" mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew fi if ! command -v git &> /dev/null then echo "Installing git with brew..." brew install git fi fi # linux if [ "$machine" = "Linux" ] then if ! command -v git &> /dev/null then echo "Installing git with apt..." sudo apt install git fi fi ### Downloading via git! echo ' 2) downloading Comrad... ' # if exists, pull if [ -d "$path_repo" ] then cd $path_repo git pull else cd $path_comrad git clone https://github.com/ComradOrg/Comrad.git mv Comrad code fi echo ' 4) setting up python miniconda... # ' ################# ## MINICONDA ## ################# cd $path_comrad path_conda="$path_comrad/lib/miniconda3" if [ "$machine" = "Linux" ] then if [ ! -f "miniconda.sh" ] then echo "downloading miniconda..." curl https://repo.anaconda.com/miniconda/Miniconda3-py37_4.8.3-Linux-x86_64.sh -o miniconda.sh chmod +x miniconda.sh fi ./miniconda.sh -b -f -p "$path_conda" #rm miniconda.sh export PATH="$path_conda/bin:$PATH" # sudo apt install zbar-tools fi # mac if [ "$machine" = "Mac" ] then if [ ! -f "miniconda.sh" ] then echo "downloading miniconda..." curl https://repo.anaconda.com/miniconda/Miniconda3-py37_4.8.3-MacOSX-x86_64.sh -o miniconda.sh chmod +x miniconda.sh fi ./miniconda.sh -b -f -p "$path_conda" export PATH="$path_conda/bin:$PATH" # brew install zbar fi echo "path_conda = $path_conda" echo "conda exec is `which conda`" source "$path_conda/etc/profile.d/conda.sh" echo "conda exec is `which conda`" #$condaexec ############################################################ echo ' 5) creating virtual environment... ' path_venv="$path_repo/venv" echo "Now using python (t1): `which python`" conda config --add channels conda-forge conda create -y -p "$path_venv" python=3.7 cartopy pip virtualenv rtree wxpython pandas numpy scipy pyzbar source "$path_conda/etc/profile.d/conda.sh" conda activate "$path_venv" echo "Now using python (t2): `which python`" python -m pip install -U setuptools ########################################################### echo ' Install python requirements ' cd $path_repo python -m pip install -r requirements.txt ######################################################################### if [ "$machine" = "Mac" ] then echo "Installing Mac native GUI bridge" python -m pip install git+https://github.com/kivy/pyobjus fi ####################################### echo ' Installing Themis, cryptography backend... ' if [ "$machine" = "Mac" ] then echo 'installing themis with brew' /usr/local/bin/brew tap cossacklabs/tap /usr/local/bin/brew install libthemis fi if [ "$machine" = "Linux" ] then REQUIRED_PKG="libssl-dev" PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed") echo "Checking for prerequisite $REQUIRED_PKG: $PKG_OK" if [ "" = "$PKG_OK" ]; then echo "No $REQUIRED_PKG. Setting up $REQUIRED_PKG. This needs sudo." sudo apt-get --yes install $REQUIRED_PKG # mkdir -p "$path_lib/var/lib/dpkg" # touch "$path_lib/var/lib/dpkg/lock" # apt-get download libssl-dev; dpkg -i --force-not-root --root=$path_lib libssl-dev.deb fi echo 'Building Themis...' cd "$path_lib" if [ ! -d "$themis" ] then curl https://codeload.github.com/cossacklabs/themis/zip/master -o themis.zip unzip -q -o themis.zip mv themis-master themis fi cd themis make fi echo ' Completing... ' commands_app=" source $path_conda/etc/profile.d/conda.sh\n export PATH=\"$path_conda/bin:\$PATH\"\n conda activate $path_venv\n python -m pip install -r $path_repo/requirements.txt\n python $path_repo/comrad/app/main.py\n " export PATH="$path_bin:$PATH" bashline="export PATH=\"$path_bin:\$PATH\" # comrad installation" bashfn="`realpath ~/.bashrc`" # add to bashrc? if grep -Fxq "$bashline" "$bashfn" then # code if found echo "setting already in $bashfn: $bashline" else # code if not found echo "$bashline" >> "$bashfn" fi echo -e "Installation successful!" if [ "$machine" = "Mac" ] then cd /Applications unzip -q -o "$path_bin/Comrad.app.zip" echo "You may run the app by looking for 'Comrad.app' in your /Applications folder." else echo -e " You can run Comrad with: ## For the GUI interface: comrad-app or: ~/comrad/code/bin/comrad-app ## For the terminal client: comrad-cli or: ~/comrad/code/bin/comrad-cli " fi # run? #$path_bin/comrad-app