1#!/bin/sh 2# 3# Install specified libcrypto. 4# -a : install version for ABI compatibility test. 5# -n : dry run, don't actually build and install. 6# 7# Usage: $0 [-a] [-n] openssl-$branch/tag destdir [config options] 8 9set -e 10 11bincompat_test="" 12dryrun="" 13while [ "$1" = "-a" ] || [ "$1" = "-n" ]; do 14 if [ "$1" = "-a" ]; then 15 abi_compat_test=y 16 elif [ "$1" = "-n" ]; then 17 dryrun="echo dryrun:" 18 fi 19 shift 20done 21 22ver="$1" 23destdir="$2" 24opts="$3" 25 26if [ -z "${ver}" ] || [ -z "${destdir}" ]; then 27 echo tag/branch and destdir required 28 exit 1 29fi 30 31set -x 32 33if [ ! -d ${HOME}/openssl ]; then 34 cd ${HOME} 35 git clone https://github.com/openssl/openssl.git 36 cd ${HOME}/openssl 37 git fetch --all 38fi 39cd ${HOME}/openssl 40 41if [ "${abi_compat_test}" = "y" ]; then 42 echo selecting ABI test release/branch for ${ver} 43 case "${ver}" in 44 openssl-3.6) 45 ver=openssl-3.0.0 46 echo "selecting older release ${ver}" 47 ;; 48 openssl-3.[012345]) 49 major=$(echo ${ver} | cut -f1 -d.) 50 minor=$(echo ${ver} | cut -f2 -d.) 51 ver="${major}.$((${minor} + 1))" 52 echo selecting next release branch ${ver} 53 ;; 54 openssl-3.*.*) 55 major=$(echo ${ver} | cut -f1 -d.) 56 minor=$(echo ${ver} | cut -f2 -d.) 57 patch=$(echo ${ver} | cut -f3 -d.) 58 ver="${major}.${minor}.$((${patch} + 1))" 59 echo checking for release tag ${ver} 60 if git tag | grep -q "^${ver}\$"; then 61 echo selected next patch release ${ver} 62 else 63 ver="${major}.${minor}" 64 echo not found, selecting release branch ${ver} 65 fi 66 ;; 67 esac 68fi 69 70git checkout ${ver} 71make clean >/dev/null 2>&1 || true 72${dryrun} ./config no-threads shared ${opts} --prefix=${destdir} \ 73 -Wl,-rpath,${destdir}/lib64 74${dryrun} make -j4 75${dryrun} sudo make install_sw 76