From 95d01497043a7726ef0e6da6c80566f14e0c8023 Mon Sep 17 00:00:00 2001 From: Jia Yuan Lo Date: Mon, 14 Sep 2020 00:50:12 +0800 Subject: [PATCH] boinc: update to 7.16.11 (#5795) * boinc: update to 7.16.11 * boinc: update patches for 7.16.11 * boinc: disable switcher termux/termux-packages#5668 * boinc: add oobe improvement patches * boinc: simplify disable-whetneon.patch termux/termux-packages#5795 The old patch is getting hard to maintain because someone think it is a good idea to support non-NEON Android devices in 2020. The new patch simplify things by only disable 32bit ARM host detection so that whetneon and whetvfp will not be built which can make the client too complex. Apply this patch and please dont use "-DANDROID" and "--host arm-linux*" * boinc: fix 32bit compatibility on 64bit Termux Remove blocking request 32bit executables and fix it instead. Add patch that unset LD_PRELOAD environment variable before running 32bit BOINC executables. This is applicable for 64bit Android devices running BOINC on Termux. No manual unset from user is needed. * boinc: simplify disable-whetneon.patch v2 --- packages/boinc/build.sh | 7 ++-- packages/boinc/disable-switcher.patch | 12 +++++++ packages/boinc/disable-whetneon.patch | 42 +++++++----------------- packages/boinc/hostinfo_unix.cpp.patch | 17 ++++++++++ packages/boinc/termux-boinc-compat.patch | 37 +++++++++++++++++++++ 5 files changed, 81 insertions(+), 34 deletions(-) create mode 100644 packages/boinc/disable-switcher.patch create mode 100644 packages/boinc/hostinfo_unix.cpp.patch create mode 100644 packages/boinc/termux-boinc-compat.patch diff --git a/packages/boinc/build.sh b/packages/boinc/build.sh index dab054625..803fdeed0 100644 --- a/packages/boinc/build.sh +++ b/packages/boinc/build.sh @@ -1,22 +1,23 @@ TERMUX_PKG_HOMEPAGE=https://boinc.berkeley.edu/ TERMUX_PKG_DESCRIPTION="Open-source software for volunteer computing" TERMUX_PKG_LICENSE="GPL-3.0" -TERMUX_PKG_VERSION=7.16.7 +TERMUX_PKG_VERSION=7.16.11 TERMUX_PKG_SRCURL=https://github.com/BOINC/boinc/archive/client_release/${TERMUX_PKG_VERSION:0:4}/${TERMUX_PKG_VERSION}.tar.gz -TERMUX_PKG_SHA256=38130d532031e75701eee910da64b9eb837e5bfeff9979dbb200c37146be3fed +TERMUX_PKG_SHA256=8a3f9453b16acfd8c636d18b4939c461c751aa1dd9e108cf60b90a3909bfa0a9 TERMUX_PKG_DEPENDS="libandroid-shmem, libc++, libcurl, openssl, zlib" TERMUX_PKG_BUILD_IN_SRC=true TERMUX_PKG_NO_STATICSPLIT=true TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" --disable-server ---enable-client --disable-manager " TERMUX_PKG_CONFFILES="etc/boinc-client.conf" termux_step_pre_configure() { + CFLAGS="${CFLAGS/-Oz/-O2}" + CXXFLAGS="${CXXFLAGS/-Oz/-O2}" LDFLAGS+=" -landroid-shmem" ./_autosetup } diff --git a/packages/boinc/disable-switcher.patch b/packages/boinc/disable-switcher.patch new file mode 100644 index 000000000..5035345dc --- /dev/null +++ b/packages/boinc/disable-switcher.patch @@ -0,0 +1,12 @@ +diff -uNr boinc-client_release-7.16-7.16.11/client/Makefile.am boinc-client_release-7.16-7.16.11.mod/client/Makefile.am +--- boinc-client_release-7.16-7.16.11/client/Makefile.am 2020-08-30 16:04:59.000000000 +0800 ++++ boinc-client_release-7.16-7.16.11.mod/client/Makefile.am 2020-09-11 11:31:44.280000000 +0800 +@@ -25,7 +23,7 @@ + endif + + bin_PROGRAMS = boinc_client boinccmd +-if !OS_WIN32 ++if OS_DARWIN + bin_PROGRAMS += switcher + endif + diff --git a/packages/boinc/disable-whetneon.patch b/packages/boinc/disable-whetneon.patch index b8c8a1e1c..69fe391a4 100644 --- a/packages/boinc/disable-whetneon.patch +++ b/packages/boinc/disable-whetneon.patch @@ -1,32 +1,12 @@ -diff -uNr boinc-client_release-7.14-7.14.3/client/cs_benchmark.cpp boinc-client_release-7.14-7.14.3.mod/client/cs_benchmark.cpp ---- boinc-client_release-7.14-7.14.3/client/cs_benchmark.cpp 2020-03-10 03:47:48.000000000 +0200 -+++ boinc-client_release-7.14-7.14.3.mod/client/cs_benchmark.cpp 2020-03-20 14:06:28.788417500 +0200 -@@ -177,7 +177,7 @@ - bdp->error_str[0] = '\0'; - host_info.clear_host_info(); +diff -uNr boinc-client_release-7.16-7.16.11/configure.ac boinc-client_release-7.16-7.16.11.mod/configure.ac +--- boinc-client_release-7.16-7.16.11/configure.ac 2020-08-30 16:04:59.000000000 +0800 ++++ boinc-client_release-7.16-7.16.11.mod/configure.ac 2020-09-13 16:36:05.730000000 +0800 +@@ -1051,7 +1051,7 @@ + AM_CONDITIONAL(OS_WIN32_MINGW, [echo $host_os | grep '^mingw' > /dev/null]) + dnl or OS2 + AM_CONDITIONAL(OS_OS2, [echo $host_os | grep '^os2' > /dev/null]) +-AM_CONDITIONAL(OS_ARM_LINUX, [echo $host_alias | grep '^arm-linux' > /dev/null]) ++AM_CONDITIONAL(OS_ARM_LINUX, [echo $host_alias | grep '^arm-linux-skip' > /dev/null]) --#if defined(ANDROID) && defined(__arm__) -+#if defined(ANDROID) && defined(__arm__) && !defined(__TERMUX__) - // check for FP accelerator: VFP, Neon, or none; - // run the appropriate version of Whetstone - // (separated using namespaces) -diff -uNr boinc-client_release-7.14-7.14.3/client/Makefile.am boinc-client_release-7.14-7.14.3.mod/client/Makefile.am ---- boinc-client_release-7.14-7.14.3/client/Makefile.am 2020-03-10 03:47:48.000000000 +0200 -+++ boinc-client_release-7.14-7.14.3.mod/client/Makefile.am 2020-03-20 14:01:33.838804535 +0200 -@@ -113,16 +113,6 @@ - - boinc_clientdir = $(bindir) - --if OS_ARM_LINUX --boinc_client_LDADD += libwhetneon.a libwhetvfp.a --noinst_LIBRARIES = libwhetneon.a libwhetvfp.a --libwhetneon_a_SOURCES = whetstone.cpp --libwhetneon_a_CXXFLAGS = $(boinc_client_CXXFLAGS) -DANDROID_NEON -mfloat-abi=softfp -mfpu=neon -- --libwhetvfp_a_SOURCES = whetstone.cpp --libwhetvfp_a_CXXFLAGS = $(boinc_client_CXXFLAGS) -DANDROID_VFP -mfloat-abi=softfp -mfpu=vfp --endif -- - switcher_SOURCES = switcher.cpp - switcher_LDFLAGS = $(AM_LDFLAGS) -L../lib - switcher_LDADD = $(LIBBOINC) + dnl Whether to build fcgi components + AM_CONDITIONAL(ENABLE_FCGI,[test "${enable_fcgi}" = yes]) diff --git a/packages/boinc/hostinfo_unix.cpp.patch b/packages/boinc/hostinfo_unix.cpp.patch new file mode 100644 index 000000000..77ba0b0f4 --- /dev/null +++ b/packages/boinc/hostinfo_unix.cpp.patch @@ -0,0 +1,17 @@ +diff -uNr boinc-client_release-7.16-7.16.11/client/hostinfo_unix.cpp boinc-client_release-7.16-7.16.11.mod/client/hostinfo_unix.cpp +--- boinc-client_release-7.16-7.16.11/client/hostinfo_unix.cpp 2020-08-30 16:04:59.000000000 +0800 ++++ boinc-client_release-7.16-7.16.11.mod/client/hostinfo_unix.cpp 2020-09-11 11:47:27.990000000 +0800 +@@ -1414,11 +1414,11 @@ + #if HAVE_SYS_UTSNAME_H + struct utsname u; + uname(&u); +-#ifdef ANDROID ++#ifdef __ANDROID__ + safe_strcpy(os_name, "Android"); + #else + safe_strcpy(os_name, u.sysname); +-#endif //ANDROID ++#endif // __ANDROID__ + #if defined(__EMX__) // OS2: version is in u.version + safe_strcpy(os_version, u.version); + #elif defined(__HAIKU__) diff --git a/packages/boinc/termux-boinc-compat.patch b/packages/boinc/termux-boinc-compat.patch new file mode 100644 index 000000000..0b91634e9 --- /dev/null +++ b/packages/boinc/termux-boinc-compat.patch @@ -0,0 +1,37 @@ +diff -uNr boinc-client_release-7.16-7.16.11/client/app_start.cpp boinc-client_release-7.16-7.16.11.mod/client/app_start.cpp +--- boinc-client_release-7.16-7.16.11/client/app_start.cpp 2020-08-30 16:04:59.000000000 +0800 ++++ boinc-client_release-7.16-7.16.11.mod/client/app_start.cpp 2020-09-13 21:35:44.960942100 +0800 +@@ -94,6 +94,9 @@ + + #include "app.h" + ++#ifdef __ANDROID__ ++#include // getenv(), setenv(), unsetenv() ++#endif + + #ifdef _WIN32 + // Dynamically link to these functions at runtime; +@@ -1143,6 +1146,23 @@ + // + umask(2); + retval = execv(switcher_path, argv); ++#ifdef __ANDROID__ ++#if defined(__aarch64__) ++ } else if (strstr(exec_name, "arm-android-linux-gnu")) { ++#elif defined(__x86_64__) ++ } else if (strstr(exec_name, "x86-android-linux-gnu")) { ++#endif ++ // Fix Termux 32bit compatibility on 64bit devices ++ argv[0] = buf; ++ parse_command_line(cmdline, argv+1); ++ // backup and unset LD_PRELOAD var ++ char *old_env = getenv("LD_PRELOAD"); ++ unsetenv("LD_PRELOAD"); ++ retval = execv(buf, argv); ++ // set LD_PRELOAD var back ++ setenv("LD_PRELOAD", old_env, 1); ++ free(old_env); ++#endif // __ANDROID__ + } else { + argv[0] = buf; + parse_command_line(cmdline, argv+1);