Skip to content
Snippets Groups Projects
Commit f191a628 authored by Hans-Christoph Steiner's avatar Hans-Christoph Steiner
Browse files

move patches into tor-android-0.4.1 branch in our tor fork

Since all the related projects, the official repo is:
https://github.com/guardianproject/tor

The CI builds are on the GitLab mirror:
https://gitlab.com/guardianproject/tor/pipelines

* remove logcat rename patch, it is obsolete
  https://trac.torproject.org/projects/tor/ticket/31882#comment:20
parent 007f58c9
Branches
Tags
No related merge requests found
[submodule "external/tor"] [submodule "external/tor"]
path = external/tor path = external/tor
url = https://git.torproject.org/git/tor.git url = https://github.com/guardianproject/tor.git
ignore = dirty ignore = dirty
[submodule "external/libevent"] [submodule "external/libevent"]
path = external/libevent path = external/libevent
......
From dcd556f41ca90b8b4bc60d592472d064b74c9b90 Mon Sep 17 00:00:00 2001
From: Hans-Christoph Steiner <hans@eds.org>
Date: Thu, 10 Oct 2019 12:12:59 +0200
Subject: [PATCH 1/3] use standard __ANDROID__ macro for detecting Android
https://sourceforge.net/p/predef/wiki/OperatingSystems/#android
```console
$ for clang in /opt/android-ndk-r20/toolchains/llvm/prebuilt/linux-x86_64/bin/*-clang; do printf "%s\t" `basename $clang`; $clang -E -dM - < /dev/null | grep __ANDROID__; done
aarch64-linux-android21-clang #define __ANDROID__ 1
aarch64-linux-android22-clang #define __ANDROID__ 1
aarch64-linux-android23-clang #define __ANDROID__ 1
aarch64-linux-android24-clang #define __ANDROID__ 1
aarch64-linux-android26-clang #define __ANDROID__ 1
aarch64-linux-android27-clang #define __ANDROID__ 1
aarch64-linux-android28-clang #define __ANDROID__ 1
aarch64-linux-android29-clang #define __ANDROID__ 1
armv7a-linux-androideabi16-clang #define __ANDROID__ 1
armv7a-linux-androideabi17-clang #define __ANDROID__ 1
armv7a-linux-androideabi18-clang #define __ANDROID__ 1
armv7a-linux-androideabi19-clang #define __ANDROID__ 1
armv7a-linux-androideabi21-clang #define __ANDROID__ 1
armv7a-linux-androideabi22-clang #define __ANDROID__ 1
armv7a-linux-androideabi23-clang #define __ANDROID__ 1
armv7a-linux-androideabi24-clang #define __ANDROID__ 1
armv7a-linux-androideabi26-clang #define __ANDROID__ 1
armv7a-linux-androideabi27-clang #define __ANDROID__ 1
armv7a-linux-androideabi28-clang #define __ANDROID__ 1
armv7a-linux-androideabi29-clang #define __ANDROID__ 1
i686-linux-android16-clang #define __ANDROID__ 1
i686-linux-android17-clang #define __ANDROID__ 1
i686-linux-android18-clang #define __ANDROID__ 1
i686-linux-android19-clang #define __ANDROID__ 1
i686-linux-android21-clang #define __ANDROID__ 1
i686-linux-android22-clang #define __ANDROID__ 1
i686-linux-android23-clang #define __ANDROID__ 1
i686-linux-android24-clang #define __ANDROID__ 1
i686-linux-android26-clang #define __ANDROID__ 1
i686-linux-android27-clang #define __ANDROID__ 1
i686-linux-android28-clang #define __ANDROID__ 1
i686-linux-android29-clang #define __ANDROID__ 1
x86_64-linux-android21-clang #define __ANDROID__ 1
x86_64-linux-android22-clang #define __ANDROID__ 1
x86_64-linux-android23-clang #define __ANDROID__ 1
x86_64-linux-android24-clang #define __ANDROID__ 1
x86_64-linux-android26-clang #define __ANDROID__ 1
x86_64-linux-android27-clang #define __ANDROID__ 1
x86_64-linux-android28-clang #define __ANDROID__ 1
x86_64-linux-android29-clang #define __ANDROID__ 1
$ for gcc in /opt/android-ndk-r10e/toolchains/*/prebuilt/*/bin/*-gcc; do printf "%s\t" `basename $gcc`; $gcc -E -dM - < /dev/null | grep __ANDROID__; done
aarch64-linux-android-gcc #define __ANDROID__ 1
arm-linux-androideabi-gcc #define __ANDROID__ 1
arm-linux-androideabi-gcc #define __ANDROID__ 1
mips64el-linux-android-gcc #define __ANDROID__ 1
mipsel-linux-android-gcc #define __ANDROID__ 1
mipsel-linux-android-gcc #define __ANDROID__ 1
i686-linux-android-gcc #define __ANDROID__ 1
i686-linux-android-gcc #define __ANDROID__ 1
x86_64-linux-android-gcc #define __ANDROID__ 1
```
---
src/app/config/config.c | 4 ++--
src/lib/log/log.c | 16 ++++++++--------
src/lib/log/log.h | 4 ++--
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/app/config/config.c b/src/app/config/config.c
index deda2448b..5ba187256 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -5735,14 +5735,14 @@ options_init_logs(const or_options_t *old_options, or_options_t *options,
}
if (!strcasecmp(smartlist_get(elts, 0), "android")) {
-#ifdef HAVE_ANDROID_LOG_H
+#ifdef __ANDROID__
if (!validate_only) {
add_android_log(severity, options->AndroidIdentityTag);
}
#else
log_warn(LD_CONFIG, "Android logging is not supported"
" on this system. Sorry.");
-#endif /* defined(HAVE_ANDROID_LOG_H) */
+#endif /* defined(__ANDROID__) */
goto cleanup;
}
}
diff --git a/src/lib/log/log.c b/src/lib/log/log.c
index 83f04a346..55588301f 100644
--- a/src/lib/log/log.c
+++ b/src/lib/log/log.c
@@ -51,9 +51,9 @@
#include "lib/fdio/fdio.h"
#include "lib/cc/ctassert.h"
-#ifdef HAVE_ANDROID_LOG_H
+#ifdef __ANDROID__
#include <android/log.h>
-#endif // HAVE_ANDROID_LOG_H.
+#endif // __ANDROID__
/** @{ */
/** The string we stick at the end of a log message when it is too long,
@@ -126,7 +126,7 @@ should_log_function_name(log_domain_mask_t domain, int severity)
}
}
-#ifdef HAVE_ANDROID_LOG_H
+#ifdef __ANDROID__
/** Helper function to convert Tor's log severity into the matching
* Android log priority.
*/
@@ -151,7 +151,7 @@ severity_to_android_log_priority(int severity)
// LCOV_EXCL_STOP
}
}
-#endif /* defined(HAVE_ANDROID_LOG_H) */
+#endif /* defined(__ANDROID__) */
/** A mutex to guard changes to logfiles and logging. */
static tor_mutex_t log_mutex;
@@ -538,10 +538,10 @@ logfile_deliver(logfile_t *lf, const char *buf, size_t msg_len,
#endif /* defined(MAXLINE) */
#endif /* defined(HAVE_SYSLOG_H) */
} else if (lf->is_android) {
-#ifdef HAVE_ANDROID_LOG_H
+#ifdef __ANDROID__
int priority = severity_to_android_log_priority(severity);
__android_log_write(priority, lf->android_tag, msg_after_prefix);
-#endif // HAVE_ANDROID_LOG_H.
+#endif // __ANDROID__
} else if (lf->callback) {
if (domain & LD_NOCB) {
if (!*callbacks_deferred && pending_cb_messages) {
@@ -1268,7 +1268,7 @@ add_syslog_log(const log_severity_list_t *severity,
}
#endif /* defined(HAVE_SYSLOG_H) */
-#ifdef HAVE_ANDROID_LOG_H
+#ifdef __ANDROID__
/**
* Add a log handler to send messages to the Android platform log facility.
*/
@@ -1299,7 +1299,7 @@ add_android_log(const log_severity_list_t *severity,
UNLOCK_LOGS();
return 0;
}
-#endif /* defined(HAVE_ANDROID_LOG_H) */
+#endif /* defined(__ANDROID__) */
/** If <b>level</b> is a valid log severity, return the corresponding
* numeric value. Otherwise, return -1. */
diff --git a/src/lib/log/log.h b/src/lib/log/log.h
index 8e3601261..f339b813b 100644
--- a/src/lib/log/log.h
+++ b/src/lib/log/log.h
@@ -173,10 +173,10 @@ int add_file_log(const log_severity_list_t *severity,
int add_syslog_log(const log_severity_list_t *severity,
const char* syslog_identity_tag);
#endif // HAVE_SYSLOG_H.
-#ifdef HAVE_ANDROID_LOG_H
+#ifdef __ANDROID__
int add_android_log(const log_severity_list_t *severity,
const char *android_identity_tag);
-#endif // HAVE_ANDROID_LOG_H.
+#endif // __ANDROID__.
int add_callback_log(const log_severity_list_t *severity, log_callback cb);
typedef void (*pending_callback_callback)(void);
void logs_set_pending_callback_callback(pending_callback_callback cb);
--
2.20.1
From 86f96d4ea08c12d53d398aa863b82960ac54c6bd Mon Sep 17 00:00:00 2001
From: Hans-Christoph Steiner <hans@eds.org>
Date: Tue, 10 Sep 2019 23:08:02 +0200
Subject: [PATCH 2/3] move Android build setup into --enable-android flag
---
configure.ac | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/configure.ac b/configure.ac
index bd961e74e..1e7b5439e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -95,6 +95,22 @@ else
[Defined if we're building with OpenSSL or LibreSSL])
fi
+dnl Enable Android only features.
+AC_ARG_ENABLE(android,
+ AS_HELP_STRING(--enable-android, [setup build for Android exeutable/shared library]))
+
+if test "x$enable_android" = "xyes"; then
+ asciidoc=false
+ enable_html_manual=no
+ enable_manpage=no
+ enable_pic=yes
+ enable_system_torrc=no
+ enable_tool_name_check=no
+ have_systemd=no
+
+ LIBS="-llog $LIBS"
+fi
+
if test "$enable_static_tor" = "yes"; then
enable_static_libevent="yes";
enable_static_openssl="yes";
@@ -124,7 +140,7 @@ AC_ARG_ENABLE(asciidoc,
"yes") asciidoc=true ;;
"no") asciidoc=false ;;
*) AC_MSG_ERROR(bad value for --disable-asciidoc) ;;
- esac], [asciidoc=true])
+ esac], [test "x$asciidoc" = "xtrue" && asciidoc=true])
# systemd notify support
AC_ARG_ENABLE(systemd,
@@ -234,20 +250,6 @@ if test x$enable_event_tracing_debug = xyes; then
AC_DEFINE([TOR_EVENT_TRACING_ENABLED], [1], [Compile the event tracing instrumentation])
fi
-dnl Enable Android only features.
-AC_ARG_ENABLE(android,
- AS_HELP_STRING(--enable-android, [build with Android features enabled]))
-AM_CONDITIONAL([USE_ANDROID], [test "x$enable_android" = "xyes"])
-
-if test "x$enable_android" = "xyes"; then
- AC_DEFINE([USE_ANDROID], [1], [Compile with Android specific features enabled])
-
- dnl Check if the Android log library is available.
- AC_CHECK_HEADERS([android/log.h])
- AC_SEARCH_LIBS(__android_log_write, [log])
-
-fi
-
dnl ---
dnl Tor modules options. These options are namespaced with --disable-module-XXX
dnl ---
--
2.20.1
From 72391f11f9ad941b2191eca22abe2bb5c8b8cc34 Mon Sep 17 00:00:00 2001
From: Hans-Christoph Steiner <hans@eds.org>
Date: Thu, 10 Oct 2019 12:16:28 +0200
Subject: [PATCH 3/3] Android's logging mechanism is called "logcat"
"logcat" is to Android as "syslog" is to UNIX. It is a widely standardized
and used name throughout Android.
* https://developer.android.com/studio/command-line/logcat
* https://developer.android.com/studio/debug/am-logcat
* https://source.android.com/reference/tradefed/com/android/tradefed/util/LogcatEventParser
---
src/app/config/config.c | 2 +-
src/lib/log/log.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/app/config/config.c b/src/app/config/config.c
index 5ba187256..25954f6c9 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -5734,7 +5734,7 @@ options_init_logs(const or_options_t *old_options, or_options_t *options,
goto cleanup;
}
- if (!strcasecmp(smartlist_get(elts, 0), "android")) {
+ if (!strcasecmp(smartlist_get(elts, 0), "logcat")) {
#ifdef __ANDROID__
if (!validate_only) {
add_android_log(severity, options->AndroidIdentityTag);
diff --git a/src/lib/log/log.c b/src/lib/log/log.c
index 55588301f..c195c7aa8 100644
--- a/src/lib/log/log.c
+++ b/src/lib/log/log.c
@@ -1479,7 +1479,7 @@ parse_log_severity_config(const char **cfg_ptr,
!strcasecmpstart(cfg, "stderr") ||
!strcasecmpstart(cfg, "stdout") ||
!strcasecmpstart(cfg, "syslog") ||
- !strcasecmpstart(cfg, "android")) {
+ !strcasecmpstart(cfg, "logcat")) {
goto done;
}
if (got_an_unqualified_range > 1)
--
2.20.1
...@@ -252,16 +252,8 @@ zstd-clean: ...@@ -252,16 +252,8 @@ zstd-clean:
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# tor # tor
export PKG_CONFIG_PATH := $(EXTERNAL_ROOT)/lib/pkgconfig
tor/Makefile: tor/configure.ac tor/Makefile.am tor/Makefile: tor/configure.ac tor/Makefile.am
@which pkg-config || (echo "ERROR: pkg-config is required! apt-get install pkg-config"; exit 1) @which pkg-config || (echo "ERROR: pkg-config is required! apt-get install pkg-config"; exit 1)
cd tor && \
git status && \
git checkout configure.ac src/app/config/config.c src/lib/log/log.c src/lib/log/log.h && \
patch -N -p1 --reject-file=- < ../0001-use-standard-__ANDROID__-macro-for-detecting-Android.patch && \
patch -N -p1 --reject-file=- < ../0002-move-Android-build-setup-into-enable-android-flag.patch && \
patch -N -p1 --reject-file=- < ../0003-Android-s-logging-mechanism-is-called-logcat.patch
cd tor && ./autogen.sh cd tor && ./autogen.sh
cd tor && \ cd tor && \
./configure \ ./configure \
......
Subproject commit d10abc0929f4941d564b72a349aaf421aaa268f3 Subproject commit 088a2e504aae1c268ad8d8f533661eb2fc4c0f46
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment