diff --git a/tools/install_modules.sh b/tools/install_modules.sh index 7ca3e3f9a..385dbdb73 100755 --- a/tools/install_modules.sh +++ b/tools/install_modules.sh @@ -7,89 +7,119 @@ ## 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 -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::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::GCrypt \ - 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 \ - 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 \ - Net::DNS::RR::NSEC3 \ - Net::DNS::SEC \ - POSIX \ - Text::Iconv \ +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::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::GCrypt \ + 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 \ + 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 +perl -MDigest::BLAKE2 -e1 &>/dev/null +if [ $? -ne 0 ]; then + cpanm https://github.com/matrix/p5-Digest-BLAKE2.git + ERRORS=$((ERRORS+$?)) +fi -ERRORS=$((ERRORS+$?)) +# checks for pyenv pyenv_enabled=0 -# check for pyenv 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} @@ -98,50 +128,46 @@ if [ $? -eq 0 ]; then 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++)) + 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 uninstall -y pycryptoplus pycrypto pycryptodome - pip3 install pycryptoplus - ERRORS=$((ERRORS+$?)) - # pip3 uninstall -y pycryptodome # latest versions do not require this work around anymore - pip3 install pycrypto - + pip3 install pycryptodome ERRORS=$((ERRORS+$?)) pip3 install cryptography - ERRORS=$((ERRORS+$?)) + fi -php --version > /dev/null 2> /dev/null - -if [ "$?" -ne 0 ] -then - echo '[ ERROR ] php must be installed for some unit tests' +php --version &> /dev/null +if [ $? -ne 0 ]; then + echo "! php must be installed for some unit tests' ERRORS=$((ERRORS+1)) fi echo -if [ $ERRORS -eq 0 ]; then - echo '[ OK ] All commands were successful' - exit 0 -else + +if [ $ERRORS -gt 0 ]; then echo '[ FAIL ] Some commands were not successful' exit 1 fi + +echo '[ OK ] All commands were successful' +exit 0