Add openssl and curl for contentdb

master
paradust7 2022-04-05 12:14:28 +00:00
parent 5b610f3df5
commit 77f05cf77e
8 changed files with 99 additions and 13 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@ build/
sources/
install/
www/
upload.sh

View File

@ -16,7 +16,8 @@ emcc --clear-cache --clear-ports
./build_zstd.sh
./build_sqlite3.sh
./build_webshims.sh
./build_curl.sh # uses webshims
./build_openssl.sh
./build_curl.sh # uses webshims, openssl
# Minetest
./pull_minetest.sh

View File

@ -34,7 +34,9 @@ export CXXFLAGS="$CFLAGS"
export LDFLAGS="-L${INSTALL_DIR}/lib -lemsocket"
emcmake cmake \
-DCURL_ENABLE_SSL=OFF \
-DOPENSSL_SSL_LIBRARY="$INSTALL_DIR/lib/libssl.a" \
-DOPENSSL_CRYPTO_LIBRARY="$INSTALL_DIR/lib/libcrypto.a" \
-DOPENSSL_INCLUDE_DIR="$INSTALL_DIR/include" \
-DBUILD_CURL_EXE=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \

View File

@ -32,6 +32,12 @@ unzip "$SRC_DIR"/"$ZIPFILE"
rm -rf fsroot
mkdir fsroot
# Copy root certificates for OpenSSL
mkdir -p fsroot/etc/ssl/certs
# ca-certificates.crt may be a symlink
cat /etc/ssl/certs/ca-certificates.crt > fsroot/etc/ssl/certs/ca-certificates.crt
mv "$ZIPDIR" fsroot/minetest
pushd fsroot/minetest

View File

@ -14,7 +14,8 @@ pushd minetest
export EMSDK_EXTRA="-sUSE_SDL=2"
export CFLAGS="$CFLAGS $EMSDK_EXTRA"
export CXXFLAGS="$CXXFLAGS $EMSDK_EXTRA"
export LDFLAGS="$LDFLAGS $EMSDK_EXTRA -sALLOW_MEMORY_GROWTH=1 -sPTHREAD_POOL_SIZE=20 -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -L$INSTALL_DIR/lib -lemsocket"
export LDFLAGS="$LDFLAGS $EMSDK_EXTRA -sALLOW_MEMORY_GROWTH=1 -sPTHREAD_POOL_SIZE=20 -s EXPORTED_RUNTIME_METHODS=ccall,cwrap"
export LDFLAGS="$LDFLAGS -L$INSTALL_DIR/lib -lssl -lcrypto -lemsocket -lwebsocket.js"
# Used by CMakeFiles.txt in the webport
export FSROOT_DIR="$BUILD_DIR/fsroot"
@ -26,9 +27,6 @@ echo > dummy.c
emcc -c dummy.c -o dummy.o
DUMMY_OBJECT="$(pwd)/dummy.o"
# -DCURL_LIBRARY="$INSTALL_DIR/lib/libcurl.a" \
# -DCURL_INCLUDE_DIR="$INSTALL_DIR/include" \
if ! $INCREMENTAL; then
emcmake cmake \
-DENABLE_SYSTEM_GMP=OFF \
@ -56,6 +54,8 @@ if ! $INCREMENTAL; then
-DZSTD_INCLUDE_DIR="$INSTALL_DIR/include" \
-DEGL_LIBRARY="$DUMMY_OBJECT" \
-DEGL_INCLUDE_DIR="$EMSDK_SYSINCLUDE" \
-DCURL_LIBRARY="$INSTALL_DIR/lib/libcurl.a" \
-DCURL_INCLUDE_DIR="$INSTALL_DIR/include" \
-G "Unix Makefiles" \
"$BASE_DIR/minetest"
fi

51
build_openssl.sh Executable file
View File

