|
|
|
|
@ -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." |
|
|
|
|
|