You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Comrad/script/install

414 lines
7.1 KiB
Bash

#!/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