#!/usr/bin/env bash ## ## Author......: See docs/credits.txt ## License.....: MIT ## ## Test suite installation helper script IS_APPLE=0 IS_APPLE_SILICON=0 UNAME=$(uname -s) if [ "${UNAME}" == "Darwin" ]; then IS_APPLE=1 fi if [ ${IS_APPLE} -eq 1 ]; then if [ "$(sysctl -in hw.optional.arm64 2>/dev/null)" == "1" ]; then IS_APPLE_SILICON=1 fi fi # Sum of all exit codes ERRORS=0 echo "> Installing perl deps ..." if [ ${IS_APPLE} -eq 1 ]; then # workaround for test failed with Net::SSLeay on Apple cpanm --notest Net::SSLeay else cpanm Net::SSLeay fi ERRORS=$((ERRORS+$?)) cpanm Authen::Passphrase::LANManager \ Authen::Passphrase::MySQL323 \ Authen::Passphrase::NTHash \ Authen::Passphrase::PHPass \ Bitcoin::Crypto \ Bitcoin::Crypto::Base58 \ Compress::Zlib \ Convert::EBCDIC \ Crypt::Argon2 \ Crypt::AuthEnc::GCM \ Crypt::Blowfish \ Crypt::Camellia \ Crypt::CBC \ Crypt::Cipher::Serpent \ Crypt::DES \ Crypt::DES_EDE3 \ Crypt::Digest::BLAKE2s_256 \ Crypt::Digest::RIPEMD160 \ Crypt::Digest::Whirlpool \ Crypt::ECB \ Crypt::Eksblowfish::Bcrypt \ Crypt::Mode::CBC \ Crypt::Mode::ECB \ Crypt::MySQL \ Crypt::OpenSSH::ChachaPoly \ Crypt::OpenSSL::EC \ Crypt::OpenSSL::Bignum::CTX \ Crypt::Passwd::XS \ Crypt::PBKDF2 \ Crypt::RC4 \ Crypt::Rijndael \ Crypt::ScryptKDF \ Crypt::Skip32 \ Crypt::Twofish \ Crypt::UnixCrypt_XS \ CryptX \ Data::Types \ Digest::CMAC \ Digest::CRC \ Digest::GOST \ Digest::HMAC \ Digest::HMAC_MD5 \ Digest::Keccak \ Digest::MD4 \ Digest::MD5 \ Digest::MurmurHash3 \ Digest::Perl::MD5 \ Digest::SHA \ Digest::SHA1 \ Digest::SHA3 \ Digest::SipHash \ Encode \ JSON \ Math::BigInt \ MIME::Base64 \ Module::Build \ Module::Build::Pluggable::XSUtil \ Net::DNS::RR::NSEC3 \ Net::DNS::SEC \ POSIX \ Text::Iconv \ ; ERRORS=$((ERRORS+$?)) cpanm https://github.com/matrix/p5-Digest-BLAKE2.git ERRORS=$((ERRORS+$?)) # checks for pyenv pyenv_enabled=0 which pyenv &>/dev/null if [ $? -eq 0 ]; then if [[ $(pyenv version-name) != "system" ]]; then # active session detected pyenv_enabled=1 else # enum last version available latest=$(pyenv install --list | grep -E "^\s*3\.[0-9]+\.[0-9]$" | tail -n 1) if [ $IS_APPLE -eq 1 ]; then if [ $IS_APPLE_SILICON -eq 0 ]; then # workaround but with pyenv and Apple Intel with brew binutils in path remove_path="$(brew --prefix)/opt/binutils/bin" PATH=$(echo "$PATH" | tr ':' '\n' | awk '$0 != "${remove_path}"' | xargs | sed 's/ /:/g') export $PATH fi fi # install the latest version or skip it if it is already present pyenv install -s ${latest} # enable pyenv local $latest if [ $? -eq 0 ]; then pyenv_enabled=1 fi fi fi if [ ${pyenv_enabled} -eq 0 ]; then echo "! something is wrong with pyenv. Please setup latest version manually and re-run this script." (( ERRORS++ )) else echo "> Installing python3 deps ..." pip3 install git+https://github.com/matrix/pygost ERRORS=$((ERRORS+$?)) pip3 install pycryptoplus ERRORS=$((ERRORS+$?)) pip3 install pycryptodome ERRORS=$((ERRORS+$?)) pip3 install cryptography ERRORS=$((ERRORS+$?)) fi echo if [ $ERRORS -gt 0 ]; then echo "[ FAIL ] Some commands were not successful" exit 1 fi echo "[ OK ] All commands were successful" exit 0