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