From f3742cb7fe249b3ac92b6668be546bd6d97333f1 Mon Sep 17 00:00:00 2001 From: Tee KOBAYASHI Date: Sun, 9 Jan 2022 11:24:03 +0900 Subject: [PATCH] new package: txikijs --- .../CMakeLists.txt.patch.beforehostbuild | 11 +++ packages/txikijs/build.sh | 74 +++++++++++++++++++ .../txikijs/deps-libuv-src-unix-core.c.patch | 11 +++ .../deps-libuv-src-unix-internal.h.patch | 11 +++ .../deps-wasm3-source-m3_api_wasi.c.patch | 18 +++++ packages/txikijs/src-js-CMakeLists.txt.patch | 11 +++ 6 files changed, 136 insertions(+) create mode 100644 packages/txikijs/CMakeLists.txt.patch.beforehostbuild create mode 100644 packages/txikijs/build.sh create mode 100644 packages/txikijs/deps-libuv-src-unix-core.c.patch create mode 100644 packages/txikijs/deps-libuv-src-unix-internal.h.patch create mode 100644 packages/txikijs/deps-wasm3-source-m3_api_wasi.c.patch create mode 100644 packages/txikijs/src-js-CMakeLists.txt.patch diff --git a/packages/txikijs/CMakeLists.txt.patch.beforehostbuild b/packages/txikijs/CMakeLists.txt.patch.beforehostbuild new file mode 100644 index 000000000..e1409f109 --- /dev/null +++ b/packages/txikijs/CMakeLists.txt.patch.beforehostbuild @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -101,7 +101,7 @@ + src/worker.c + src/xhr.c + ${CMAKE_CURRENT_BINARY_DIR}/js.c +- ../deps/quickjs/src/cutils.c ++ deps/quickjs/src/cutils.c + ) + + set_target_properties(tjs PROPERTIES diff --git a/packages/txikijs/build.sh b/packages/txikijs/build.sh new file mode 100644 index 000000000..6285aabe7 --- /dev/null +++ b/packages/txikijs/build.sh @@ -0,0 +1,74 @@ +TERMUX_PKG_HOMEPAGE=https://github.com/saghul/txiki.js +TERMUX_PKG_DESCRIPTION="A small and powerful JavaScript runtime" +TERMUX_PKG_LICENSE="MIT" +TERMUX_PKG_MAINTAINER="@termux" +_COMMIT=ffa4b191eeb23984d502b183a1f521be717f1eb5 +TERMUX_PKG_VERSION=2021.11.16 +TERMUX_PKG_SRCURL=https://github.com/saghul/txiki.js.git +TERMUX_PKG_GIT_BRANCH=master +TERMUX_PKG_DEPENDS="libcurl" +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DBUILD_NATIVE=OFF" +TERMUX_PKG_HOSTBUILD=true + +# Build failure for i686: +# [...]/txikijs/src/deps/wasm3/source/./extra/wasi_core.h:46:1: +# fatal error: static_assert failed due to requirement +# '__alignof(long long) == 8' "non-wasi data layout" +# _Static_assert(_Alignof(int64_t) == 8, "non-wasi data layout"); +# ^ ~~~~~~~~~~~~~~~~~~~~~~ +TERMUX_PKG_BLACKLISTED_ARCHES="i686" + +termux_step_post_get_source() { + git fetch --unshallow + git checkout $_COMMIT + + local version="$(git log -1 --format=%cs | sed 's/-/./g')" + if [ "$version" != "$TERMUX_PKG_VERSION" ]; then + echo -n "ERROR: The specified version \"$TERMUX_PKG_VERSION\"" + echo " is different from what is expected to be: \"$version\"" + return 1 + fi +} + +termux_step_host_build() { + find $TERMUX_PKG_SRCDIR -mindepth 1 -maxdepth 1 ! -name '.git*' \ + -exec cp -a \{\} ./ \; + + termux_setup_cmake + + cmake . + make -j $TERMUX_MAKE_PROCESSES +} + +termux_step_pre_configure() { + _NEED_DUMMY_LIBPTHREAD_A= + _LIBPTHREAD_A=$TERMUX_PREFIX/lib/libpthread.a + if [ ! -e $_LIBPTHREAD_A ]; then + _NEED_DUMMY_LIBPTHREAD_A=true + echo '!' > $_LIBPTHREAD_A + fi + _NEED_DUMMY_LIBRT_A= + _LIBRT_A=$TERMUX_PREFIX/lib/librt.a + if [ ! -e $_LIBRT_A ]; then + _NEED_DUMMY_LIBRT_A=true + echo '!' > $_LIBRT_A + fi +} + +termux_step_post_configure() { + export PATH=$TERMUX_PKG_HOSTBUILD_DIR:$PATH +} + +termux_step_make_install() { + install -Dm700 -t $TERMUX_PREFIX/bin tjs +} + +termux_step_post_make_install() { + if [ $_NEED_DUMMY_LIBPTHREAD_A ]; then + rm -f $_LIBPTHREAD_A + fi + if [ $_NEED_DUMMY_LIBRT_A ]; then + rm -f $_LIBRT_A + fi +} diff --git a/packages/txikijs/deps-libuv-src-unix-core.c.patch b/packages/txikijs/deps-libuv-src-unix-core.c.patch new file mode 100644 index 000000000..8fc95b509 --- /dev/null +++ b/packages/txikijs/deps-libuv-src-unix-core.c.patch @@ -0,0 +1,11 @@ +--- a/deps/libuv/src/unix/core.c ++++ b/deps/libuv/src/unix/core.c +@@ -1125,7 +1125,7 @@ + + /* No temp environment variables defined */ + #if defined(__ANDROID__) +- buf = "/data/local/tmp"; ++ buf = "@TERMUX_PREFIX@/tmp"; + #else + buf = "/tmp"; + #endif diff --git a/packages/txikijs/deps-libuv-src-unix-internal.h.patch b/packages/txikijs/deps-libuv-src-unix-internal.h.patch new file mode 100644 index 000000000..0679c77c2 --- /dev/null +++ b/packages/txikijs/deps-libuv-src-unix-internal.h.patch @@ -0,0 +1,11 @@ +--- a/deps/libuv/src/unix/internal.h ++++ b/deps/libuv/src/unix/internal.h +@@ -79,7 +79,7 @@ + # define UV__PATH_MAX 8192 + #endif + +-#if defined(__ANDROID__) ++#if defined(__ANDROID__) && __ANDROID_API__ < 16 + int uv__pthread_sigmask(int how, const sigset_t* set, sigset_t* oset); + # ifdef pthread_sigmask + # undef pthread_sigmask diff --git a/packages/txikijs/deps-wasm3-source-m3_api_wasi.c.patch b/packages/txikijs/deps-wasm3-source-m3_api_wasi.c.patch new file mode 100644 index 000000000..8840d0ed2 --- /dev/null +++ b/packages/txikijs/deps-wasm3-source-m3_api_wasi.c.patch @@ -0,0 +1,18 @@ +--- a/deps/wasm3/source/m3_api_wasi.c ++++ b/deps/wasm3/source/m3_api_wasi.c +@@ -672,6 +672,7 @@ + while (1) { + ssize_t retlen = 0; + ++#if !defined __ANDROID__ || __ANDROID_API__ >= 28 + #if defined(__wasi__) || defined(__APPLE__) || defined(__ANDROID_API__) || defined(__OpenBSD__) || defined(__EMSCRIPTEN__) + size_t reqlen = M3_MIN (buf_len, 256); + # if defined(__APPLE__) && (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) +@@ -685,6 +686,7 @@ + if (RtlGenRandom(buf, buf_len) == TRUE) { + m3ApiReturn(__WASI_ERRNO_SUCCESS); + } ++#endif + #else + m3ApiReturn(__WASI_ERRNO_NOSYS); + #endif diff --git a/packages/txikijs/src-js-CMakeLists.txt.patch b/packages/txikijs/src-js-CMakeLists.txt.patch new file mode 100644 index 000000000..7ef1a59b2 --- /dev/null +++ b/packages/txikijs/src-js-CMakeLists.txt.patch @@ -0,0 +1,11 @@ +--- a/src/js/CMakeLists.txt ++++ b/src/js/CMakeLists.txt +@@ -24,7 +24,7 @@ + ${JS_PATH}/worker-bootstrap.js + ) + +-set(CUSTOM_QJSC "${CMAKE_CURRENT_BINARY_DIR}/qjsc" CACHE STRING "Custom path to QJSC") ++set(CUSTOM_QJSC "qjsc" CACHE STRING "Custom path to QJSC") + add_custom_command( + COMMAND + ${CUSTOM_QJSC}