Ilya Shipitsin | 054a5b8 | 2019-05-03 14:31:20 +0500 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | set -eux |
| 3 | |
| 4 | download_openssl () { |
| 5 | if [ ! -f "download-cache/openssl-${OPENSSL_VERSION}.tar.gz" ]; then |
Ilya Shipitsin | 6e18f92 | 2020-04-07 23:35:49 +0500 | [diff] [blame] | 6 | |
| 7 | # |
| 8 | # OpenSSL has different links for latest and previous releases |
| 9 | # since we want to download several versions, let us try to treat |
| 10 | # current version as latest, if it fails, follow with previous |
| 11 | # |
| 12 | |
| 13 | wget -P download-cache/ \ |
| 14 | "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" || \ |
Ilya Shipitsin | 054a5b8 | 2019-05-03 14:31:20 +0500 | [diff] [blame] | 15 | wget -P download-cache/ \ |
Ilya Shipitsin | 6e18f92 | 2020-04-07 23:35:49 +0500 | [diff] [blame] | 16 | "https://www.openssl.org/source/old/${OPENSSL_VERSION%[a-z]}/openssl-${OPENSSL_VERSION}.tar.gz" |
Ilya Shipitsin | 054a5b8 | 2019-05-03 14:31:20 +0500 | [diff] [blame] | 17 | fi |
| 18 | } |
| 19 | |
| 20 | build_openssl_linux () { |
| 21 | ( |
| 22 | cd "openssl-${OPENSSL_VERSION}/" |
| 23 | ./config shared --prefix="${HOME}/opt" --openssldir="${HOME}/opt" -DPURIFY |
Willy Tarreau | 3be6134 | 2021-06-10 07:52:23 +0200 | [diff] [blame^] | 24 | make -j$(nproc) all |
| 25 | make install_sw |
Ilya Shipitsin | 054a5b8 | 2019-05-03 14:31:20 +0500 | [diff] [blame] | 26 | ) |
| 27 | } |
| 28 | |
| 29 | build_openssl_osx () { |
| 30 | ( |
| 31 | cd "openssl-${OPENSSL_VERSION}/" |
| 32 | ./Configure darwin64-x86_64-cc shared \ |
| 33 | --prefix="${HOME}/opt" --openssldir="${HOME}/opt" -DPURIFY |
| 34 | make depend all install_sw |
| 35 | ) |
| 36 | } |
| 37 | |
| 38 | build_openssl () { |
| 39 | if [ "$(cat ${HOME}/opt/.openssl-version)" != "${OPENSSL_VERSION}" ]; then |
| 40 | tar zxf "download-cache/openssl-${OPENSSL_VERSION}.tar.gz" |
Ilya Shipitsin | 47e09dd | 2020-02-11 14:36:23 +0500 | [diff] [blame] | 41 | case `uname` in |
| 42 | 'Darwin') |
| 43 | build_openssl_osx |
| 44 | ;; |
| 45 | 'Linux') |
| 46 | build_openssl_linux |
| 47 | ;; |
| 48 | esac |
Ilya Shipitsin | 054a5b8 | 2019-05-03 14:31:20 +0500 | [diff] [blame] | 49 | echo "${OPENSSL_VERSION}" > "${HOME}/opt/.openssl-version" |
| 50 | fi |
| 51 | } |
| 52 | |
| 53 | download_libressl () { |
| 54 | if [ ! -f "download-cache/libressl-${LIBRESSL_VERSION}.tar.gz" ]; then |
| 55 | wget -P download-cache/ \ |
| 56 | "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${LIBRESSL_VERSION}.tar.gz" |
| 57 | fi |
| 58 | } |
| 59 | |
Ilya Shipitsin | 054a5b8 | 2019-05-03 14:31:20 +0500 | [diff] [blame] | 60 | build_libressl () { |
| 61 | if [ "$(cat ${HOME}/opt/.libressl-version)" != "${LIBRESSL_VERSION}" ]; then |
| 62 | tar zxf "download-cache/libressl-${LIBRESSL_VERSION}.tar.gz" |
| 63 | ( |
| 64 | cd "libressl-${LIBRESSL_VERSION}/" |
| 65 | ./configure --prefix="${HOME}/opt" |
| 66 | make all install |
| 67 | ) |
| 68 | echo "${LIBRESSL_VERSION}" > "${HOME}/opt/.libressl-version" |
| 69 | fi |
| 70 | } |
| 71 | |
Ilya Shipitsin | a088d3d | 2019-06-05 02:16:51 +0500 | [diff] [blame] | 72 | download_boringssl () { |
| 73 | if [ ! -d "download-cache/boringssl" ]; then |
| 74 | git clone --depth=1 https://boringssl.googlesource.com/boringssl download-cache/boringssl |
| 75 | else |
| 76 | ( |
| 77 | cd download-cache/boringssl |
| 78 | git pull |
| 79 | ) |
| 80 | fi |
| 81 | } |
| 82 | |
Ilya Shipitsin | 054a5b8 | 2019-05-03 14:31:20 +0500 | [diff] [blame] | 83 | if [ ! -z ${LIBRESSL_VERSION+x} ]; then |
| 84 | download_libressl |
| 85 | build_libressl |
| 86 | fi |
| 87 | |
| 88 | if [ ! -z ${OPENSSL_VERSION+x} ]; then |
| 89 | download_openssl |
| 90 | build_openssl |
| 91 | fi |
| 92 | |
Ilya Shipitsin | 35d20af | 2019-05-09 01:15:59 +0500 | [diff] [blame] | 93 | if [ ! -z ${BORINGSSL+x} ]; then |
| 94 | ( |
Ilya Shipitsin | 8abf026 | 2019-09-16 16:13:10 +0500 | [diff] [blame] | 95 | |
| 96 | # travis-ci comes with go-1.11, while boringssl requires go-1.13 |
| 97 | eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=1.13 bash)" |
| 98 | |
Ilya Shipitsin | a088d3d | 2019-06-05 02:16:51 +0500 | [diff] [blame] | 99 | download_boringssl |
| 100 | cd download-cache/boringssl |
| 101 | if [ -d build ]; then rm -rf build; fi |
Ilya Shipitsin | 35d20af | 2019-05-09 01:15:59 +0500 | [diff] [blame] | 102 | mkdir build |
| 103 | cd build |
Ilya Shipitsin | aaa34ea | 2020-06-21 16:39:30 +0500 | [diff] [blame] | 104 | cmake -GNinja -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=1 .. |
| 105 | ninja |
Ilya Shipitsin | 35d20af | 2019-05-09 01:15:59 +0500 | [diff] [blame] | 106 | |
Ilya Shipitsin | 6b736b4 | 2020-10-11 23:42:51 +0500 | [diff] [blame] | 107 | rm -rf ${HOME}/opt/lib || exit 0 |
| 108 | rm -rf ${HOME}/opt/include || exit 0 |
Ilya Shipitsin | 35d20af | 2019-05-09 01:15:59 +0500 | [diff] [blame] | 109 | |
Ilya Shipitsin | 6b736b4 | 2020-10-11 23:42:51 +0500 | [diff] [blame] | 110 | mkdir -p ${HOME}/opt/lib |
| 111 | cp crypto/libcrypto.so ssl/libssl.so ${HOME}/opt/lib |
Ilya Shipitsin | 35d20af | 2019-05-09 01:15:59 +0500 | [diff] [blame] | 112 | |
Ilya Shipitsin | 6b736b4 | 2020-10-11 23:42:51 +0500 | [diff] [blame] | 113 | mkdir -p ${HOME}/opt/include |
| 114 | cp -r ../include/* ${HOME}/opt/include |
Ilya Shipitsin | 35d20af | 2019-05-09 01:15:59 +0500 | [diff] [blame] | 115 | ) |
| 116 | fi |
Ilya Shipitsin | 054a5b8 | 2019-05-03 14:31:20 +0500 | [diff] [blame] | 117 | |