boinc: update to 7.18.1 (#8394)

* boinc: update to 7.18.1

  * change to per-file patches
  * add bash completion
  * add device detection by default
  * add optional Linux task support via proot
  * disable unused code path for Termux

* boinc: fix prerelease message
This commit is contained in:
Jia Yuan Lo 2021-12-29 23:40:36 +08:00 committed by GitHub
parent 5d0d09cb5d
commit 794f8f791b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 220 additions and 94 deletions

View File

@ -1,6 +1,6 @@
diff -uNr boinc-client_release-7.16-7.16.16/_autosetup boinc-client_release-7.16-7.16.16.mod/_autosetup
--- boinc-client_release-7.16-7.16.16/_autosetup 2021-02-01 07:38:58.000000000 +0800
+++ boinc-client_release-7.16-7.16.16.mod/_autosetup 2021-10-23 10:32:01.471359652 +0800
diff -uNr boinc-client_release-7.18-7.18.1/_autosetup boinc-client_release-7.18-7.18.1.mod/_autosetup
--- boinc-client_release-7.18-7.18.1/_autosetup 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/_autosetup 2021-12-27 20:03:46.335967627 +0800
@@ -19,7 +19,7 @@
check_version()
{

View File

@ -2,10 +2,9 @@ TERMUX_PKG_HOMEPAGE=https://boinc.berkeley.edu/
TERMUX_PKG_DESCRIPTION="Open-source software for volunteer computing"
TERMUX_PKG_LICENSE="GPL-3.0"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION=7.16.16
TERMUX_PKG_REVISION=2
TERMUX_PKG_VERSION=7.18.1
TERMUX_PKG_SRCURL=https://github.com/BOINC/boinc/archive/client_release/${TERMUX_PKG_VERSION:0:4}/${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_SHA256=0d5656a9f8ed1048936a5764270848b892d63f27bdb863d0ace447f1eaae6002
TERMUX_PKG_SHA256=274388d9c49e488b6c8502ffc6eb605d5ceae391fb0c2fc56dbb0254d0ceb27e
TERMUX_PKG_DEPENDS="libandroid-shmem, libc++, libcurl, openssl, zlib"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_NO_STATICSPLIT=true
@ -24,3 +23,8 @@ termux_step_pre_configure() {
LDFLAGS+=" -landroid-shmem"
./_autosetup
}
termux_step_post_make_install() {
mkdir -p "$TERMUX_PREFIX/share/bash-completion/completions"
install -m 644 "$TERMUX_PKG_SRCDIR/client/scripts/boinc.bash" "$TERMUX_PREFIX/share/bash-completion/completions/boinc"
}

View File

@ -1,7 +1,16 @@
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 01:47:48.000000000 +0000
+++ boinc-client_release-7.14-7.14.3.mod/client/Makefile.am 2020-03-20 10:52:41.680052794 +0000
@@ -133,12 +133,12 @@
diff -uNr boinc-client_release-7.18-7.18.1/client/Makefile.am boinc-client_release-7.18-7.18.1.mod/client/Makefile.am
--- boinc-client_release-7.18-7.18.1/client/Makefile.am 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/client/Makefile.am 2021-12-27 20:14:51.115967152 +0800
@@ -25,7 +25,7 @@
endif
bin_PROGRAMS = boinc_client boinccmd boinc
-if !OS_WIN32
+if OS_DARWIN
bin_PROGRAMS += switcher
endif
@@ -139,12 +139,12 @@
boinc$(EXEEXT): boinc_client$(EXEEXT)
rm -f boinc$(EXEEXT) .libs/boinc$(EXEEXT)

View File

@ -0,0 +1,82 @@
diff -uNr boinc-client_release-7.18-7.18.1/client/app_start.cpp boinc-client_release-7.18-7.18.1.mod/client/app_start.cpp
--- boinc-client_release-7.18-7.18.1/client/app_start.cpp 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/client/app_start.cpp 2021-12-29 19:46:22.481460428 +0800
@@ -81,6 +81,10 @@
#include "app.h"
+#ifdef __ANDROID__
+#include <stdlib.h> // getenv(), setenv(), unsetenv()
+char helper_path[] = "@TERMUX_PREFIX@/bin/proot";
+#endif
#ifdef _WIN32
// Dynamically link to these functions at runtime;
@@ -1129,6 +1133,49 @@
//
umask(2);
retval = execv(switcher_path, argv);
+#ifdef __ANDROID__
+#if defined(__aarch64__) || defined(__arm__)
+ } else if (strstr(exec_name, "unknown-linux-gnu")) {
+#elif defined(__x86_64__) || defined(__i386__)
+ } else if (strstr(exec_name, "pc-linux-gnu")) {
+#endif
+ // experimental GNU/Linux tasks support via proot
+ argv[0] = helper_path;
+ argv[1] = buf;
+ parse_command_line(cmdline, argv+2);
+ // unsure this debug copied from above works or not
+ if (log_flags.task_debug) {
+ debug_print_argv(argv);
+ }
+ // backup and unset LD_PRELOAD var for proot
+ char *old_env = getenv("LD_PRELOAD");
+ unsetenv("LD_PRELOAD");
+ // helper_path must be valid and exists to work
+ retval = execv(helper_path, argv);
+ // set LD_PRELOAD var back
+ setenv("LD_PRELOAD", old_env, 1);
+ free(old_env);
+#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
+#if defined(__aarch64__) || defined(__x86_64__)
+ // fix Termux 32bit compatibility on 64bit devices
+ // should be no longer required as its fixed on
+ // termux-exec side, kept for references
+ // https://github.com/termux/termux-exec/pull/17
+ 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
+#endif // __ANDROID__
} else {
argv[0] = buf;
parse_command_line(cmdline, argv+1);
@@ -1151,6 +1198,17 @@
);
}
+#ifdef __ANDROID__
+ // get debug info from client not from forked task
+#if defined(__aarch64__) || defined(__arm__)
+ if (strstr(exec_name, "unknown-linux-gnu")) {
+#elif defined(__x86_64__) || defined(__i386__)
+ if (strstr(exec_name, "pc-linux-gnu")) {
+#endif
+ msg_printf(NULL, MSG_INFO, "Helper: Running %s via %s\n", exec_name, helper_path);
+ }
+#endif // __ANDROID__
+
#endif
set_task_state(PROCESS_EXECUTING, "start");
return 0;

View File

@ -0,0 +1,47 @@
diff -uNr boinc-client_release-7.18-7.18.1/client/hostinfo_network.cpp boinc-client_release-7.18-7.18.1.mod/client/hostinfo_network.cpp
--- boinc-client_release-7.18-7.18.1/client/hostinfo_network.cpp 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/client/hostinfo_network.cpp 2021-12-29 18:50:29.025462827 +0800
@@ -44,6 +44,10 @@
#include <Carbon/Carbon.h>
#endif
+#ifdef __ANDROID__
+#include <sys/system_properties.h> // PROP_VALUE_MAX
+#endif
+
#include "error_numbers.h"
#include "file_names.h"
#include "mac_address.h"
@@ -58,17 +62,29 @@
#include "hostinfo.h"
// get domain name and IP address of this host
-// Android: if domain_name is empty, set it to android_xxxxxxxx
+// Android: if domain_name is empty, set it to "brand model xxxxxxxx"
+// else fallback to android_xxxxxxxx
//
int HOST_INFO::get_local_network_info() {
safe_strcpy(ip_addr, "");
-#ifdef ANDROID
+#ifdef __ANDROID__
if (strlen(domain_name) && strcmp(domain_name, "localhost")) return 0;
+ char android_brand[PROP_VALUE_MAX];
+ char android_model[PROP_VALUE_MAX];
char buf[256];
make_random_string("", buf);
buf[8] = 0;
- snprintf(domain_name, sizeof(domain_name), "android_%s", buf);
+ __system_property_get("ro.product.brand", android_brand);
+ __system_property_get("ro.product.model", android_model);
+ if (strlen(android_brand) && strlen(android_model)) {
+ snprintf(domain_name, sizeof(domain_name), "%s %s %s", android_brand, android_model, buf);
+ } else {
+ snprintf(domain_name, sizeof(domain_name), "android_%s", buf);
+ }
+ if (!cc_config.device_name.empty()) {
+ safe_strcpy(domain_name, cc_config.device_name.c_str());
+ }
return 0;
#endif

View File

@ -0,0 +1,26 @@
diff -uNr boinc-client_release-7.18-7.18.1/client/hostinfo_unix.cpp boinc-client_release-7.18-7.18.1.mod/client/hostinfo_unix.cpp
--- boinc-client_release-7.18-7.18.1/client/hostinfo_unix.cpp 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/client/hostinfo_unix.cpp 2021-12-29 17:16:37.153466855 +0800
@@ -1536,11 +1536,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__)
@@ -1698,7 +1698,7 @@
return false;
}
} tty_patterns[] = {
-#if defined(LINUX_LIKE_SYSTEM) and !defined(ANDROID)
+#if defined(LINUX_LIKE_SYSTEM) and !defined(__ANDROID__)
{ "/dev", "tty",
{"ttyS", "ttyACM"},
},

View File

@ -1,6 +1,6 @@
diff -uNr boinc-client_release-7.14-7.14.3/client/scripts/Makefile.am boinc-client_release-7.14-7.14.3.mod/client/scripts/Makefile.am
--- boinc-client_release-7.14-7.14.3/client/scripts/Makefile.am 2020-03-10 01:47:48.000000000 +0000
+++ boinc-client_release-7.14-7.14.3.mod/client/scripts/Makefile.am 2020-03-20 10:47:24.478829058 +0000
diff -uNr boinc-client_release-7.18-7.18.1/client/scripts/Makefile.am boinc-client_release-7.18-7.18.1.mod/client/scripts/Makefile.am
--- boinc-client_release-7.18-7.18.1/client/scripts/Makefile.am 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/client/scripts/Makefile.am 2021-12-27 20:14:58.743967146 +0800
@@ -2,21 +2,21 @@
install-exec-hook:

View File

@ -0,0 +1,12 @@
diff -uNr boinc-client_release-7.18-7.18.1/configure.ac boinc-client_release-7.18-7.18.1.mod/configure.ac
--- boinc-client_release-7.18-7.18.1/configure.ac 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/configure.ac 2021-12-27 20:13:32.143967208 +0800
@@ -1071,7 +1071,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])
AM_CONDITIONAL(OS_ARMV6_LINUX, [echo $host_alias | grep '^armv6-linux' > /dev/null])
AM_CONDITIONAL(ANDROID, [test x"${ANDROID}" = xyes])
AM_CONDITIONAL(BUILD_WITH_VCPKG, [test "${enable_vcpkg}" = yes])

