Browse Source

add cache support to install.sh

master
fivepiece 8 years ago
parent
commit
974b5ae639
  1. 78
      install.sh

78
install.sh

@ -17,10 +17,12 @@ gpg_verify_sig ()
sha256_verify ()
{
if [ "$(uname)" == "Darwin" ]; then
if [[ "$(uname)" == "Darwin" ]]; then
shasum -a 256 -c <<<"$1 $2"
return "$?"
else
sha256sum -c <<<"$1 $2"
return "$?"
fi
}
@ -61,7 +63,7 @@ deb_deps_install ()
check_skip_build ()
{
if ! mkdir "$1"; then
if [[ ${reinstall} == false ]] && [[ -d "$1" ]]; then
read -p "Directory ${1} exists. Remove and recreate? (y/n) " q
if [[ "${q}" =~ Y|y ]]; then
rm -rf "./${1}"
@ -79,8 +81,9 @@ venv_setup ()
{
if check_skip_build 'jmvenv'; then
return 0
else
reinstall='true'
fi
rm -rf "${jm_source}/deps"
virtualenv -p python2 "${jm_source}/jmvenv" || return 1
source "${jm_source}/jmvenv/bin/activate" || return 1
pip install --upgrade pip
@ -91,10 +94,10 @@ venv_setup ()
openssl_get ()
{
if [[ -z "${no_gpg_validation}" ]]; then
openssl_file=( "${openssl_lib_tar}" "${openssl_lib_sha}" "${openssl_lib_sig}" )
openssl_files=( "${openssl_lib_tar}" "${openssl_lib_sig}" )
curl --retry 5 -L "${openssl_signer_key_url}" -o openssl_signer.key
else
openssl_file=( "${openssl_lib_tar}" )
openssl_files=( "${openssl_lib_tar}" )
fi
for file in ${openssl_files[@]}; do
curl --retry 5 -L -O "${openssl_url}/${file}"
@ -122,19 +125,20 @@ openssl_install ()
{
openssl_version='openssl-1.0.2l'
openssl_lib_tar="${openssl_version}.tar.gz"
openssl_lib_sha="${openssl_lib_tar}.sha256"
openssl_lib_sha='ce07195b659e75f4e1db43552860070061f156a98bb37b672b101ba6e3ddf30c'
openssl_lib_sig="${openssl_lib_tar}.asc"
openssl_url='https://www.openssl.org/source'
openssl_signer_key_url='https://pgp.mit.edu/pks/lookup?op=get&search=0xD9C4D26D0E604491'
openssl_signer_key_id='D9C4D26D0E604491'
openssl_root="${jm_deps}/openssl"
openssl_signer_key_url="https://pgp.mit.edu/pks/lookup?op=get&search=0x${openssl_signer_key_id}"
if check_skip_build 'openssl'; then
if check_skip_build "${openssl_version}"; then
return 0
fi
pushd openssl
openssl_get
if ! sha256_verify "${openssl_lib_tar}" "${openssl_lib_sha}"; then
pushd cache
if ! sha256_verify "${openssl_lib_sha}" "${openssl_lib_tar}"; then
openssl_get
fi
if ! sha256_verify "${openssl_lib_sha}" "${openssl_lib_tar}"; then
return 1
fi
if [[ -z "${no_gpg_validation}" ]]; then
@ -144,13 +148,14 @@ openssl_install ()
return 1
fi
if gpg_verify_sig "${openssl_lib_sig}"; then
tar -xzf "${openssl_lib_tar}"
tar -xzf "${openssl_lib_tar}" -C ../
else
return 1
fi
else
tar -xzf "${openssl_lib_tar}"
tar -xzf "${openssl_lib_tar}" -C ../
fi
popd
pushd "${openssl_version}"
if openssl_build; then
make install_sw
@ -158,7 +163,6 @@ openssl_install ()
return 1
fi
popd
popd
}
# add '--disable-docs' to libffi ./configure so makeinfo isn't needed
@ -173,6 +177,15 @@ libffi_patch_disable_docs ()
> if BUILD_DOCS
> #info_TEXINFOS += doc/libffi.texi
> endif
EOF
# autogen.sh is not happy when run from some directories, causing it
# to create an ltmain.sh file in our ${jm_root} directory. weird.
# https://github.com/meetecho/janus-gateway/issues/290#issuecomment-125160739
# https://github.com/meetecho/janus-gateway/commit/ac38cfdae7185f9061569b14809af4d4052da700
cat <<'EOF' > autoreconf.patch
18a19
> AC_CONFIG_AUX_DIR([.])
EOF
cat <<'EOF' > configure.ac.patch
@ -186,6 +199,7 @@ EOF
>
EOF
patch Makefile.am Makefile.am.patch
patch configure.ac autoreconf.patch
patch configure.ac configure.ac.patch
}
@ -207,16 +221,19 @@ libffi_install ()
libffi_lib_sha='96d08dee6f262beea1a18ac9a3801f64018dc4521895e9198d029d6850febe23'
libffi_url="https://github.com/libffi/libffi/archive"
if check_skip_build 'libffi'; then
if check_skip_build "${libffi_version}"; then
return 0
fi
pushd libffi
curl --retry 5 -L -O "${libffi_url}/${libffi_lib_tar}"
pushd cache
if ! sha256_verify "${libffi_lib_sha}" "${libffi_lib_tar}"; then
curl --retry 5 -L -O "${libffi_url}/${libffi_lib_tar}"
fi
if sha256_verify "${libffi_lib_sha}" "${libffi_lib_tar}"; then
tar -xzf "${libffi_lib_tar}"
tar -xzf "${libffi_lib_tar}" -C ../
else
return 1
fi
popd
pushd "${libffi_version}"
if ! libffi_patch_disable_docs; then
return 1
@ -227,7 +244,6 @@ libffi_install ()
return 1
fi
popd
popd
}
libsodium_get ()
@ -259,15 +275,21 @@ libsodium_install ()
sodium_version='libsodium-1.0.13'
sodium_lib_tar="${sodium_version}.tar.gz"
sodium_lib_sig="${sodium_lib_tar}.sig"
sodium_lib_sha='9c13accb1a9e59ab3affde0e60ef9a2149ed4d6e8f99c93c7a5b97499ee323fd'
sodium_url='https://download.libsodium.org/libsodium/releases'
sodium_signer_key_url='https://pgp.mit.edu/pks/lookup?op=get&search=0x210627AABA709FE1'
sodium_signer_key_id='62F25B592B6F76DA'
if check_skip_build 'libsodium'; then
if check_skip_build "${sodium_version}"; then
return 0
fi
pushd libsodium
libsodium_get
pushd cache
if ! sha256_verify "${sodium_lib_sha}" "${sodium_lib_tar}"; then
libsodium_get
fi
if ! sha256_verify "${sodium_lib_sha}" "${sodium_lib_tar}"; then
return 1
fi
if [[ -z "${no_gpg_validation}" ]]; then
if gpg_verify_key libsodium_signer.key "${sodium_signer_key_id}"; then
gpg_add_to_keyring libsodium_signer.key
@ -275,13 +297,14 @@ libsodium_install ()
return 1
fi
if gpg_verify_sig "${sodium_lib_sig}"; then
tar -xzf "${sodium_lib_tar}"
tar -xzf "${sodium_lib_tar}" -C ../
else
return 1
fi
else
tar -xzf "${sodium_lib_tar}"
tar -xzf "${sodium_lib_tar}" -C ../
fi
popd
pushd "${sodium_version}"
if libsodium_build; then
make install
@ -289,7 +312,6 @@ libsodium_install ()
return 1
fi
popd
popd
}
joinmarket_install ()
@ -383,6 +405,7 @@ main ()
# flags
develop_build=''
no_gpg_validation=''
reinstall='false'
parse_flags ${@}
# os check
@ -397,9 +420,8 @@ main ()
return 1
fi
source "${jm_root}/bin/activate"
mkdir -p deps
mkdir -p "deps/cache"
pushd deps
rm -f ./keyring.gpg
# openssl build disabled. using OS package manager's version.
# if ! openssl_install; then
# echo "Openssl was not built. Exiting."

Loading…
Cancel
Save