about summary refs log tree commit diff
path: root/pkgs/tools/misc/android-tools
diff options
context:
space:
mode:
authorYureka <yuka@yuka.dev>2022-10-15 16:38:28 +0200
committerYureka <yuka@yuka.dev>2022-10-15 16:39:22 +0200
commitf5db877954c6839a2de43b3e2a4f70f0836fad3b (patch)
tree7e9950f00d13c109bc31585285333039ffca793c /pkgs/tools/misc/android-tools
parent36bb8d969a76020c156530aed1d3fd1588842036 (diff)
android-tools: add patch to fix build against 6.0 kernel headers
Diffstat (limited to 'pkgs/tools/misc/android-tools')
-rw-r--r--pkgs/tools/misc/android-tools/android-tools-kernel-headers-6.0.diff82
-rw-r--r--pkgs/tools/misc/android-tools/default.nix1
2 files changed, 83 insertions, 0 deletions
diff --git a/pkgs/tools/misc/android-tools/android-tools-kernel-headers-6.0.diff b/pkgs/tools/misc/android-tools/android-tools-kernel-headers-6.0.diff
new file mode 100644
index 0000000000000..38c0c9f394911
--- /dev/null
+++ b/pkgs/tools/misc/android-tools/android-tools-kernel-headers-6.0.diff
@@ -0,0 +1,82 @@
+diff --git a/vendor/adb/client/usb_linux.cpp b/vendor/adb/client/usb_linux.cpp
+index 25a50bd..0d09c47 100644
+--- a/vendor/adb/client/usb_linux.cpp
++++ b/vendor/adb/client/usb_linux.cpp
+@@ -59,8 +59,15 @@ using namespace std::literals;
+ #define DBGX(x...)
+ 
+ struct usb_handle {
++    usb_handle() : urb_in(0), urb_out(0) {
++      this->urb_in = new usbdevfs_urb;
++      this->urb_out = new usbdevfs_urb;
++    }
++
+     ~usb_handle() {
+       if (fd != -1) unix_close(fd);
++      delete urb_in;
++      delete urb_out;
+     }
+ 
+     std::string path;
+@@ -72,8 +79,8 @@ struct 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;
+@@ -304,7 +311,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;
+@@ -343,7 +350,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;
+@@ -388,7 +395,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) {
+@@ -397,7 +404,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();
+@@ -501,10 +508,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();
diff --git a/pkgs/tools/misc/android-tools/default.nix b/pkgs/tools/misc/android-tools/default.nix
index 5bc9e1d820fac..030486aab335c 100644
--- a/pkgs/tools/misc/android-tools/default.nix
+++ b/pkgs/tools/misc/android-tools/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
       revert = true;
       excludes = [ "vendor/fmtlib" ];
     })
+    ./android-tools-kernel-headers-6.0.diff
   ];
 
   nativeBuildInputs = [ cmake perl go ];