@ -0,0 +1,51 @@
#!/bin/bash -eux
source common.sh
URL="https://www.openssl.org/source/openssl-1.1.1n.tar.gz"
TARBALL="openssl-1.1.1n.tar.gz"
TARDIR="openssl-1.1.1n"
if [ ! -f sources/"$TARBALL" ]; then
pushd sources
wget "$URL" -O "$TARBALL"
popd
fi
if ! sha256sum sources/"$TARBALL" | grep -q 40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a; then
echo "Wrong checksum for $URL"
exit 1
fi
pushd build
rm -rf "$TARDIR"
tar -zxvf "$SRC_DIR/$TARBALL"
$SRC_DIR/webshims/src/emsocket/wrap.py "$TARDIR"
pushd "$TARDIR"
patch -p1 < "$BASE_DIR"/openssl.patch
export CFLAGS="-I${INSTALL_DIR}/include -DPEDANTIC"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="-L${INSTALL_DIR}/lib -lemsocket"
emconfigure ./Configure linux-generic64 \
no-asm \
no-engine \
no-hw \
no-weak-ssl-ciphers \
no-dtls \
no-shared \
no-dso \
-DPEDANTIC \
--prefix="$INSTALL_DIR" --openssldir=/ssl
sed -i 's|^CROSS_COMPILE.*$|CROSS_COMPILE=|g' Makefile
emmake make build_generated libssl.a libcrypto.a
cp -r include/openssl "$INSTALL_DIR/include"
cp libcrypto.a libssl.a "$INSTALL_DIR/lib"
echo "openssl OK"

View File

@ -15,16 +15,16 @@ test -d "$INSTALL_DIR"
export BUILD_KIND=Release
if [ $BUILD_KIND == Debug ]; then
export BUILD_CFLAGS="-g -gsource-map -O0 --source-map-base=/dev/"
export BUILD_LDFLAGS="-sSAFE_HEAP=1 -sASSERTIONS=2 -sDEMANGLE_SUPPORT=1"
export COMMON_CFLAGS="-g -gsource-map -O0 --source-map-base=/dev/"
export COMMON_LDFLAGS="-sSAFE_HEAP=1 -sASSERTIONS=2 -sDEMANGLE_SUPPORT=1"
else
export BUILD_CFLAGS="-O2"
export BUILD_LDFLAGS=""
export COMMON_CFLAGS="-O2"
export COMMON_LDFLAGS=""
fi
export CFLAGS="$BUILD_CFLAGS -pthread -sUSE_PTHREADS=1 -fexceptions"
export CXXFLAGS="$BUILD_CFLAGS -pthread -sUSE_PTHREADS=1 -fexceptions"
export LDFLAGS="$BUILD_LDFLAGS -pthread -sUSE_PTHREADS=1 -fexceptions -sEXIT_RUNTIME"
export CFLAGS="$COMMON_CFLAGS -pthread -sUSE_PTHREADS=1 -fexceptions"
export CXXFLAGS="$COMMON_CFLAGS -pthread -sUSE_PTHREADS=1 -fexceptions"
export LDFLAGS="$COMMON_LDFLAGS -pthread -sUSE_PTHREADS=1 -fexceptions -sEXIT_RUNTIME"
export EMSDK_ROOT="$HOME/emsdk"
export EMSDK_SYSLIB="${EMSDK_ROOT}/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten"

25
openssl.patch Normal file
View File

@ -0,0 +1,25 @@
diff -urN openssl-1.1.1n/Configurations/10-main.conf openssl-1.1.1n-fixed/Configurations/10-main.conf
--- openssl-1.1.1n/Configurations/10-main.conf 2022-03-15 14:37:47.000000000 +0000
+++ openssl-1.1.1n-fixed/Configurations/10-main.conf 2022-04-05 10:48:27.348576840 +0000
@@ -657,7 +657,8 @@
},
"linux-generic64" => {
inherit_from => [ "linux-generic32" ],
- bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+ bn_ops => "SIXTY_FOUR_BIT RC4_CHAR",
+ lib_cppflags => add("-DBN_DIV2W"),
},
"linux-ppc" => {
diff -urN openssl-1.1.1n/crypto/rand/rand_unix.c openssl-1.1.1n-fixed/crypto/rand/rand_unix.c
--- openssl-1.1.1n/crypto/rand/rand_unix.c 2022-04-05 10:54:21.980130409 +0000
+++ openssl-1.1.1n-fixed/crypto/rand/rand_unix.c 2022-04-05 09:27:47.960526811 +0000
@@ -369,7 +369,7 @@
* Note: Sometimes getentropy() can be provided but not implemented
* internally. So we need to check errno for ENOSYS
*/
-# if defined(__GNUC__) && __GNUC__>=2 && defined(__ELF__) && !defined(__hpux)
+# if defined(__EMSCRIPTEN__)
extern int getentropy(void *buffer, size_t length) __attribute__((weak));
if (getentropy != NULL) {