Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion .github/workflows/wasm-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ jobs:
runs-on: ubuntu-latest
env:
TEST_JOBS: 16
OPENSSL_WASM_REF: fe926b5006593ad2825243f97e363823cd56599f
OPENSSL_WASM_PREFIX: ${{ github.workspace }}/build/wasm-openssl/install/openssl-wasm-fe926b5006593ad2825243f97e363823cd56599f
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -66,6 +68,16 @@ jobs:
source /home/runner/emsdk/emsdk_env.sh
emcc -v

- name: Cache wasm OpenSSL
uses: actions/cache@v4
with:
path: ${{ env.OPENSSL_WASM_PREFIX }}
key: wasm-openssl-${{ runner.os }}-${{ env.OPENSSL_WASM_REF }}-${{ hashFiles('scripts/install-wasm-openssl.sh') }}

- name: Install OpenSSL for wasm
run: |
scripts/install-wasm-openssl.sh

- name: Install ccache
run: |
sudo apt-get install -y ccache
Expand Down Expand Up @@ -101,7 +113,7 @@ jobs:
env:
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
EXTRA_CMAKE_FLAGS: -DBUILD_EXTENSIONS=httpfs -DEXTENSION_STATIC_LINK_LIST=httpfs
EXTRA_CMAKE_FLAGS: -DBUILD_EXTENSIONS=httpfs -DEXTENSION_STATIC_LINK_LIST=httpfs -DOPENSSL_INCLUDE_DIR=${{ env.OPENSSL_WASM_PREFIX }}/include -DOPENSSL_CRYPTO_LIBRARY=${{ env.OPENSSL_WASM_PREFIX }}/lib/libcrypto.a -DOPENSSL_SSL_LIBRARY=${{ env.OPENSSL_WASM_PREFIX }}/lib/libssl.a -DOPENSSL_USE_STATIC_LIBS=TRUE
run: |
source /home/runner/emsdk/emsdk_env.sh
npm run build
Expand Down
32 changes: 32 additions & 0 deletions scripts/install-wasm-openssl.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env bash
set -euo pipefail

OPENSSL_WASM_REF="${OPENSSL_WASM_REF:-fe926b5006593ad2825243f97e363823cd56599f}"
OPENSSL_PREFIX="${OPENSSL_WASM_PREFIX:-$PWD/build/wasm-openssl/install/openssl-wasm-${OPENSSL_WASM_REF}}"
OPENSSL_BUILD_DIR="${OPENSSL_WASM_BUILD_DIR:-$PWD/build/wasm-openssl/download}"
OPENSSL_ARCHIVE="${OPENSSL_BUILD_DIR}/openssl-wasm-${OPENSSL_WASM_REF}.tar.gz"
OPENSSL_EXTRACT_DIR="${OPENSSL_BUILD_DIR}/openssl-wasm-${OPENSSL_WASM_REF}"

if [[ -f "${OPENSSL_PREFIX}/include/openssl/ssl.h" \
&& -f "${OPENSSL_PREFIX}/lib/libssl.a" \
&& -f "${OPENSSL_PREFIX}/lib/libcrypto.a" ]]; then
echo "OpenSSL wasm prebuilt files already exist at ${OPENSSL_PREFIX}"
exit 0
fi

mkdir -p "${OPENSSL_BUILD_DIR}"

if [[ ! -f "${OPENSSL_ARCHIVE}" ]]; then
curl -fsSL \
"https://github.com/jedisct1/openssl-wasm/archive/${OPENSSL_WASM_REF}.tar.gz" \
-o "${OPENSSL_ARCHIVE}"
fi

rm -rf "${OPENSSL_EXTRACT_DIR}" "${OPENSSL_PREFIX}"
mkdir -p "${OPENSSL_EXTRACT_DIR}" "${OPENSSL_PREFIX}"
tar -xzf "${OPENSSL_ARCHIVE}" -C "${OPENSSL_EXTRACT_DIR}" --strip-components=1
cp -R "${OPENSSL_EXTRACT_DIR}/precompiled/." "${OPENSSL_PREFIX}/"

test -f "${OPENSSL_PREFIX}/include/openssl/ssl.h"
test -f "${OPENSSL_PREFIX}/lib/libssl.a"
test -f "${OPENSSL_PREFIX}/lib/libcrypto.a"
Loading