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
This commit is contained in:
Jia Yuan Lo 2020-09-14 00:50:12 +08:00 committed by GitHub
parent 831e8bb971
commit 95d0149704
5 changed files with 81 additions and 34 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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])

View File

@ -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__)

View File

@ -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 <stdlib.h> // 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);