diff --git a/packages/emscripten/build.sh b/packages/emscripten/build.sh index a205a91b81..6e91ad90a0 100644 --- a/packages/emscripten/build.sh +++ b/packages/emscripten/build.sh @@ -2,7 +2,7 @@ TERMUX_PKG_HOMEPAGE=https://emscripten.org TERMUX_PKG_DESCRIPTION="Emscripten: An LLVM-to-WebAssembly Compiler" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="@truboxl" -TERMUX_PKG_VERSION="3.1.16" +TERMUX_PKG_VERSION="3.1.17" TERMUX_PKG_SRCURL=https://github.com/emscripten-core/emscripten.git TERMUX_PKG_GIT_BRANCH=$TERMUX_PKG_VERSION TERMUX_PKG_PLATFORM_INDEPENDENT=true @@ -78,6 +78,9 @@ termux_pkg_auto_update() { llvm_tgz_sha256=$(sha256sum /tmp/$llvm_commit.tar.gz | sed -e "s| .*$||") binaryen_tgz_sha256=$(sha256sum /tmp/$binaryen_commit.tar.gz | sed -e "s| .*$||") + echo "INFO: Generated *.tar.gz checksum for LLVM_COMMIT $llvm_commit = $llvm_tgz_sha256" + echo "INFO: Generated *.tar.gz checksum for BINARYEN_COMMIT $binaryen_commit = $binaryen_tgz_sha256" + sed -i "${TERMUX_PKG_BUILDER_DIR}/build.sh" -e "s|^LLVM_COMMIT=.*|LLVM_COMMIT=${llvm_commit}|" sed -i "${TERMUX_PKG_BUILDER_DIR}/build.sh" -e "s|^LLVM_TGZ_SHA256=.*|LLVM_TGZ_SHA256=${llvm_tgz_sha256}|" sed -i "${TERMUX_PKG_BUILDER_DIR}/build.sh" -e "s|^BINARYEN_COMMIT=.*|BINARYEN_COMMIT=${binaryen_commit}|" @@ -90,13 +93,13 @@ termux_pkg_auto_update() { # https://github.com/emscripten-core/emscripten/issues/11362 # can switch to stable LLVM to save space once above is fixed -LLVM_COMMIT=ffa7384f10b89b6322c827d29d25108e34b8f6f0 -LLVM_TGZ_SHA256=798ddbbbc1dc23bbd2b8740c170091c3c346c6bccf6d8c80fe0d89a67d0ac4a1 +LLVM_COMMIT=661577b5f40bb05534869b9635315e9265c37417 +LLVM_TGZ_SHA256=6caa514b918738995bdff088afb372828eee3f765a614a270ebe4f7204de5745 # https://github.com/emscripten-core/emscripten/issues/12252 # upstream says better bundle the right binaryen revision for now -BINARYEN_COMMIT=4e9f216a1ceae8bc4111fd68bda9fb681e1eeca1 -BINARYEN_TGZ_SHA256=c73e4959140ba25e719a364afda54937b86979c2216eeafb742e0ccddc4c7a26 +BINARYEN_COMMIT=ed704448a6883e9ee0b2f6284f6b5a7b5e7b4aa9 +BINARYEN_TGZ_SHA256=a62fe07d52bc6fb912982198fe0b0d4a8b771bb3895573e9d6d034ec60424643 # https://github.com/emscripten-core/emsdk/blob/main/emsdk.py # https://chromium.googlesource.com/emscripten-releases/+/refs/heads/main/src/build.py @@ -161,11 +164,12 @@ termux_step_post_get_source() { done local llvm_patches_rej="$(find . -type f -name '*.rej')" if [ -n "$llvm_patches_rej" ]; then + echo "INFO: Printing *.rej files ..." for rej in $llvm_patches_rej; do echo -e "\n\n${rej}" cat "$rej" done - termux_error_exit "Patch failed! Please check patch errors above." + termux_error_exit "Patch failed! Please check patch errors above!" fi fi @@ -177,11 +181,12 @@ termux_step_post_get_source() { done local binaryen_patches_rej="$(find . -type f -name '*.rej')" if [ -n "$binaryen_patches_rej" ]; then + echo "INFO: Printing *.rej files ..." for rej in $binaryen_patches_rej; do echo -e "\n\n${rej}" cat "$rej" done - termux_error_exit "Patch failed! Please check patch errors above." + termux_error_exit "Patch failed! Please check patch errors above!" fi fi } @@ -296,13 +301,13 @@ termux_step_create_debscripts() { cd "$TERMUX_PREFIX/opt/emscripten" NPM_VERSION=\$(npm --version) NPM_MAJOR_VERSION=\${NPM_VERSION:0:1} - if [ 6 = \$NPM_MAJOR_VERSION ]; then - echo 'Running "npm ci --no-optional --production" in $TERMUX_PREFIX/opt/emscripten ...' - npm ci --no-optional --production + if [ "\$NPM_MAJOR_VERSION" = 6 ]; then + echo 'Running "npm ci --production --no-optional" in $TERMUX_PREFIX/opt/emscripten ...' + npm ci --production --no-optional else - echo 'Running "npm install --no-optional --production" in $TERMUX_PREFIX/opt/emscripten ...' + echo 'Running "npm install --omit=dev --omit=optional" in $TERMUX_PREFIX/opt/emscripten ...' rm package-lock.json - npm install --no-optional --production + npm install --omit=dev --omit=optional fi else echo 'Warning: npm is not installed! Emscripten may not work properly without installing node modules!' >&2 @@ -339,6 +344,6 @@ termux_step_create_debscripts() { # Steps: # - apt install cmake emscripten-tests-third-party ndk-sysroot openjdk-17 # - cd $PREFIX/opt/emscripten -# - npm install --no-optional +# - npm install --omit=optional # - export EMTEST_SKIP_V8=1 # - tests/runner {test_name} diff --git a/packages/emscripten/llvm-project-clang-lib-Driver-ToolChain.cpp.patch.diff b/packages/emscripten/llvm-project-clang-lib-Driver-ToolChain.cpp.patch.diff index a57d4b8332..1ab1035242 100644 --- a/packages/emscripten/llvm-project-clang-lib-Driver-ToolChain.cpp.patch.diff +++ b/packages/emscripten/llvm-project-clang-lib-Driver-ToolChain.cpp.patch.diff @@ -1,12 +1,12 @@ diff -uNr llvm-project/clang/lib/Driver/ToolChain.cpp llvm-project.mod/clang/lib/Driver/ToolChain.cpp ---- llvm-project/clang/lib/Driver/ToolChain.cpp 2022-06-20 05:49:00.000000000 +0800 -+++ llvm-project.mod/clang/lib/Driver/ToolChain.cpp 2022-06-28 23:33:05.425005209 +0800 +--- llvm-project/clang/lib/Driver/ToolChain.cpp 2022-07-22 22:56:15.000000000 +0800 ++++ llvm-project.mod/clang/lib/Driver/ToolChain.cpp 2022-07-23 14:50:06.701119073 +0800 @@ -1012,7 +1012,7 @@ switch (Type) { case ToolChain::CST_Libcxx: - CmdArgs.push_back("-lc++"); + CmdArgs.push_back("-lc++_shared"); + if (Args.hasArg(options::OPT_fexperimental_library)) + CmdArgs.push_back("-lc++experimental"); break; - - case ToolChain::CST_Libstdcxx: diff --git a/packages/emscripten/llvm-project-compiler-rt-CMakeLists.txt.patch.diff b/packages/emscripten/llvm-project-compiler-rt-CMakeLists.txt.patch.diff index 87d49a87c8..462c50dad7 100644 --- a/packages/emscripten/llvm-project-compiler-rt-CMakeLists.txt.patch.diff +++ b/packages/emscripten/llvm-project-compiler-rt-CMakeLists.txt.patch.diff @@ -1,6 +1,6 @@ diff -uNr llvm-project/compiler-rt/CMakeLists.txt llvm-project.mod/compiler-rt/CMakeLists.txt ---- llvm-project/compiler-rt/CMakeLists.txt 2022-06-20 05:49:00.000000000 +0800 -+++ llvm-project.mod/compiler-rt/CMakeLists.txt 2022-06-28 23:33:05.432005412 +0800 +--- llvm-project/compiler-rt/CMakeLists.txt 2022-07-22 22:56:15.000000000 +0800 ++++ llvm-project.mod/compiler-rt/CMakeLists.txt 2022-07-23 14:45:26.423586698 +0800 @@ -187,6 +187,9 @@ elseif (FUCHSIA) set(${var}_LIBNAME "libc++") @@ -11,8 +11,8 @@ diff -uNr llvm-project/compiler-rt/CMakeLists.txt llvm-project.mod/compiler-rt/C else() set(${var}_LIBNAME "libstdc++") set(${var}_SYSTEM 1) -@@ -201,7 +204,7 @@ - # which pulls in the ABI transitively. +@@ -202,7 +205,7 @@ + # TODO: Mark this as internal flag, most users should use COMPILER_RT_CXX_LIBRARY. set(SANITIZER_CXX_ABI "default" CACHE STRING "Specify C++ ABI library to use.") -set(CXXABIS none default libstdc++ libc++ libcxxabi) @@ -20,7 +20,7 @@ diff -uNr llvm-project/compiler-rt/CMakeLists.txt llvm-project.mod/compiler-rt/C set_property(CACHE SANITIZER_CXX_ABI PROPERTY STRINGS ;${CXXABIS}) handle_default_cxx_lib(SANITIZER_CXX_ABI) -@@ -543,6 +546,8 @@ +@@ -594,6 +597,8 @@ list(APPEND SANITIZER_CXX_ABI_LIBRARIES "c++abi") elseif (SANITIZER_CXX_ABI_LIBNAME STREQUAL "libstdc++") append_list_if(COMPILER_RT_HAS_LIBSTDCXX stdc++ SANITIZER_CXX_ABI_LIBRARIES) diff --git a/packages/emscripten/llvm-project-llvm-lib-ExecutionEngine-Orc-MemoryMapper.cpp.patch.diff b/packages/emscripten/llvm-project-llvm-lib-ExecutionEngine-Orc-MemoryMapper.cpp.patch.diff new file mode 100644 index 0000000000..171e6bf1be --- /dev/null +++ b/packages/emscripten/llvm-project-llvm-lib-ExecutionEngine-Orc-MemoryMapper.cpp.patch.diff @@ -0,0 +1,12 @@ +diff -uNr llvm-project/llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp llvm-project.mod/llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp +--- llvm-project/llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp 2022-07-22 22:56:15.000000000 +0800 ++++ llvm-project.mod/llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp 2022-07-23 16:39:13.276357002 +0800 +@@ -186,7 +186,7 @@ + + void SharedMemoryMapper::reserve(size_t NumBytes, + OnReservedFunction OnReserved) { +-#if defined(LLVM_ON_UNIX) || defined(_WIN32) ++#if (defined(LLVM_ON_UNIX) || defined(_WIN32)) && !defined(__ANDROID__) + + EPC.callSPSWrapperAsync< + rt::SPSExecutorSharedMemoryMapperServiceReserveSignature>( diff --git a/packages/emscripten/llvm-project-llvm-lib-ExecutionEngine-Orc-TargetProcess-ExecutorSharedMemoryMapperService.cpp.patch.diff b/packages/emscripten/llvm-project-llvm-lib-ExecutionEngine-Orc-TargetProcess-ExecutorSharedMemoryMapperService.cpp.patch.diff new file mode 100644 index 0000000000..4df45f44b1 --- /dev/null +++ b/packages/emscripten/llvm-project-llvm-lib-ExecutionEngine-Orc-TargetProcess-ExecutorSharedMemoryMapperService.cpp.patch.diff @@ -0,0 +1,12 @@ +diff -uNr llvm-project/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.cpp llvm-project.mod/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.cpp +--- llvm-project/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.cpp 2022-07-23 16:37:08.875416904 +0800 ++++ llvm-project.mod/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.cpp 2022-07-23 16:39:54.048648369 +0800 +@@ -52,7 +52,7 @@ + + Expected> + ExecutorSharedMemoryMapperService::reserve(uint64_t Size) { +-#if defined(LLVM_ON_UNIX) || defined(_WIN32) ++#if (defined(LLVM_ON_UNIX) || defined(_WIN32)) && !defined(__ANDROID__) + + #if defined(LLVM_ON_UNIX) +