From c90c28ff8dca783e80e0dc75d3f53c3faff22f61 Mon Sep 17 00:00:00 2001 From: Arun Sharma Date: Sat, 30 May 2026 10:32:09 -0700 Subject: [PATCH] ci: install prebuilt OpenSSL for wasm httpfs --- .github/workflows/wasm-workflow.yml | 14 ++++++++++++- scripts/install-wasm-openssl.sh | 32 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100755 scripts/install-wasm-openssl.sh diff --git a/.github/workflows/wasm-workflow.yml b/.github/workflows/wasm-workflow.yml index a26296cd9..72a4ccb67 100644 --- a/.github/workflows/wasm-workflow.yml +++ b/.github/workflows/wasm-workflow.yml @@ -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 @@ -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 @@ -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 diff --git a/scripts/install-wasm-openssl.sh b/scripts/install-wasm-openssl.sh new file mode 100755 index 000000000..65cb6ecff --- /dev/null +++ b/scripts/install-wasm-openssl.sh @@ -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"