View File

@ -1,12 +0,0 @@
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,12 +0,0 @@
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])
dnl Whether to build fcgi components
AM_CONDITIONAL(ENABLE_FCGI,[test "${enable_fcgi}" = yes])

View File

@ -1,17 +0,0 @@
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,12 @@
diff -uNr boinc-client_release-7.18-7.18.1/lib/gui_rpc_client.cpp boinc-client_release-7.18-7.18.1.mod/lib/gui_rpc_client.cpp
--- boinc-client_release-7.18-7.18.1/lib/gui_rpc_client.cpp 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/lib/gui_rpc_client.cpp 2021-12-29 19:11:49.145461911 +0800
@@ -416,7 +416,7 @@
char msg_buf[1024];
FILE* f = fopen(GUI_RPC_PASSWD_FILE, "r");
if (!f) {
-#if defined(__linux__)
+#if defined(__linux__) && !defined(__ANDROID__)
#define HELP_URL "https://boinc.berkeley.edu/gui_rpc.php"
char path[MAXPATHLEN];
if (errno == EACCES) {

View File

@ -1,6 +1,6 @@
diff -uNr boinc-client_release-7.16-7.16.6/lib/synch.cpp boinc-client_release-7.16-7.16.6.mod/lib/synch.cpp
--- boinc-client_release-7.16-7.16.6/lib/synch.cpp 2020-03-23 07:13:30.000000000 +0200
+++ boinc-client_release-7.16-7.16.6.mod/lib/synch.cpp 2020-04-16 14:37:09.972107225 +0300
diff -uNr boinc-client_release-7.18-7.18.1/lib/synch.cpp boinc-client_release-7.18-7.18.1.mod/lib/synch.cpp
--- boinc-client_release-7.18-7.18.1/lib/synch.cpp 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/lib/synch.cpp 2021-12-27 20:14:42.835967158 +0800
@@ -18,7 +18,7 @@
// interfaces for accessing sempahores

View File

@ -1,37 +0,0 @@
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);

View File

@ -0,0 +1,12 @@
diff -uNr boinc-client_release-7.18-7.18.1/version.h.in boinc-client_release-7.18-7.18.1.mod/version.h.in
--- boinc-client_release-7.18-7.18.1/version.h.in 2021-08-03 23:52:19.000000000 +0800
+++ boinc-client_release-7.18-7.18.1.mod/version.h.in 2021-12-29 21:29:50.585455988 +0800
@@ -22,7 +22,7 @@
#define BOINC_VERSION_STRING "@BOINC_VERSION_STRING@"
/* Package is a pre-release (Alpha/Beta) package */
-#define BOINC_PRERELEASE 1
+//#define BOINC_PRERELEASE 1
#if (defined(_WIN32) || defined(__APPLE__))
/* Name of package */