add adb
libbase-fix-includes.patch unknown status 1
1 | + | This patch fixes the build of adb on linux. It was taken from archlinux. | |
2 | + | ||
3 | + | diff --git a/adb/sysdeps.h b/adb/sysdeps.h | |
4 | + | index 75dcc86..867f3ec 100644 | |
5 | + | --- a/adb/sysdeps.h | |
6 | + | +++ b/adb/sysdeps.h | |
7 | + | @@ -25,6 +25,7 @@ | |
8 | + | #endif | |
9 | + | ||
10 | + | #include <errno.h> | |
11 | + | +#include <sys/syscall.h> | |
12 | + | ||
13 | + | #include <string> | |
14 | + | #include <vector> | |
15 | + | @@ -831,7 +832,16 @@ static __inline__ int adb_is_absolute_host_path(const char* path) { | |
16 | + | ||
17 | + | static __inline__ unsigned long adb_thread_id() | |
18 | + | { | |
19 | + | - return (unsigned long)gettid(); | |
20 | + | + // TODO: this function should be merged with GetThreadId | |
21 | + | +#if defined(__BIONIC__) | |
22 | + | + return gettid(); | |
23 | + | +#elif defined(__APPLE__) | |
24 | + | + return syscall(SYS_thread_selfid); | |
25 | + | +#elif defined(__linux__) | |
26 | + | + return syscall(__NR_gettid); | |
27 | + | +#elif defined(_WIN32) | |
28 | + | + return GetCurrentThreadId(); | |
29 | + | +#endif | |
30 | + | } | |
31 | + | ||
32 | + | #endif /* !_WIN32 */ | |
33 | + | diff --git a/base/errors_unix.cpp b/base/errors_unix.cpp | |
34 | + | index 296995e..48269b6 100644 | |
35 | + | --- a/base/errors_unix.cpp | |
36 | + | +++ b/base/errors_unix.cpp | |
37 | + | @@ -17,6 +17,7 @@ | |
38 | + | #include "android-base/errors.h" | |
39 | + | ||
40 | + | #include <errno.h> | |
41 | + | +#include <string.h> | |
42 | + | ||
43 | + | namespace android { | |
44 | + | namespace base { | |
45 | + | diff --git a/base/file.cpp b/base/file.cpp | |
46 | + | index da1adba..91a3901 100644 | |
47 | + | --- a/base/file.cpp | |
48 | + | +++ b/base/file.cpp | |
49 | + | @@ -20,6 +20,7 @@ | |
50 | + | #include <fcntl.h> | |
51 | + | #include <sys/stat.h> | |
52 | + | #include <sys/types.h> | |
53 | + | +#include <string.h> | |
54 | + | ||
55 | + | #include <string> | |
56 | + | ||
57 | + | diff --git a/base/logging.cpp b/base/logging.cpp | |
58 | + | index 1741871..e97c7f1 100644 | |
59 | + | --- a/base/logging.cpp | |
60 | + | +++ b/base/logging.cpp | |
61 | + | @@ -21,6 +21,7 @@ | |
62 | + | #include "android-base/logging.h" | |
63 | + | ||
64 | + | #include <libgen.h> | |
65 | + | +#include <string.h> | |
66 | + | ||
67 | + | // For getprogname(3) or program_invocation_short_name. | |
68 | + | #if defined(__ANDROID__) || defined(__APPLE__) |
libbase-use-own-logging.patch unknown status 1
1 | + | From e5dd71a290f664d3f3bf0dd8a4bad411dc7ad416 Mon Sep 17 00:00:00 2001 | |
2 | + | From: Elliott Hughes <enh@google.com> | |
3 | + | Date: Thu, 28 Jul 2016 15:15:28 -0700 | |
4 | + | Subject: [PATCH] libbase should use its own logging! | |
5 | + | ||
6 | + | Not doing so led to us using a bogus log tag. | |
7 | + | ||
8 | + | Bug: http://b/30281203 | |
9 | + | Change-Id: I3ac91758a1a043146c65f2ae0f36fcfbe372c30f | |
10 | + | --- | |
11 | + | base/file.cpp | 11 +++++------ | |
12 | + | base/logging.cpp | 3 +-- | |
13 | + | 2 files changed, 6 insertions(+), 8 deletions(-) | |
14 | + | ||
15 | + | diff --git a/base/file.cpp b/base/file.cpp | |
16 | + | index da1adba19..4e7ac82d1 100644 | |
17 | + | --- a/base/file.cpp | |
18 | + | +++ b/base/file.cpp | |
19 | + | @@ -24,9 +24,8 @@ | |
20 | + | #include <string> | |
21 | + | ||
22 | + | #include "android-base/macros.h" // For TEMP_FAILURE_RETRY on Darwin. | |
23 | + | +#include "android-base/logging.h" | |
24 | + | #include "android-base/utf8.h" | |
25 | + | -#define LOG_TAG "base.file" | |
26 | + | -#include "cutils/log.h" | |
27 | + | #include "utils/Compat.h" | |
28 | + | ||
29 | + | namespace android { | |
30 | + | @@ -86,22 +85,22 @@ bool WriteStringToFile(const std::string& content, const std::string& path, | |
31 | + | int flags = O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC | O_NOFOLLOW | O_BINARY; | |
32 | + | int fd = TEMP_FAILURE_RETRY(open(path.c_str(), flags, mode)); | |
33 | + | if (fd == -1) { | |
34 | + | - ALOGE("android::WriteStringToFile open failed: %s", strerror(errno)); | |
35 | + | + PLOG(ERROR) << "android::WriteStringToFile open failed"; | |
36 | + | return false; | |
37 | + | } | |
38 | + | ||
39 | + | // We do an explicit fchmod here because we assume that the caller really | |
40 | + | // meant what they said and doesn't want the umask-influenced mode. | |
41 | + | if (fchmod(fd, mode) == -1) { | |
42 | + | - ALOGE("android::WriteStringToFile fchmod failed: %s", strerror(errno)); | |
43 | + | + PLOG(ERROR) << "android::WriteStringToFile fchmod failed"; | |
44 | + | return CleanUpAfterFailedWrite(path); | |
45 | + | } | |
46 | + | if (fchown(fd, owner, group) == -1) { | |
47 | + | - ALOGE("android::WriteStringToFile fchown failed: %s", strerror(errno)); | |
48 | + | + PLOG(ERROR) << "android::WriteStringToFile fchown failed"; | |
49 | + | return CleanUpAfterFailedWrite(path); | |
50 | + | } | |
51 | + | if (!WriteStringToFd(content, fd)) { | |
52 | + | - ALOGE("android::WriteStringToFile write failed: %s", strerror(errno)); | |
53 | + | + PLOG(ERROR) << "android::WriteStringToFile write failed"; | |
54 | + | return CleanUpAfterFailedWrite(path); | |
55 | + | } | |
56 | + | close(fd); | |
57 | + | diff --git a/base/logging.cpp b/base/logging.cpp | |
58 | + | index 769c266c9..959bb8b05 100644 | |
59 | + | --- a/base/logging.cpp | |
60 | + | +++ b/base/logging.cpp | |
61 | + | @@ -43,12 +43,11 @@ | |
62 | + | ||
63 | + | #include "android-base/macros.h" | |
64 | + | #include "android-base/strings.h" | |
65 | + | -#include "cutils/threads.h" | |
66 | + | ||
67 | + | // Headers for LogMessage::LogLine. | |
68 | + | #ifdef __ANDROID__ | |
69 | + | #include <android/set_abort_message.h> | |
70 | + | -#include "cutils/log.h" | |
71 | + | +#include "log/log.h" | |
72 | + | #else | |
73 | + | #include <sys/types.h> | |
74 | + | #include <unistd.h> | |
75 | + | -- | |
76 | + | 2.11.0 | |
77 | + |
more/packages/android.scm unknown status 1
1 | + | ;;; GNU Guix --- Functional package management for GNU | |
2 | + | ;;; Copyright ?? 2012 Stefan Handschuh <handschuh.stefan@googlemail.com> | |
3 | + | ;;; Copyright ?? 2015 Kai-Chung Yan <seamlikok@gmail.com> | |
4 | + | ;;; Copyright ?? 2016 Marius Bakke <mbakke@fastmail.com> | |
5 | + | ;;; Copyright ?? 2017 Julien Lepiller <julien@lepiller.eu> | |
6 | + | ;;; | |
7 | + | ;;; This file is part of GNU Guix. | |
8 | + | ;;; | |
9 | + | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
10 | + | ;;; under the terms of the GNU General Public License as published by | |
11 | + | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
12 | + | ;;; your option) any later version. | |
13 | + | ;;; | |
14 | + | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
15 | + | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | + | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | + | ;;; GNU General Public License for more details. | |
18 | + | ;;; | |
19 | + | ;;; You should have received a copy of the GNU General Public License | |
20 | + | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
21 | + | ||
22 | + | (define-module (more packages android) | |
23 | + | #:use-module (guix packages) | |
24 | + | #:use-module (guix git-download) | |
25 | + | #:use-module (guix build-system gnu) | |
26 | + | #:use-module ((guix licenses) #:prefix license:) | |
27 | + | #:use-module (gnu packages) | |
28 | + | #:use-module (gnu packages tls)) | |
29 | + | ||
30 | + | ;; The Makefiles that we add are largely based on the Debian | |
31 | + | ;; packages. They are licensed under GPL-2 and have copyright: | |
32 | + | ;; 2012, Stefan Handschuh <handschuh.stefan@googlemail.com> | |
33 | + | ;; 2015, Kai-Chung Yan <seamlikok@gmail.com> | |
34 | + | ;; Big thanks to them for laying the groundwork. | |
35 | + | ||
36 | + | ;; The version tag is consistent between all repositories. | |
37 | + | (define (android-platform-version) "7.1.2_r6") | |
38 | + | ||
39 | + | (define (android-platform-system-core version) | |
40 | + | (origin | |
41 | + | (method git-fetch) | |
42 | + | (uri (git-reference | |
43 | + | (url "https://android.googlesource.com/platform/system/core") | |
44 | + | (commit (string-append "android-" version)))) | |
45 | + | (file-name (string-append "android-platform-system-core-" | |
46 | + | version "-checkout")) | |
47 | + | (sha256 | |
48 | + | (base32 | |
49 | + | "0xc2n7jxrf1iw9cc278pijdfjix2fkiig5ws27f6rwp40zg5mrgg")))) | |
50 | + | ||
51 | + | (define liblog | |
52 | + | (package | |
53 | + | (name "liblog") | |
54 | + | (version (android-platform-version)) | |
55 | + | (source (android-platform-system-core version)) | |
56 | + | (build-system gnu-build-system) | |
57 | + | (arguments | |
58 | + | `(#:tests? #f ; TODO. | |
59 | + | #:make-flags '("CC=gcc") | |
60 | + | #:phases | |
61 | + | (modify-phases %standard-phases | |
62 | + | (add-after 'unpack 'enter-source | |
63 | + | (lambda _ (chdir "liblog") #t)) | |
64 | + | (add-after 'enter-source 'create-Makefile | |
65 | + | (lambda _ | |
66 | + | ;; No useful makefile is shipped, so we create one. | |
67 | + | (with-output-to-file "Makefile" | |
68 | + | (lambda _ | |
69 | + | (display | |
70 | + | (string-append | |
71 | + | "NAME = liblog\n" | |
72 | + | "SOURCES = log_event_list.c log_event_write.c" | |
73 | + | " logger_write.c config_write.c logger_name.c" | |
74 | + | " logger_lock.c fake_log_device.c fake_writer.c" | |
75 | + | " event_tag_map.c\n" | |
76 | + | ||
77 | + | "CFLAGS += -fvisibility=hidden -fPIC\n" | |
78 | + | "CPPFLAGS += -I../include -DFAKE_LOG_DEVICE=1" | |
79 | + | ;; Keep these two in sync with "liblog/Android.bp". | |
80 | + | " -DLIBLOG_LOG_TAG=1005" | |
81 | + | " -DSNET_EVENT_LOG_TAG=1397638484\n" | |
82 | + | "LDFLAGS += -shared -Wl,-soname,$(NAME).so.0 -lpthread\n" | |
83 | + | ||
84 | + | "build: $(SOURCES)\n" | |
85 | + | " $(CC) $^ -o $(NAME).so.0 $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)\n")))))) | |
86 | + | (delete 'configure) | |
87 | + | (replace 'install | |
88 | + | (lambda* (#:key outputs #:allow-other-keys) | |
89 | + | (let* ((out (assoc-ref outputs "out")) | |
90 | + | (lib (string-append out "/lib"))) | |
91 | + | (install-file "liblog.so.0" lib) | |
92 | + | (with-directory-excursion lib | |
93 | + | (symlink "liblog.so.0" "liblog.so")) | |
94 | + | #t)))))) | |
95 | + | (home-page "https://developer.android.com/") | |
96 | + | (synopsis "Logging library from the Android platform.") | |
97 | + | (description "@code{liblog} represents an interface to the volatile Android | |
98 | + | Logging system for NDK (Native) applications and libraries and contain | |
99 | + | interfaces for either writing or reading logs. The log buffers are divided up | |
100 | + | in Main, System, Radio and Events sub-logs.") | |
101 | + | (license license:asl2.0))) | |
102 | + | ||
103 | + | (define libbase | |
104 | + | (package | |
105 | + | (name "libbase") | |
106 | + | (version (android-platform-version)) | |
107 | + | (source (origin | |
108 | + | (inherit (android-platform-system-core version)) | |
109 | + | (patches | |
110 | + | (search-patches "libbase-use-own-logging.patch" | |
111 | + | "libbase-fix-includes.patch")))) | |
112 | + | (build-system gnu-build-system) | |
113 | + | (arguments | |
114 | + | `(#:tests? #f ; TODO. | |
115 | + | #:phases | |
116 | + | (modify-phases %standard-phases | |
117 | + | (add-after 'unpack 'enter-source | |
118 | + | (lambda _ (chdir "base") #t)) | |
119 | + | (add-after 'enter-source 'create-Makefile | |
120 | + | (lambda _ | |
121 | + | ;; No useful makefile is shipped, so we create one. | |
122 | + | (with-output-to-file "Makefile" | |
123 | + | (lambda _ | |
124 | + | (display | |
125 | + | (string-append | |
126 | + | "NAME = libbase\n" | |
127 | + | "SOURCES = file.cpp logging.cpp parsenetaddress.cpp" | |
128 | + | " stringprintf.cpp strings.cpp errors_unix.cpp\n" | |
129 | + | ||
130 | + | "CXXFLAGS += -std=gnu++11 -fPIC\n" | |
131 | + | "CPPFLAGS += -Iinclude -I../include\n" | |
132 | + | "LDFLAGS += -shared -Wl,-soname,$(NAME).so.0" | |
133 | + | " -L.. -llog\n" | |
134 | + | ||
135 | + | "build: $(SOURCES)\n" | |
136 | + | " $(CXX) $^ -o $(NAME).so.0 $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)\n" | |
137 | + | )))))) | |
138 | + | (delete 'configure) | |
139 | + | (replace 'install | |
140 | + | (lambda* (#:key outputs #:allow-other-keys) | |
141 | + | (let* ((out (assoc-ref outputs "out")) | |
142 | + | (lib (string-append out "/lib"))) | |
143 | + | (install-file "libbase.so.0" lib) | |
144 | + | (with-directory-excursion lib | |
145 | + | (symlink "libbase.so.0" "libbase.so")) | |
146 | + | (copy-recursively "include" out) | |
147 | + | #t)))))) | |
148 | + | (inputs `(("liblog" ,liblog))) | |
149 | + | (home-page "https://developer.android.com/") | |
150 | + | (synopsis "Android platform base library") | |
151 | + | (description "@code{libbase} is a library in common use by the | |
152 | + | various Android core host applications.") | |
153 | + | (license license:asl2.0))) | |
154 | + | ||
155 | + | (define libcutils | |
156 | + | (package | |
157 | + | (name "libcutils") | |
158 | + | (version (android-platform-version)) | |
159 | + | (source (android-platform-system-core version)) | |
160 | + | (build-system gnu-build-system) | |
161 | + | (arguments | |
162 | + | `(#:tests? #f ; TODO. | |
163 | + | #:phases | |
164 | + | (modify-phases %standard-phases | |
165 | + | (add-after 'unpack 'enter-source | |
166 | + | (lambda _ (chdir "libcutils") #t)) | |
167 | + | (add-after 'enter-source 'create-Makefile | |
168 | + | (lambda _ | |
169 | + | ;; No useful makefile is shipped, so we create one. | |
170 | + | (with-output-to-file "Makefile" | |
171 | + | (lambda _ | |
172 | + | (display | |
173 | + | (string-append | |
174 | + | "NAME = libcutils\n" | |
175 | + | "SOURCES = load_file.o socket_local_client_unix.o" | |
176 | + | " socket_loopback_client_unix.o socket_network_client_unix.o" | |
177 | + | " socket_loopback_server_unix.o socket_local_server_unix.o" | |
178 | + | " sockets_unix.o socket_inaddr_any_server_unix.o" | |
179 | + | " sockets.o\n" | |
180 | + | "CC = gcc\n" | |
181 | + | ||
182 | + | "CFLAGS += -fPIC\n" | |
183 | + | "CXXFLAGS += -std=gnu++11 -fPIC\n" | |
184 | + | "CPPFLAGS += -Iinclude -I../include\n" | |
185 | + | "LDFLAGS += -shared -Wl,-soname,$(NAME).so.0\n" | |
186 | + | ||
187 | + | "build: $(SOURCES)\n" | |
188 | + | " $(CXX) $^ -o $(NAME).so.0 $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)\n" | |
189 | + | )))))) | |
190 | + | (delete 'configure) | |
191 | + | (replace 'install | |
192 | + | (lambda* (#:key outputs #:allow-other-keys) | |
193 | + | (let* ((out (assoc-ref outputs "out")) | |
194 | + | (lib (string-append out "/lib"))) | |
195 | + | (install-file "libcutils.so.0" lib) | |
196 | + | (with-directory-excursion lib | |
197 | + | (symlink "libcutils.so.0" "libcutils.so")) | |
198 | + | #t)))))) | |
199 | + | (home-page "https://developer.android.com/") | |
200 | + | (synopsis "Android platform c utils library") | |
201 | + | (description "@code{libcutils} is a library in common use by the | |
202 | + | various Android core host applications.") | |
203 | + | (license license:asl2.0))) | |
204 | + | ||
205 | + | (define-public adb | |
206 | + | (package | |
207 | + | (name "adb") | |
208 | + | (version (android-platform-version)) | |
209 | + | (source (origin | |
210 | + | (inherit (android-platform-system-core version)) | |
211 | + | (patches | |
212 | + | (search-patches "libbase-use-own-logging.patch" | |
213 | + | "libbase-fix-includes.patch")))) | |
214 | + | (build-system gnu-build-system) | |
215 | + | (arguments | |
216 | + | `(#:phases | |
217 | + | (modify-phases %standard-phases | |
218 | + | (add-after 'unpack 'enter-source | |
219 | + | (lambda _ (chdir "adb") #t)) | |
220 | + | (add-before 'build 'fix-clang | |
221 | + | (lambda _ | |
222 | + | (substitute* "adb_client.h" | |
223 | + | (("_Nonnull") "") | |
224 | + | (("_Nullable") "")))) | |
225 | + | (add-before 'build 'fix-main | |
226 | + | (lambda _ | |
227 | + | (copy-file "client/main.cpp" "adb_main.cpp"))) | |
228 | + | (add-after 'enter-source 'create-Makefile | |
229 | + | (lambda* (#:key outputs #:allow-other-keys) | |
230 | + | ;; No useful makefile is shipped, so we create one. | |
231 | + | (with-output-to-file "Makefile" | |
232 | + | (lambda _ | |
233 | + | (display | |
234 | + | (string-append | |
235 | + | ;; Common for all components. | |
236 | + | "CXXFLAGS += -std=gnu++14 -fpermissive\n" | |
237 | + | "CPPFLAGS += -I../include -I../base/include -I. -DADB_HOST=1 " | |
238 | + | "-DADB_REVISION='\"" ,version "\"' -fPIC\n" | |
239 | + | "LDFLAGS += -lcrypto -lpthread -lbase -lcutils -L. -ladb\n" | |
240 | + | ||
241 | + | ;; Libadb specifics. | |
242 | + | "LIBADB_SOURCES = adb.cpp adb_auth.cpp adb_io.cpp " | |
243 | + | "adb_listeners.cpp adb_trace.cpp adb_utils.cpp fdevent.cpp " | |
244 | + | "sockets.cpp transport.cpp transport_local.cpp transport_usb.cpp " | |
245 | + | "get_my_path_linux.cpp sysdeps_unix.cpp usb_linux.cpp " | |
246 | + | "adb_auth_host.cpp diagnose_usb.cpp services.cpp " | |
247 | + | "shell_service_protocol.cpp bugreport.cpp line_printer.cpp\n" | |
248 | + | ||
249 | + | "LIBADB_LDFLAGS += -shared -Wl,-soname,libadb.so.0 " | |
250 | + | "-lcrypto -lpthread -lbase\n" | |
251 | + | ||
252 | + | ;; Adb specifics. | |
253 | + | "ADB_SOURCES = adb_main.cpp console.cpp commandline.cpp " | |
254 | + | "adb_client.cpp file_sync_client.cpp\n" | |
255 | + | "ADB_LDFLAGS += -Wl,-rpath=" (assoc-ref outputs "out") "/lib\n" | |
256 | + | ||
257 | + | "build: libadb $(ADB_SOURCES)\n" | |
258 | + | " $(CXX) $(ADB_SOURCES) -o adb $(CXXFLAGS) $(CPPFLAGS) " | |
259 | + | "$(ADB_LDFLAGS) $(LDFLAGS)\n" | |
260 | + | ||
261 | + | "libadb: $(LIBADB_SOURCES)\n" | |
262 | + | " $(CXX) $^ -o libadb.so.0 $(CXXFLAGS) $(CPPFLAGS) " | |
263 | + | "$(LIBADB_LDFLAGS)\n" | |
264 | + | " ln -sv libadb.so.0 libadb.so\n" | |
265 | + | )))))) | |
266 | + | (delete 'configure) | |
267 | + | (replace 'install | |
268 | + | (lambda* (#:key outputs #:allow-other-keys) | |
269 | + | (let* ((out (assoc-ref outputs "out")) | |
270 | + | (lib (string-append out "/lib")) | |
271 | + | (bin (string-append out "/bin"))) | |
272 | + | (install-file "libadb.so.0" lib) | |
273 | + | (install-file "adb" bin) | |
274 | + | (with-directory-excursion lib | |
275 | + | (symlink "libadb.so.0" "libadb.so")) | |
276 | + | #t)))) | |
277 | + | ;; Test suite must be run with attached devices | |
278 | + | #:tests? #f)) | |
279 | + | (inputs | |
280 | + | `(("libbase" ,libbase) | |
281 | + | ("libcutils" ,libcutils) | |
282 | + | ("openssl" ,openssl))) | |
283 | + | (home-page "https://developer.android.com/studio/command-line/adb.html") | |
284 | + | (synopsis "Android Debug Bridge") | |
285 | + | (description | |
286 | + | "@command{adb} is a versatile command line tool that lets you communicate | |
287 | + | with an emulator instance or connected Android device. It facilitates a variety | |
288 | + | of device actions, such as installing and debugging apps, and it provides access | |
289 | + | to a Unix shell that can run commands on the connected device or emulator.") | |
290 | + | (license license:asl2.0))) |