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:
parent
5d0d09cb5d
commit
794f8f791b
@ -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()
|
||||
{
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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)
|
82
packages/boinc/client-app_start.cpp.patch
Normal file
82
packages/boinc/client-app_start.cpp.patch
Normal 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;
|
47
packages/boinc/client-hostinfo_network.cpp.patch
Normal file
47
packages/boinc/client-hostinfo_network.cpp.patch
Normal 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
|
||||
|
26
packages/boinc/client-hostinfo_unix.cpp.patch
Normal file
26
packages/boinc/client-hostinfo_unix.cpp.patch
Normal 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"},
|
||||
},
|
@ -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:
|
12
packages/boinc/configure.ac.patch
Normal file
12
packages/boinc/configure.ac.patch
Normal 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])
|
@ -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
|
||||
|
@ -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])
|
@ -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__)
|
12
packages/boinc/lib-gui_rpc_client.cpp.patch
Normal file
12
packages/boinc/lib-gui_rpc_client.cpp.patch
Normal 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) {
|
@ -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
|
||||
|
@ -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);
|
12
packages/boinc/version.h.in.patch
Normal file
12
packages/boinc/version.h.in.patch
Normal 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 */
|
Loading…
Reference in New Issue
Block a user