aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/dynamic-layers
diff options
context:
space:
mode:
authorEtienne Cordonnier <ecordonnier@snap.com>2023-03-10 16:49:28 +0100
committerKhem Raj <raj.khem@gmail.com>2023-03-14 09:39:58 -0700
commitb65453d5bc3b4826265188d67942202d8f1035e7 (patch)
treeffc1824528db8b8190d294851406be13abf849f8 /meta-oe/dynamic-layers
parentb85ae59968f4e7f4872e4766e49b62f191384242 (diff)
downloadmeta-openembedded-contrib-b65453d5bc3b4826265188d67942202d8f1035e7.tar.gz
android-tools 10: various fixes
- fix img2simg which was broken in the original recipe (wrong rpath and missing linking to libbase) - remove clang dependency and make it compile with gcc - fix installation of img2simg and simg2img which was broken in the original recipe - backport patch https://github.com/nmeum/android-tools/blob/master/patches/adb/0023-Update-usage-of-usbdevfs_urb-to-match-new-kernel-UAP.patch The license is MIT, so it can be used. Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe/dynamic-layers')
-rw-r--r--meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/0001-patching-libundwind-to-build-in-yocto-environment.patch2
-rw-r--r--meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0004-patching-fastboot.mk-to-build-in-yocto-environment.patch6
-rw-r--r--meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0017-Update-usage-of-usbdevfs_urb-to-match-new-kernel-UAP.patch128
-rw-r--r--meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0018-img2simg-Fix-wrong-rpath.patch26
-rw-r--r--meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0019-Fix-compilation-with-gcc.patch157
-rw-r--r--meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_10.0.0.r36.bb27
6 files changed, 325 insertions, 21 deletions
diff --git a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/0001-patching-libundwind-to-build-in-yocto-environment.patch b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/0001-patching-libundwind-to-build-in-yocto-environment.patch
index f6bea174d8..335f8b0ac8 100644
--- a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/0001-patching-libundwind-to-build-in-yocto-environment.patch
+++ b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/0001-patching-libundwind-to-build-in-yocto-environment.patch
@@ -40,7 +40,7 @@ index 738b205..ada4ef9 100644
LDFLAGS += -shared -Wl,-soname,$(NAME).so.0 \
-Wl,-rpath=/usr/lib/$(DEB_HOST_MULTIARCH)/android \
- -lpthread -nostdlib -lc -lgcc -Ldebian/out -l7z
-+ -lpthread -nostdlib -lc -lgcc -l7z -Wno-error=unused-command-line-argument
++ -lpthread -nostdlib -lc -lgcc -l7z
build: $(SOURCES)
- mkdir --parents debian/out
diff --git a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0004-patching-fastboot.mk-to-build-in-yocto-environment.patch b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0004-patching-fastboot.mk-to-build-in-yocto-environment.patch
index 82ec560a6a..367e31af22 100644
--- a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0004-patching-fastboot.mk-to-build-in-yocto-environment.patch
+++ b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0004-patching-fastboot.mk-to-build-in-yocto-environment.patch
@@ -52,12 +52,12 @@ index d1aba626..e75fa87c 100644
build: $(SOURCES)
- $(CXX) $^ -o fastboot/$(NAME) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
-+ mkdir --parents $(OUT_DIR)/usr/bin/fastboot
-+ $(CXX) $^ -o $(OUT_DIR)/usr/bin/fastboot/$(NAME) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
++ mkdir --parents $(OUT_DIR)/usr/bin/
++ $(CXX) $^ -o $(OUT_DIR)/usr/bin/$(NAME) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
clean:
- $(RM) fastboot/$(NAME)
-+ $(RM) $(OUT_DIR)/usr/bin/fastboot/$(NAME)
++ $(RM) $(OUT_DIR)/usr/bin/$(NAME)
--
2.36.1.vfs.0.0
diff --git a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0017-Update-usage-of-usbdevfs_urb-to-match-new-kernel-UAP.patch b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0017-Update-usage-of-usbdevfs_urb-to-match-new-kernel-UAP.patch
new file mode 100644
index 0000000000..7209e626b7
--- /dev/null
+++ b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0017-Update-usage-of-usbdevfs_urb-to-match-new-kernel-UAP.patch
@@ -0,0 +1,128 @@
+From 0dac14385d9c79089f8026e2764b75fa111adb8a Mon Sep 17 00:00:00 2001
+From: Etienne Cordonnier <ecordonnier@snap.com>
+Date: Tue, 14 Mar 2023 11:33:50 +0100
+Subject: [PATCH] Update usage of usbdevfs_urb to match new kernel UAPI
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Linux kernel API has been changed by commit 94dfc73e7cf4 ("treewide: uapi: Replace zero-length arrays with flexible-array members")
+where zero-length array iso_frame_desc in struct usbdevfs_urb was replaced with a proper flexible-array member.
+
+Current USB API usage causes a compilation error at Linux 6.0:
+
+In file included from /home/mae/.cache/kiss/proc/121205/build/android-tools/vendor/adb/client/usb_linux.cpp:28:
+/usr/include/linux/usbdevice_fs.h:134:41: error: flexible array member ‘usbdevfs_urb::iso_frame_desc’ not at end of ‘struct usb_handle’
+ 134 | struct usbdevfs_iso_packet_desc iso_frame_desc[];
+ | ^~~~~~~~~~~~~~
+/home/mae/.cache/kiss/proc/121205/build/android-tools/vendor/adb/client/usb_linux.cpp:76:18: note: next member ‘usbdevfs_urb usb_handle::urb_out’ declared here
+ 76 | usbdevfs_urb urb_out;
+ | ^~~~~~~
+/home/mae/.cache/kiss/proc/121205/build/android-tools/vendor/adb/client/usb_linux.cpp:61:8: note: in the definition of ‘struct usb_handle’
+ 61 | struct usb_handle {
+ | ^~~~~~~~~~
+
+Fix it by using pointers to a struct with flexible-array members.
+Current fix works both with the old and the new API.
+
+See https://github.com/nmeum/android-tools/issues/74 for more context.
+
+Tested: built on Linux against kernel 5.19 and 6.0; 'adb shell' over USB
+cable
+Acked-by: Gustavo A. R. Silva gustavoars@kernel.org
+Change-Id: I7f0f7b35d9a3ab980d3520b541b60c7857a6b101
+Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
+
+[Backported on version 10]
+Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
+---
+ adb/client/usb_linux.cpp | 24 ++++++++++++++----------
+ 1 file changed, 14 insertions(+), 10 deletions(-)
+
+diff --git a/adb/client/usb_linux.cpp b/adb/client/usb_linux.cpp
+index 81b83064..7d55ec5b 100644
+--- a/adb/client/usb_linux.cpp
++++ b/adb/client/usb_linux.cpp
+@@ -71,8 +71,8 @@ struct usb_handle : public ::usb_handle {
+ unsigned zero_mask;
+ unsigned writeable = 1;
+
+- usbdevfs_urb urb_in;
+- usbdevfs_urb urb_out;
++ usbdevfs_urb *urb_in;
++ usbdevfs_urb *urb_out;
+
+ bool urb_in_busy = false;
+ bool urb_out_busy = false;
+@@ -305,7 +305,7 @@ static int usb_bulk_write(usb_handle* h, const void* data, int len) {
+ std::unique_lock<std::mutex> lock(h->mutex);
+ D("++ usb_bulk_write ++");
+
+- usbdevfs_urb* urb = &h->urb_out;
++ usbdevfs_urb* urb = h->urb_out;
+ memset(urb, 0, sizeof(*urb));
+ urb->type = USBDEVFS_URB_TYPE_BULK;
+ urb->endpoint = h->ep_out;
+@@ -344,7 +344,7 @@ static int usb_bulk_read(usb_handle* h, void* data, int len) {
+ std::unique_lock<std::mutex> lock(h->mutex);
+ D("++ usb_bulk_read ++");
+
+- usbdevfs_urb* urb = &h->urb_in;
++ usbdevfs_urb* urb = h->urb_in;
+ memset(urb, 0, sizeof(*urb));
+ urb->type = USBDEVFS_URB_TYPE_BULK;
+ urb->endpoint = h->ep_in;
+@@ -389,7 +389,7 @@ static int usb_bulk_read(usb_handle* h, void* data, int len) {
+ }
+ D("[ urb @%p status = %d, actual = %d ]", out, out->status, out->actual_length);
+
+- if (out == &h->urb_in) {
++ if (out == h->urb_in) {
+ D("[ reap urb - IN complete ]");
+ h->urb_in_busy = false;
+ if (urb->status != 0) {
+@@ -398,7 +398,7 @@ static int usb_bulk_read(usb_handle* h, void* data, int len) {
+ }
+ return urb->actual_length;
+ }
+- if (out == &h->urb_out) {
++ if (out == h->urb_out) {
+ D("[ reap urb - OUT compelete ]");
+ h->urb_out_busy = false;
+ h->cv.notify_all();
+@@ -483,10 +483,10 @@ void usb_kick(usb_handle* h) {
+ ** but this ensures that a reader blocked on REAPURB
+ ** will get unblocked
+ */
+- ioctl(h->fd, USBDEVFS_DISCARDURB, &h->urb_in);
+- ioctl(h->fd, USBDEVFS_DISCARDURB, &h->urb_out);
+- h->urb_in.status = -ENODEV;
+- h->urb_out.status = -ENODEV;
++ ioctl(h->fd, USBDEVFS_DISCARDURB, h->urb_in);
++ ioctl(h->fd, USBDEVFS_DISCARDURB, h->urb_out);
++ h->urb_in->status = -ENODEV;
++ h->urb_out->status = -ENODEV;
+ h->urb_in_busy = false;
+ h->urb_out_busy = false;
+ h->cv.notify_all();
+@@ -502,6 +502,8 @@ int usb_close(usb_handle* h) {
+
+ D("-- usb close %p (fd = %d) --", h, h->fd);
+
++ delete h->urb_in;
++ delete h->urb_out;
+ delete h;
+
+ return 0;
+@@ -537,6 +539,8 @@ static void register_device(const char* dev_name, const char* dev_path, unsigned
+ usb->ep_out = ep_out;
+ usb->zero_mask = zero_mask;
+ usb->max_packet_size = max_packet_size;
++ usb->urb_in = new usbdevfs_urb;
++ usb->urb_out = new usbdevfs_urb;
+
+ // Initialize mark so we don't get garbage collected after the device scan.
+ usb->mark = true;
+--
+2.36.1.vfs.0.0
+
diff --git a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0018-img2simg-Fix-wrong-rpath.patch b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0018-img2simg-Fix-wrong-rpath.patch
new file mode 100644
index 0000000000..5f28263022
--- /dev/null
+++ b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0018-img2simg-Fix-wrong-rpath.patch
@@ -0,0 +1,26 @@
+From 25bd3456dcd539b89648273152e405314287f4f8 Mon Sep 17 00:00:00 2001
+From: Etienne Cordonnier <ecordonnier@snap.com>
+Date: Mon, 13 Mar 2023 13:46:14 +0100
+Subject: [PATCH 2/2] img2simg: Fix wrong rpath and re-add libbase
+
+Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
+---
+ debian/img2simg.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/debian/img2simg.mk b/debian/img2simg.mk
+index d1b9b927..459af454 100644
+--- a/debian/img2simg.mk
++++ b/debian/img2simg.mk
+@@ -3,7 +3,7 @@ NAME = img2simg
+ SOURCES = img2simg.cpp
+ SOURCES := $(foreach source, $(SOURCES), libsparse/$(source))
+ CPPFLAGS += -Ilibsparse/include -Iinclude -std=gnu++17
+-LDFLAGS += -Wl,-rpath=$(OUT_DIR)/usr/lib/$(DEB_HOST_MULTIARCH)/android \
++LDFLAGS += -Wl,-rpath='$$ORIGIN/../lib/android' -lbase \
+ -Wl,-rpath-link=$(OUT_DIR)/usr/lib/$(DEB_HOST_MULTIARCH)/android/ \
+ -L$(OUT_DIR)/usr/lib/$(DEB_HOST_MULTIARCH)/android/ -lsparse
+
+--
+2.36.1.vfs.0.0
+
diff --git a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0019-Fix-compilation-with-gcc.patch b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0019-Fix-compilation-with-gcc.patch
new file mode 100644
index 0000000000..033c5fb919
--- /dev/null
+++ b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools/core/0019-Fix-compilation-with-gcc.patch
@@ -0,0 +1,157 @@
+From d198ecb4c36b645e5428aa5117f7673bf2f7a3e6 Mon Sep 17 00:00:00 2001
+From: Etienne Cordonnier <ecordonnier@snap.com>
+Date: Tue, 14 Mar 2023 11:42:08 +0100
+Subject: [PATCH] Fix compilation with gcc
+
+Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
+---
+ adb/adb_listeners.cpp | 18 ++++++++++++------
+ adb/daemon/auth.cpp | 3 ++-
+ adb/daemon/usb.cpp | 3 ++-
+ adb/fdevent.cpp | 3 ++-
+ adb/transport_fd.cpp | 3 ++-
+ adb/transport_local.cpp | 3 ++-
+ 6 files changed, 22 insertions(+), 11 deletions(-)
+
+diff --git a/adb/adb_listeners.cpp b/adb/adb_listeners.cpp
+index 29909a55..fbdf4487 100644
+--- a/adb/adb_listeners.cpp
++++ b/adb/adb_listeners.cpp
+@@ -109,7 +109,8 @@ static void listener_event_func(int _fd, unsigned ev, void* _l)
+ }
+
+ // Called as a transport disconnect function. |arg| is the raw alistener*.
+-static void listener_disconnect(void* arg, atransport*) EXCLUDES(listener_list_mutex) {
++ EXCLUDES(listener_list_mutex)
++static void listener_disconnect(void* arg, atransport*) {
+ std::lock_guard<std::mutex> lock(listener_list_mutex);
+ for (auto iter = listener_list.begin(); iter != listener_list.end(); ++iter) {
+ if (iter->get() == arg) {
+@@ -121,7 +122,8 @@ static void listener_disconnect(void* arg, atransport*) EXCLUDES(listener_list_m
+ }
+
+ // Write the list of current listeners (network redirections) into a string.
+-std::string format_listeners() EXCLUDES(listener_list_mutex) {
++EXCLUDES(listener_list_mutex)
++std::string format_listeners() {
+ std::lock_guard<std::mutex> lock(listener_list_mutex);
+ std::string result;
+ for (auto& l : listener_list) {
+@@ -139,8 +141,9 @@ std::string format_listeners() EXCLUDES(listener_list_mutex) {
+ return result;
+ }
+
++EXCLUDES(listener_list_mutex)
+ InstallStatus remove_listener(const char* local_name, atransport* transport)
+- EXCLUDES(listener_list_mutex) {
++{
+ std::lock_guard<std::mutex> lock(listener_list_mutex);
+ for (auto iter = listener_list.begin(); iter != listener_list.end(); ++iter) {
+ if (local_name == (*iter)->local_name) {
+@@ -151,7 +154,8 @@ InstallStatus remove_listener(const char* local_name, atransport* transport)
+ return INSTALL_STATUS_LISTENER_NOT_FOUND;
+ }
+
+-void remove_all_listeners() EXCLUDES(listener_list_mutex) {
++EXCLUDES(listener_list_mutex)
++void remove_all_listeners() {
+ std::lock_guard<std::mutex> lock(listener_list_mutex);
+ auto iter = listener_list.begin();
+ while (iter != listener_list.end()) {
+@@ -164,7 +168,8 @@ void remove_all_listeners() EXCLUDES(listener_list_mutex) {
+ }
+ }
+
+-void close_smartsockets() EXCLUDES(listener_list_mutex) {
++EXCLUDES(listener_list_mutex)
++void close_smartsockets() {
+ std::lock_guard<std::mutex> lock(listener_list_mutex);
+ auto pred = [](const std::unique_ptr<alistener>& listener) {
+ return listener->local_name == "*smartsocket*";
+@@ -172,9 +177,10 @@ void close_smartsockets() EXCLUDES(listener_list_mutex) {
+ listener_list.remove_if(pred);
+ }
+
++EXCLUDES(listener_list_mutex)
+ InstallStatus install_listener(const std::string& local_name, const char* connect_to,
+ atransport* transport, int no_rebind, int* resolved_tcp_port,
+- std::string* error) EXCLUDES(listener_list_mutex) {
++ std::string* error) {
+ std::lock_guard<std::mutex> lock(listener_list_mutex);
+ for (auto& l : listener_list) {
+ if (local_name == l->local_name) {
+diff --git a/adb/daemon/auth.cpp b/adb/daemon/auth.cpp
+index a18afa4e..0fd60a1f 100644
+--- a/adb/daemon/auth.cpp
++++ b/adb/daemon/auth.cpp
+@@ -98,8 +98,9 @@ bool adbd_auth_verify(const char* token, size_t token_size, const std::string& s
+ return false;
+ }
+
++REQUIRES(framework_mutex)
+ static bool adbd_send_key_message_locked(std::string_view msg_type, std::string_view key)
+- REQUIRES(framework_mutex) {
++{
+ if (framework_fd < 0) {
+ LOG(ERROR) << "Client not connected to send msg_type " << msg_type;
+ return false;
+diff --git a/adb/daemon/usb.cpp b/adb/daemon/usb.cpp
+index 1abae87c..3a466782 100644
+--- a/adb/daemon/usb.cpp
++++ b/adb/daemon/usb.cpp
+@@ -628,7 +628,8 @@ struct UsbFfsConnection : public Connection {
+ return CreateWriteBlock(std::move(block), 0, len, id);
+ }
+
+- void SubmitWrites() REQUIRES(write_mutex_) {
++ REQUIRES(write_mutex_)
++ void SubmitWrites() {
+ if (writes_submitted_ == kUsbWriteQueueDepth) {
+ return;
+ }
+diff --git a/adb/fdevent.cpp b/adb/fdevent.cpp
+index 32f90863..bff24544 100644
+--- a/adb/fdevent.cpp
++++ b/adb/fdevent.cpp
+@@ -376,7 +376,8 @@ static void fdevent_call_fdfunc(fdevent* fde) {
+ fde->func);
+ }
+
+-static void fdevent_run_flush() EXCLUDES(run_queue_mutex) {
++EXCLUDES(run_queue_mutex)
++static void fdevent_run_flush() {
+ // We need to be careful around reentrancy here, since a function we call can queue up another
+ // function.
+ while (true) {
+diff --git a/adb/transport_fd.cpp b/adb/transport_fd.cpp
+index a93e68a0..c5af09ff 100644
+--- a/adb/transport_fd.cpp
++++ b/adb/transport_fd.cpp
+@@ -168,7 +168,8 @@ struct NonblockingFdConnection : public Connection {
+ TryAgain,
+ };
+
+- WriteResult DispatchWrites() REQUIRES(write_mutex_) {
++ REQUIRES(write_mutex_)
++ WriteResult DispatchWrites() {
+ CHECK(!write_buffer_.empty());
+ auto iovs = write_buffer_.iovecs();
+ ssize_t rc = adb_writev(fd_.get(), iovs.data(), iovs.size());
+diff --git a/adb/transport_local.cpp b/adb/transport_local.cpp
+index b9f738df..a273e8f7 100644
+--- a/adb/transport_local.cpp
++++ b/adb/transport_local.cpp
+@@ -345,8 +345,9 @@ struct EmulatorConnection : public FdConnection {
+ };
+
+ /* Only call this function if you already hold local_transports_lock. */
++REQUIRES(local_transports_lock)
+ static atransport* find_emulator_transport_by_adb_port_locked(int adb_port)
+- REQUIRES(local_transports_lock) {
++{
+ auto it = local_transports.find(adb_port);
+ if (it == local_transports.end()) {
+ return nullptr;
+--
+2.36.1.vfs.0.0
+
diff --git a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_10.0.0.r36.bb b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_10.0.0.r36.bb
index cf81afe14f..6fc2532981 100644
--- a/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_10.0.0.r36.bb
+++ b/meta-oe/dynamic-layers/selinux/recipes-devtool/android-tools/android-tools_10.0.0.r36.bb
@@ -58,7 +58,7 @@ SRC_URI += " \
file://libunwind-debian/20150704-CVE-2015-3239_dwarf_i.h.patch;patchdir=external/libunwind \
"
-# meta-clang specific patches + files:
+# meta-openembedded specific patches + files:
SRC_URI += " \
file://core/0001-patching-adb.mk-to-build-in-yocto-environment.patch;patchdir=system/core \
file://core/0002-libadb.mk-modifications-to-make-it-build-in-yocto-en.patch;patchdir=system/core \
@@ -76,6 +76,9 @@ SRC_URI += " \
file://core/0014-patching-libbacktrace.mk-to-build-in-yocto-environme.patch;patchdir=system/core \
file://core/0015-Use-namespace-std-to-compile-libbacktrace.patch;patchdir=system/core \
file://core/0016-Adapt-adbd-to-work-with-yocto.patch;patchdir=system/core \
+ file://core/0017-Update-usage-of-usbdevfs_urb-to-match-new-kernel-UAP.patch;patchdir=system/core \
+ file://core/0018-img2simg-Fix-wrong-rpath.patch;patchdir=system/core \
+ file://core/0019-Fix-compilation-with-gcc.patch;patchdir=system/core \
file://0001-libcrypto.mk-modifications-to-make-it-build-in-yocto.patch;patchdir=external/boringssl \
file://0001-patching-libundwind-to-build-in-yocto-environment.patch;patchdir=external/libunwind \
file://0001-libext4_utils.mk-modifications-to-make-it-build-in-y.patch;patchdir=system/extras \
@@ -96,14 +99,7 @@ COMPATIBLE_HOST:powerpc = "(null)"
COMPATIBLE_HOST:powerpc64 = "(null)"
COMPATIBLE_HOST:powerpc64le = "(null)"
-inherit systemd clang
-
-TOOLCHAIN = "clang"
-TOOLCHAIN:class-native = "clang"
-DEPENDS:append:class-target = "\
- clang-cross-${TARGET_ARCH} \
-"
-DEPENDS:append:class-native = " clang-native"
+inherit systemd
SYSTEMD_SERVICE:${PN} = "android-tools-adbd.service"
@@ -175,9 +171,11 @@ do_compile() {
}
do_install() {
- if echo ${TOOLS_TO_BUILD} | grep -q "ext4_utils" ; then
- install -D -p -m0755 ${S}/system/core/libsparse/simg_dump.py ${D}${bindir}/simg_dump
- fi
+ for tool in img2simg simg2img fastboot; do
+ if echo ${TOOLS_TO_BUILD} | grep -q "$tool" ; then
+ install -D -p -m0755 ${S}/debian/out/usr/bin/$tool ${D}${bindir}/$tool
+ fi
+ done
if echo ${TOOLS_TO_BUILD} | grep -q "adb " ; then
install -d ${D}${bindir}
@@ -193,11 +191,6 @@ do_install() {
install -D -p -m0644 ${WORKDIR}/android-tools-adbd.service \
${D}${systemd_unitdir}/system/android-tools-adbd.service
- if echo ${TOOLS_TO_BUILD} | grep -q "fastboot" ; then
- install -d ${D}${bindir}
- install -m0755 ${S}/debian/out/usr/bin/fastboot/fastboot ${D}${bindir}
- fi
-
install -d ${D}${libdir}/android/
install -m0755 ${S}/debian/out/usr/lib/android/*.so.* ${D}${libdir}/android/
if echo ${TOOLS_TO_BUILD} | grep -q "mkbootimg" ; then