Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F150456197
D56064.id174205.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
39 KB
Referenced Files
None
Subscribers
None
D56064.id174205.diff
View Options
diff --git a/devel/android-tools/Makefile b/devel/android-tools/Makefile
--- a/devel/android-tools/Makefile
+++ b/devel/android-tools/Makefile
@@ -1,40 +1,30 @@
PORTNAME= android-tools
-PORTVERSION= 31.0.3p2.0
-PORTREVISION= 46
+PORTVERSION= 35.0.2
CATEGORIES= devel
-MASTER_SITES= GH
+MASTER_SITES= https://github.com/nmeum/android-tools/releases/download/${PORTVERSION}/
MAINTAINER= nc@FreeBSD.org
COMMENT= Android debugging tools
-WWW= https://github.com/neelchauhan/freebsd-android-tools
+WWW= https://github.com/nmeum/android-tools
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
-BROKEN_aarch64= ld: error: undefined symbol: OPENSSL_cpuid_setup
-
LIB_DEPENDS= libbrotlicommon.so:archivers/brotli \
- libgmock.so:devel/googletest \
+ libfmt.so:devel/libfmt \
liblz4.so:archivers/liblz4 \
libpcre2-8.so:devel/pcre2 \
libprotobuf.so:devel/protobuf \
libzstd.so:archivers/zstd
-USES= cmake compiler:c++17-lang go:no_targets localbase:ldflags perl5 python shebangfix
-
-USE_GITHUB= yes
-GH_ACCOUNT= neelchauhan
-GH_PROJECT= freebsd-${PORTNAME}
-GH_TAGNAME= 271d7a26c8daf4b9fe412d360a2edfaca327efdd
+USES= cmake compiler:c++20-lang localbase:ldflags python shebangfix tar:xz
-SHEBANG_FILES= vendor/mkbootimg/repack_bootimg.py \
+SHEBANG_FILES= vendor/avb/avbtool.py \
+ vendor/libufdt/utils/src/mkdtboimg.py \
vendor/mkbootimg/mkbootimg.py \
+ vendor/mkbootimg/repack_bootimg.py \
vendor/mkbootimg/unpack_bootimg.py
-MAKE_ENV+= GOFLAGS=-mod=vendor \
- GOPATH=${WRKSRC}/vendor/boringssl/vendor \
- GOPROXY=off
-
-LDFLAGS+= -labsl_status
+CMAKE_ARGS= -DANDROID_TOOLS_PATCH_VENDOR:BOOL=OFF
.include <bsd.port.mk>
diff --git a/devel/android-tools/distinfo b/devel/android-tools/distinfo
--- a/devel/android-tools/distinfo
+++ b/devel/android-tools/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1659823195
-SHA256 (neelchauhan-freebsd-android-tools-31.0.3p2.0-271d7a26c8daf4b9fe412d360a2edfaca327efdd_GH0.tar.gz) = 12003a3d9b1d476994a8484c489cfb227b2a34391c856389af50249b96618ec8
-SIZE (neelchauhan-freebsd-android-tools-31.0.3p2.0-271d7a26c8daf4b9fe412d360a2edfaca327efdd_GH0.tar.gz) = 40959086
+TIMESTAMP = 1724935617
+SHA256 (android-tools-35.0.2.tar.xz) = d2c3222280315f36d8bfa5c02d7632b47e365bfe2e77e99a3564fb6576f04097
+SIZE (android-tools-35.0.2.tar.xz) = 18847376
diff --git a/devel/android-tools/files/patch-abseil b/devel/android-tools/files/patch-abseil
deleted file mode 100644
--- a/devel/android-tools/files/patch-abseil
+++ /dev/null
@@ -1,26 +0,0 @@
---- vendor/extras/libjsonpb/parse/jsonpb.cpp.orig 2022-06-10 23:11:16 UTC
-+++ vendor/extras/libjsonpb/parse/jsonpb.cpp
-@@ -49,9 +49,9 @@ ErrorOr<std::string> MessageToJsonString(const Message
-
- if (!status.ok()) {
- #if GOOGLE_PROTOBUF_VERSION < 3016000
-- return MakeError<std::string>(status.error_message().as_string());
-+ return MakeError<std::string>(std::string(status.error_message()));
- #else
-- return MakeError<std::string>(status.message().as_string());
-+ return MakeError<std::string>(std::string(status.message()));
- #endif
- }
- return ErrorOr<std::string>(std::move(json));
-@@ -66,9 +66,9 @@ ErrorOr<std::monostate> JsonStringToMessage(const std:
- auto status = JsonToBinaryString(resolver.get(), GetTypeUrl(*message), content, &binary);
- if (!status.ok()) {
- #if GOOGLE_PROTOBUF_VERSION < 3016000
-- return MakeError<std::monostate>(status.error_message().as_string());
-+ return MakeError<std::monostate>(std::string(status.error_message()));
- #else
-- return MakeError<std::monostate>(status.message().as_string());
-+ return MakeError<std::monostate>(std::string(status.message()));
- #endif
- }
- if (!message->ParseFromString(binary)) {
diff --git a/devel/android-tools/files/patch-vendor_CMakeLists.adb.txt b/devel/android-tools/files/patch-vendor_CMakeLists.adb.txt
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_CMakeLists.adb.txt
@@ -0,0 +1,16 @@
+--- vendor/CMakeLists.adb.txt 2024-08-29 19:46:57.000000000 +0200
++++ vendor/CMakeLists.adb.txt 2026-03-21 19:24:21.380567000 +0100
+@@ -43,9 +43,12 @@
+ if(APPLE)
+ list(APPEND libadb_SOURCES
+ adb/client/usb_osx.cpp)
+-else()
++elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ list(APPEND libadb_SOURCES
+ adb/client/usb_linux.cpp)
++elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++ list(APPEND libadb_SOURCES
++ adb/client/usb_freebsd.cpp)
+ endif()
+
+ add_library(libadb STATIC ${libadb_SOURCES})
diff --git a/devel/android-tools/files/patch-vendor_CMakeLists.f2fstools.txt b/devel/android-tools/files/patch-vendor_CMakeLists.f2fstools.txt
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_CMakeLists.f2fstools.txt
@@ -0,0 +1,46 @@
+--- vendor/CMakeLists.f2fstools.txt 2024-08-29 19:46:57.000000000 +0200
++++ vendor/CMakeLists.f2fstools.txt 2026-03-21 18:29:02.406397000 +0100
+@@ -17,8 +17,20 @@
+
+ target_compile_definitions(libf2fs PUBLIC
+ ${f2fs_tools_defaults}
+- -DWITH_BLKDISCARD)
++ -DWITH_BLKDISCARD
++ -DHAVE_SYS_IOCTL_H)
+
++if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++ target_compile_definitions(libf2fs PUBLIC -DHAVE_LIMITS_H)
++else()
++ target_compile_definitions(libf2fs PUBLIC
++ -DHAVE_LINUX_LOOP_H
++ -DHAVE_LINUX_MAJOR_H
++ -DHAVE_SYS_SYSMACROS_H
++ -DHAVE_LINUX_HDREG_H
++ -DHAVE_LINUX_LIMITS_H)
++endif()
++
+ target_include_directories(libf2fs PUBLIC
+ core/libsparse/include
+ f2fs-tools/include)
+@@ -59,8 +71,20 @@
+
+ target_compile_definitions(sload_f2fs PRIVATE
+ ${f2fs_tools_defaults}
+- -DWITH_SLOAD)
++ -DWITH_SLOAD
++ -DHAVE_SYS_IOCTL_H)
+
++if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++ target_compile_definitions(sload_f2fs PRIVATE -DHAVE_LIMITS_H)
++else()
++ target_compile_definitions(sload_f2fs PRIVATE
++ -DHAVE_LINUX_LOOP_H
++ -DHAVE_LINUX_MAJOR_H
++ -DHAVE_SYS_SYSMACROS_H
++ -DHAVE_LINUX_HDREG_H
++ -DHAVE_LINUX_LIMITS_H)
++endif()
++
+ target_include_directories(sload_f2fs PRIVATE
+ f2fs-tools/include
+ selinux/libselinux/include
diff --git a/devel/android-tools/files/patch-vendor_CMakeLists.fastboot.txt b/devel/android-tools/files/patch-vendor_CMakeLists.fastboot.txt
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_CMakeLists.fastboot.txt
@@ -0,0 +1,19 @@
+--- vendor/CMakeLists.fastboot.txt 2024-08-29 19:46:57.000000000 +0200
++++ vendor/CMakeLists.fastboot.txt 2026-03-21 19:24:26.243327000 +0100
+@@ -119,6 +119,9 @@
+ if(APPLE)
+ list(APPEND fastboot_SOURCES
+ core/fastboot/usb_osx.cpp)
++elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++ list(APPEND fastboot_SOURCES
++ core/fastboot/usb_freebsd.cpp)
+ else()
+ list(APPEND fastboot_SOURCES
+ core/fastboot/usb_linux.cpp)
+@@ -142,4 +145,6 @@
+ target_link_libraries(fastboot
+ "-framework CoreFoundation"
+ "-framework IOKit")
++elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++ target_link_libraries(fastboot PkgConfig::libusb-1.0)
+ endif()
diff --git a/devel/android-tools/files/patch-vendor_CMakeLists.txt b/devel/android-tools/files/patch-vendor_CMakeLists.txt
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_CMakeLists.txt
@@ -0,0 +1,18 @@
+--- vendor/CMakeLists.txt 2024-08-29 19:46:57.000000000 +0200
++++ vendor/CMakeLists.txt 2026-03-21 14:09:16.768573000 +0100
+@@ -41,6 +41,15 @@
+ # 32-bit glibc platforms this is not the case by default.
+ add_compile_definitions(_FILE_OFFSET_BITS=64 _LARGEFILE64_SOURCE)
+
++# On FreeBSD, _XOPEN_SOURCE (used by some sub-targets) hides BSD extensions
++# like getprogname(). Ensure BSD visibility is preserved.
++# Also provide compat macros for 64-bit functions that don't exist on FreeBSD
++# (off_t is always 64-bit on FreeBSD).
++if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
++ add_compile_definitions(__BSD_VISIBLE=1)
++ add_compile_definitions(lseek64=lseek ftruncate64=ftruncate mmap64=mmap pread64=pread pwrite64=pwrite off64_t=off_t)
++endif()
++
+ set(android-vendored
+ avb
+ adb
diff --git a/devel/android-tools/files/patch-vendor_adb_client_file__sync__client.cpp b/devel/android-tools/files/patch-vendor_adb_client_file__sync__client.cpp
deleted file mode 100644
--- a/devel/android-tools/files/patch-vendor_adb_client_file__sync__client.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
---- vendor/adb/client/file_sync_client.cpp.orig 2022-06-09 20:52:06 UTC
-+++ vendor/adb/client/file_sync_client.cpp
-@@ -394,9 +394,16 @@ class SyncConnection {
-
- void* p = buf.data();
-
-+#ifdef __FreeBSD__
-+ // TODO: Delete when 12.x goes EOL
-+ p = (char *)memcpy(p, &req, sizeof(SyncRequest)) + sizeof(SyncRequest);
-+ p = (char *)memcpy(p, path.data(), path.length()) + path.length();
-+ p = (char *)memcpy(p, &msg.send_v2_setup, sizeof(msg.send_v2_setup)) + sizeof(msg.send_v2_setup);
-+#else
- p = mempcpy(p, &req, sizeof(SyncRequest));
- p = mempcpy(p, path.data(), path.length());
- p = mempcpy(p, &msg.send_v2_setup, sizeof(msg.send_v2_setup));
-+#endif
-
- return WriteFdExactly(fd, buf.data(), buf.size());
- }
-@@ -441,9 +448,16 @@ class SyncConnection {
-
- void* p = buf.data();
-
-+#ifdef __FreeBSD__
-+ // TODO: Delete when 12.x goes EOL
-+ p = (char *)memcpy(p, &req, sizeof(SyncRequest)) + sizeof(SyncRequest);
-+ p = (char *)memcpy(p, path.data(), path.length()) + path.length();
-+ p = (char *)memcpy(p, &msg.send_v2_setup, sizeof(msg.send_v2_setup)) + sizeof(msg.send_v2_setup);
-+#else
- p = mempcpy(p, &req, sizeof(SyncRequest));
- p = mempcpy(p, path.data(), path.length());
-- p = mempcpy(p, &msg.recv_v2_setup, sizeof(msg.recv_v2_setup));
-+ p = mempcpy(p, &msg.send_v2_setup, sizeof(msg.send_v2_setup));
-+#endif
-
- return WriteFdExactly(fd, buf.data(), buf.size());
- }
diff --git a/devel/android-tools/files/patch-vendor_adb_client_usb_freebsd.cpp b/devel/android-tools/files/patch-vendor_adb_client_usb_freebsd.cpp
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_adb_client_usb_freebsd.cpp
@@ -0,0 +1,66 @@
+--- vendor/adb/client/usb_freebsd.cpp 1970-01-01 01:00:00.000000000 +0100
++++ vendor/adb/client/usb_freebsd.cpp 2026-03-21 19:23:46.144092000 +0100
+@@ -0,0 +1,63 @@
++/*
++ * Copyright (C) 2026 Baptiste Daroussin <bapt@FreeBSD.org>
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * * Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * * Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in
++ * the documentation and/or other materials provided with the
++ * distribution.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
++ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
++ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
++ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++/*
++ * On FreeBSD, the libusb backend (usb_libusb.cpp) is always used for USB
++ * device communication via LibusbConnection. These stub implementations of
++ * the native USB interface satisfy the linker for UsbConnection, which is
++ * only used on Linux and macOS.
++ */
++
++#include "client/usb.h"
++
++void usb_init() {
++}
++
++void usb_cleanup() {
++}
++
++int usb_write(usb_handle*, const void*, int) {
++ return -1;
++}
++
++int usb_read(usb_handle*, void*, int) {
++ return -1;
++}
++
++int usb_close(usb_handle*) {
++ return -1;
++}
++
++void usb_reset(usb_handle*) {
++}
++
++void usb_kick(usb_handle*) {
++}
++
++size_t usb_get_max_packet_size(usb_handle*) {
++ return 0;
++}
diff --git a/devel/android-tools/files/patch-vendor_adb_client_usb_libusb.cpp b/devel/android-tools/files/patch-vendor_adb_client_usb_libusb.cpp
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_adb_client_usb_libusb.cpp
@@ -0,0 +1,54 @@
+--- vendor/adb/client/usb_libusb.cpp 2024-08-29 19:46:57.000000000 +0200
++++ vendor/adb/client/usb_libusb.cpp 2026-03-21 14:00:02.239458000 +0100
+@@ -38,6 +38,8 @@
+
+ #ifdef ANDROID_TOOLS_USE_BUNDLED_LIBUSB
+ #include <libusb/libusb.h>
++#elif defined(__FreeBSD__)
++#include <libusb.h>
+ #else
+ #include <libusb-1.0/libusb.h>
+ #endif
+@@ -507,8 +509,10 @@
+ return 5000;
+ case LIBUSB_SPEED_SUPER_PLUS:
+ return 10000;
++#ifdef LIBUSB_SPEED_SUPER_PLUS_X2
+ case LIBUSB_SPEED_SUPER_PLUS_X2:
+ return 20000;
++#endif
+ case LIBUSB_SPEED_UNKNOWN:
+ default:
+ return 0;
+@@ -540,6 +544,7 @@
+ }
+ }
+
++#ifdef LIBUSB_BT_SUPERSPEED_PLUS_CAPABILITY
+ static uint64_t ExtractMaxSuperSpeedPlus(libusb_ssplus_usb_device_capability_descriptor* cap) {
+ // The exponents is one of {bytes, kB, MB, or GB}. We express speed in MB so we use a 0
+ // multiplier for value which would result in 0MB anyway.
+@@ -552,6 +557,7 @@
+ }
+ return max_speed;
+ }
++#endif
+
+ void RetrieveSpeeds() {
+ negotiated_speed_ = ToConnectionSpeed(libusb_get_device_speed(device_.get()));
+@@ -574,6 +580,7 @@
+ libusb_free_ss_usb_device_capability_descriptor(cap);
+ }
+ } break;
++#ifdef LIBUSB_BT_SUPERSPEED_PLUS_CAPABILITY
+ case LIBUSB_BT_SUPERSPEED_PLUS_CAPABILITY: {
+ libusb_ssplus_usb_device_capability_descriptor* cap = nullptr;
+ if (!libusb_get_ssplus_usb_device_capability_descriptor(
+@@ -582,6 +589,7 @@
+ libusb_free_ssplus_usb_device_capability_descriptor(cap);
+ }
+ } break;
++#endif
+ default:
+ break;
+ }
diff --git a/devel/android-tools/files/patch-vendor_adb_sysdeps.h b/devel/android-tools/files/patch-vendor_adb_sysdeps.h
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_adb_sysdeps.h
@@ -0,0 +1,29 @@
+--- vendor/adb/sysdeps.h 2024-08-29 19:46:57.000000000 +0200
++++ vendor/adb/sysdeps.h 2026-03-21 13:49:16.038468000 +0100
+@@ -526,7 +526,7 @@
+ }
+
+ static inline int adb_pread(borrowed_fd fd, void* buf, size_t len, off64_t offset) {
+-#if defined(__APPLE__)
++#if defined(__APPLE__) || defined(__FreeBSD__)
+ return TEMP_FAILURE_RETRY(pread(fd.get(), buf, len, offset));
+ #else
+ return TEMP_FAILURE_RETRY(pread64(fd.get(), buf, len, offset));
+@@ -548,7 +548,7 @@
+ }
+
+ static inline int adb_pwrite(int fd, const void* buf, size_t len, off64_t offset) {
+-#if defined(__APPLE__)
++#if defined(__APPLE__) || defined(__FreeBSD__)
+ return TEMP_FAILURE_RETRY(pwrite(fd, buf, len, offset));
+ #else
+ return TEMP_FAILURE_RETRY(pwrite64(fd, buf, len, offset));
+@@ -563,7 +563,7 @@
+ #define pwrite ___xxx_pwrite
+
+ static inline int64_t adb_lseek(borrowed_fd fd, int64_t pos, int where) {
+-#if defined(__APPLE__)
++#if defined(__APPLE__) || defined(__FreeBSD__)
+ return lseek(fd.get(), pos, where);
+ #else
+ return lseek64(fd.get(), pos, where);
diff --git a/devel/android-tools/files/patch-vendor_adb_tls_include_adb_tls_tls__connection.h b/devel/android-tools/files/patch-vendor_adb_tls_include_adb_tls_tls__connection.h
deleted file mode 100644
--- a/devel/android-tools/files/patch-vendor_adb_tls_include_adb_tls_tls__connection.h
+++ /dev/null
@@ -1,10 +0,0 @@
---- vendor/adb/tls/include/adb/tls/tls_connection.h.orig 2024-02-11 15:40:31 UTC
-+++ vendor/adb/tls/include/adb/tls/tls_connection.h
-@@ -21,6 +21,7 @@
-
- #include <string_view>
- #include <vector>
-+#include <functional>
-
- #include <android-base/unique_fd.h>
- #include <openssl/ssl.h>
diff --git a/devel/android-tools/files/patch-vendor_boringssl_crypto_x509_t__x509.c b/devel/android-tools/files/patch-vendor_boringssl_crypto_x509_t__x509.c
deleted file mode 100644
--- a/devel/android-tools/files/patch-vendor_boringssl_crypto_x509_t__x509.c
+++ /dev/null
@@ -1,45 +0,0 @@
-https://github.com/google/boringssl/commit/af34f6460f0bf99dc267818f02b2936f60a30de7
-
-From af34f6460f0bf99dc267818f02b2936f60a30de7 Mon Sep 17 00:00:00 2001
-From: Kent Ross <root.main@gmail.com>
-Date: Wed, 30 Mar 2022 14:11:02 -0700
-Subject: [PATCH] Remove unused variable
-
-This is causing -Werror failures with recent Clang builds.
-
-Change-Id: I0f82d99ae51d02037f5f614a8fadfb3efc0da2da
-Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/52145
-Reviewed-by: Adam Langley <agl@google.com>
-Commit-Queue: Adam Langley <agl@google.com>
----
- crypto/x509/t_x509.c | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/crypto/x509/t_x509.c b/crypto/x509/t_x509.c
-index 4f9d40979a..5e633a9d87 100644
---- vendor/boringssl/crypto/x509/t_x509.c
-+++ vendor/boringssl/crypto/x509/t_x509.c
-@@ -322,9 +322,7 @@ int X509_signature_print(BIO *bp, const X509_ALGOR *sigalg,
- int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase)
- {
- char *s, *c, *b;
-- int ret = 0, l, i;
--
-- l = 80 - 2 - obase;
-+ int ret = 0, i;
-
- b = X509_NAME_oneline(name, NULL, 0);
- if (!b)
-@@ -351,12 +349,10 @@ int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase)
- if (BIO_write(bp, ", ", 2) != 2)
- goto err;
- }
-- l--;
- }
- if (*s == '\0')
- break;
- s++;
-- l--;
- }
-
- ret = 1;
diff --git a/devel/android-tools/files/patch-vendor_core_fastboot_usb_freebsd.cpp b/devel/android-tools/files/patch-vendor_core_fastboot_usb_freebsd.cpp
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_core_fastboot_usb_freebsd.cpp
@@ -0,0 +1,257 @@
+--- vendor/core/fastboot/usb_freebsd.cpp 1970-01-01 01:00:00.000000000 +0100
++++ vendor/core/fastboot/usb_freebsd.cpp 2026-03-21 19:36:02.025480000 +0100
+@@ -0,0 +1,254 @@
++/*
++ * Copyright (C) 2026 Baptiste Daroussin <bapt@FreeBSD.org>
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * * Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * * Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in
++ * the documentation and/or other materials provided with the
++ * distribution.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
++ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
++ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
++ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#include <cstring>
++#include <memory>
++#include <thread>
++#include <chrono>
++
++#include <libusb.h>
++
++#include "usb.h"
++
++using namespace std::chrono_literals;
++
++#define MAX_RETRIES 2
++#define MAX_BULK_TRANSFER_SIZE (16 * 1024)
++
++static libusb_context *usb_context = nullptr;
++
++struct usb_handle {
++ libusb_device_handle *devh;
++ uint8_t ep_in;
++ uint8_t ep_out;
++ uint8_t iface;
++};
++
++class FreeBSDUsbTransport : public UsbTransport {
++ public:
++ FreeBSDUsbTransport(std::unique_ptr<usb_handle> handle, uint32_t ms_timeout = 0)
++ : handle_(std::move(handle)), ms_timeout_(ms_timeout) {}
++ ~FreeBSDUsbTransport() override;
++
++ ssize_t Read(void* data, size_t len) override;
++ ssize_t Write(const void* data, size_t len) override;
++ int Close() override;
++ int Reset() override;
++
++ private:
++ std::unique_ptr<usb_handle> handle_;
++ const uint32_t ms_timeout_;
++};
++
++FreeBSDUsbTransport::~FreeBSDUsbTransport() {
++ Close();
++}
++
++ssize_t FreeBSDUsbTransport::Read(void* data, size_t len) {
++ unsigned char *buf = static_cast<unsigned char*>(data);
++ ssize_t total = 0;
++
++ if (!handle_ || !handle_->devh || handle_->ep_in == 0) {
++ return -1;
++ }
++
++ while (len > 0) {
++ int xfer = (len > MAX_BULK_TRANSFER_SIZE) ? MAX_BULK_TRANSFER_SIZE : len;
++ int transferred = 0;
++ int retry = 0;
++ int rc;
++
++ do {
++ rc = libusb_bulk_transfer(handle_->devh, handle_->ep_in,
++ buf, xfer, &transferred,
++ ms_timeout_ ? ms_timeout_ : 0);
++ if (rc == LIBUSB_ERROR_TIMEOUT) {
++ if (++retry > MAX_RETRIES) return -1;
++ std::this_thread::sleep_for(100ms);
++ } else if (rc != 0) {
++ return -1;
++ }
++ } while (rc != 0);
++
++ total += transferred;
++ len -= transferred;
++ buf += transferred;
++
++ if (transferred < xfer) break;
++ }
++
++ return total;
++}
++
++ssize_t FreeBSDUsbTransport::Write(const void* data, size_t len) {
++ const unsigned char *buf = static_cast<const unsigned char*>(data);
++ ssize_t total = 0;
++
++ if (!handle_ || !handle_->devh || handle_->ep_out == 0) {
++ return -1;
++ }
++
++ while (len > 0) {
++ int xfer = (len > MAX_BULK_TRANSFER_SIZE) ? MAX_BULK_TRANSFER_SIZE : len;
++ int transferred = 0;
++
++ int rc = libusb_bulk_transfer(handle_->devh, handle_->ep_out,
++ const_cast<unsigned char*>(buf),
++ xfer, &transferred,
++ ms_timeout_ ? ms_timeout_ : 0);
++ if (rc != 0) return -1;
++
++ total += transferred;
++ len -= transferred;
++ buf += transferred;
++ }
++
++ return total;
++}
++
++int FreeBSDUsbTransport::Close() {
++ if (handle_ && handle_->devh) {
++ libusb_release_interface(handle_->devh, handle_->iface);
++ libusb_close(handle_->devh);
++ handle_->devh = nullptr;
++ }
++ return 0;
++}
++
++int FreeBSDUsbTransport::Reset() {
++ if (!handle_ || !handle_->devh) return -1;
++ return libusb_reset_device(handle_->devh);
++}
++
++static std::unique_ptr<usb_handle> find_usb_device(ifc_match_func callback) {
++ libusb_device **devs;
++ ssize_t cnt = libusb_get_device_list(usb_context, &devs);
++ if (cnt < 0) return nullptr;
++
++ std::unique_ptr<usb_handle> result;
++
++ for (ssize_t i = 0; i < cnt && !result; i++) {
++ libusb_device *dev = devs[i];
++ struct libusb_device_descriptor desc;
++
++ if (libusb_get_device_descriptor(dev, &desc) != 0) continue;
++
++ struct libusb_config_descriptor *config;
++ if (libusb_get_active_config_descriptor(dev, &config) != 0) {
++ if (libusb_get_config_descriptor(dev, 0, &config) != 0) continue;
++ }
++
++ for (int j = 0; j < config->bNumInterfaces && !result; j++) {
++ const struct libusb_interface *iface = &config->interface[j];
++ for (int k = 0; k < iface->num_altsetting && !result; k++) {
++ const struct libusb_interface_descriptor *altsetting = &iface->altsetting[k];
++
++ usb_ifc_info info = {};
++ info.dev_vendor = desc.idVendor;
++ info.dev_product = desc.idProduct;
++ info.dev_class = desc.bDeviceClass;
++ info.dev_subclass = desc.bDeviceSubClass;
++ info.dev_protocol = desc.bDeviceProtocol;
++ info.ifc_class = altsetting->bInterfaceClass;
++ info.ifc_subclass = altsetting->bInterfaceSubClass;
++ info.ifc_protocol = altsetting->bInterfaceProtocol;
++ info.writable = 1;
++
++ uint8_t ep_in = 0, ep_out = 0;
++ for (int e = 0; e < altsetting->bNumEndpoints; e++) {
++ const struct libusb_endpoint_descriptor *ep = &altsetting->endpoint[e];
++ if ((ep->bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) != LIBUSB_TRANSFER_TYPE_BULK)
++ continue;
++ if (ep->bEndpointAddress & LIBUSB_ENDPOINT_IN) {
++ ep_in = ep->bEndpointAddress;
++ } else {
++ ep_out = ep->bEndpointAddress;
++ }
++ }
++
++ info.has_bulk_in = (ep_in != 0);
++ info.has_bulk_out = (ep_out != 0);
++
++ snprintf(info.device_path, sizeof(info.device_path),
++ "usb:%d:%d", libusb_get_bus_number(dev),
++ libusb_get_device_address(dev));
++
++ /*
++ * Open device once, read serial, then decide whether to
++ * keep it based on callback result.
++ */
++ libusb_device_handle *devh;
++ int rc = libusb_open(dev, &devh);
++ if (rc != 0) continue;
++
++ /* Detach kernel driver (ugen) before any operations */
++ libusb_set_auto_detach_kernel_driver(devh, 1);
++
++ info.serial_number[0] = '\0';
++ if (desc.iSerialNumber) {
++ libusb_get_string_descriptor_ascii(
++ devh, desc.iSerialNumber,
++ (unsigned char *)info.serial_number,
++ sizeof(info.serial_number));
++ }
++
++ info.interface[0] = '\0';
++
++ if (callback(&info) == 0) {
++ rc = libusb_claim_interface(devh, altsetting->bInterfaceNumber);
++ if (rc != 0) {
++ libusb_close(devh);
++ continue;
++ }
++
++ result = std::make_unique<usb_handle>();
++ result->devh = devh;
++ result->ep_in = ep_in;
++ result->ep_out = ep_out;
++ result->iface = altsetting->bInterfaceNumber;
++ } else {
++ libusb_close(devh);
++ }
++ }
++ }
++ libusb_free_config_descriptor(config);
++ }
++
++ libusb_free_device_list(devs, 1);
++ return result;
++}
++
++std::unique_ptr<UsbTransport> usb_open(ifc_match_func callback, uint32_t timeout_ms) {
++ if (!usb_context) {
++ if (libusb_init(&usb_context) != 0) return nullptr;
++ }
++
++ auto handle = find_usb_device(callback);
++ if (!handle) return nullptr;
++
++ return std::make_unique<FreeBSDUsbTransport>(std::move(handle), timeout_ms);
++}
diff --git a/devel/android-tools/files/patch-vendor_core_libcutils_include_private_fs_config.h b/devel/android-tools/files/patch-vendor_core_libcutils_include_private_fs_config.h
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_core_libcutils_include_private_fs_config.h
@@ -0,0 +1,23 @@
+--- vendor/core/libcutils/include/private/fs_config.h 2024-08-29 19:46:57.000000000 +0200
++++ vendor/core/libcutils/include/private/fs_config.h 2026-03-21 13:54:46.886972000 +0100
+@@ -26,7 +26,20 @@
+ #include <stdint.h>
+ #include <unistd.h>
+
++#ifdef __linux__
+ #include <linux/capability.h>
++#else
++/* Provide Linux capability constants for non-Linux platforms. */
++#ifndef CAP_SETGID
++#define CAP_SETGID 6
++#endif
++#ifndef CAP_SETUID
++#define CAP_SETUID 7
++#endif
++#ifndef CAP_BLOCK_SUSPEND
++#define CAP_BLOCK_SUSPEND 36
++#endif
++#endif
+
+ /* Rules for directories and files has moved to system/code/libcutils/fs_config.c */
+
diff --git a/devel/android-tools/files/patch-vendor_e2fsprogs_contrib_android_perms.c b/devel/android-tools/files/patch-vendor_e2fsprogs_contrib_android_perms.c
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_e2fsprogs_contrib_android_perms.c
@@ -0,0 +1,25 @@
+--- vendor/e2fsprogs/contrib/android/perms.c 2024-08-29 19:46:57.000000000 +0200
++++ vendor/e2fsprogs/contrib/android/perms.c 2026-03-21 14:11:37.709049000 +0100
+@@ -6,6 +6,22 @@
+ #include "support/nls-enable.h"
+ #include <time.h>
+ #include <sys/stat.h>
++
++#ifdef __FreeBSD__
++#ifndef VFS_CAP_REVISION_2
++#define VFS_CAP_REVISION_2 0x02000002
++#endif
++#ifndef VFS_CAP_FLAGS_EFFECTIVE
++#define VFS_CAP_FLAGS_EFFECTIVE 0x000001
++#endif
++struct vfs_cap_data {
++ __le32 magic_etc;
++ struct {
++ __le32 permitted;
++ __le32 inheritable;
++ } data[2];
++};
++#endif
+
+ #ifndef XATTR_SELINUX_SUFFIX
+ # define XATTR_SELINUX_SUFFIX "selinux"
diff --git a/devel/android-tools/files/patch-vendor_e2fsprogs_lib_config.h b/devel/android-tools/files/patch-vendor_e2fsprogs_lib_config.h
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_e2fsprogs_lib_config.h
@@ -0,0 +1,29 @@
+--- vendor/e2fsprogs/lib/config.h 2024-08-29 19:46:57.000000000 +0200
++++ vendor/e2fsprogs/lib/config.h 2026-03-21 14:07:51.522475000 +0100
+@@ -28,7 +28,7 @@
+ #define HAVE_UTIME_H 1
+
+ #define HAVE_SYS_STAT_H 1
+-#if !defined(__APPLE__)
++#if !defined(__APPLE__) && !defined(__FreeBSD__)
+ # define HAVE_SYS_SYSMACROS_H 1
+ #endif
+ #define HAVE_SYS_TIME_H 1
+@@ -37,7 +37,7 @@
+ #if defined(_WIN32)
+ # define HAVE_LINUX_TYPES_H 1
+ #endif
+-#if defined(__APPLE__) || defined(__linux__)
++#if defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__)
+ # define HAVE_FCNTL 1
+ # define HAVE_FSYNC 1
+ # define HAVE_GETPAGESIZE 1
+@@ -54,7 +54,7 @@
+ # define HAVE_SYS_SELECT_H 1
+ # define HAVE_SYS_WAIT_H 1
+ #endif
+-#ifdef __APPLE__
++#if defined(__APPLE__) || defined(__FreeBSD__)
+ # define HAVE_GETMNTINFO 1
+ #endif
+ #if defined(__linux__)
diff --git a/devel/android-tools/files/patch-vendor_f2fs-tools_fsck_xattr.c b/devel/android-tools/files/patch-vendor_f2fs-tools_fsck_xattr.c
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_f2fs-tools_fsck_xattr.c
@@ -0,0 +1,13 @@
+--- vendor/f2fs-tools/fsck/xattr.c 2024-08-29 19:46:57.000000000 +0200
++++ vendor/f2fs-tools/fsck/xattr.c 2026-03-21 14:11:45.643441000 +0100
+@@ -16,6 +16,10 @@
+ #include "fsck.h"
+ #include "node.h"
+ #include "xattr.h"
++
++#ifndef ENODATA
++#define ENODATA ENOATTR
++#endif
+
+ void *read_all_xattrs(struct f2fs_sb_info *sbi, struct f2fs_node *inode,
+ bool sanity_check)
diff --git a/devel/android-tools/files/patch-vendor_f2fs-tools_lib_libf2fs.c b/devel/android-tools/files/patch-vendor_f2fs-tools_lib_libf2fs.c
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_f2fs-tools_lib_libf2fs.c
@@ -0,0 +1,26 @@
+--- vendor/f2fs-tools/lib/libf2fs.c 2024-08-29 19:46:57.000000000 +0200
++++ vendor/f2fs-tools/lib/libf2fs.c 2026-03-21 14:06:22.014748000 +0100
+@@ -43,6 +43,9 @@
+ #ifdef HAVE_LINUX_LIMITS_H
+ #include <linux/limits.h>
+ #endif
++#ifdef HAVE_LIMITS_H
++#include <limits.h>
++#endif
+
+ /* SCSI command for standard inquiry*/
+ #define MODELINQUIRY 0x12,0x00,0x00,0x00,0x4A,0x00
+@@ -945,6 +948,13 @@
+ #define BLKGETSIZE DKIOCGETBLOCKCOUNT
+ #define BLKSSZGET DKIOCGETBLOCKCOUNT
+ #endif /* APPLE_DARWIN */
++
++#if defined(__FreeBSD__)
++#include <sys/disk.h>
++#include <sys/ioctl.h>
++#define BLKGETSIZE64 DIOCGMEDIASIZE
++#define BLKSSZGET DIOCGSECTORSIZE
++#endif /* __FreeBSD__ */
+
+ #ifndef _WIN32
+ static int open_check_fs(char *path, int flag)
diff --git a/devel/android-tools/files/patch-vendor_libbase_file.cpp b/devel/android-tools/files/patch-vendor_libbase_file.cpp
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_libbase_file.cpp
@@ -0,0 +1,25 @@
+--- vendor/libbase/file.cpp 2024-08-29 19:46:57.000000000 +0200
++++ vendor/libbase/file.cpp 2026-03-21 14:02:01.670927000 +0100
+@@ -35,6 +35,9 @@
+
+ #if defined(__APPLE__)
+ #include <mach-o/dyld.h>
++#endif
++#if defined(__FreeBSD__)
++#include <sys/sysctl.h>
+ #endif
+ #if defined(_WIN32)
+ #include <direct.h>
+@@ -506,6 +509,12 @@
+ if (result == 0 || result == sizeof(path) - 1) return "";
+ path[PATH_MAX - 1] = 0;
+ return path;
++#elif defined(__FreeBSD__)
++ int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
++ char path[PATH_MAX + 1];
++ size_t path_len = sizeof(path);
++ if (sysctl(mib, 4, path, &path_len, nullptr, 0) < 0) return "";
++ return path;
+ #elif defined(__EMSCRIPTEN__)
+ abort();
+ #else
diff --git a/devel/android-tools/files/patch-vendor_libbase_include_android-base_endian.h b/devel/android-tools/files/patch-vendor_libbase_include_android-base_endian.h
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_libbase_include_android-base_endian.h
@@ -0,0 +1,16 @@
+--- vendor/libbase/include/android-base/endian.h 2024-08-29 19:46:57.000000000 +0200
++++ vendor/libbase/include/android-base/endian.h 2026-03-21 13:55:33.956833000 +0100
+@@ -25,6 +25,13 @@
+
+ #include <sys/endian.h>
+
++#elif defined(__FreeBSD__)
++
++#include <sys/endian.h>
++#include <netinet/in.h>
++#define htonq(x) htobe64(x)
++#define ntohq(x) be64toh(x)
++
+ #elif defined(__GLIBC__) || defined(ANDROID_HOST_MUSL) || defined(__linux__)
+
+ /* glibc and musl's <endian.h> are like bionic's <sys/endian.h>. */
diff --git a/devel/android-tools/files/patch-vendor_libbase_include_android-base_off64_t.h b/devel/android-tools/files/patch-vendor_libbase_include_android-base_off64_t.h
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_libbase_include_android-base_off64_t.h
@@ -0,0 +1,12 @@
+--- vendor/libbase/include/android-base/off64_t.h 2024-08-29 19:46:57.000000000 +0200
++++ vendor/libbase/include/android-base/off64_t.h 2026-03-21 13:49:10.156714000 +0100
+@@ -16,7 +16,7 @@
+
+ #pragma once
+
+-#if defined(__APPLE__)
+-/** Mac OS has always had a 64-bit off_t, so it doesn't have off64_t. */
++#if defined(__APPLE__) || defined(__FreeBSD__)
++/** Mac OS and FreeBSD have always had a 64-bit off_t, so they don't have off64_t. */
+ typedef off_t off64_t;
+ #endif
diff --git a/devel/android-tools/files/patch-vendor_libbase_logging.cpp b/devel/android-tools/files/patch-vendor_libbase_logging.cpp
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_libbase_logging.cpp
@@ -0,0 +1,22 @@
+--- vendor/libbase/logging.cpp 2024-08-29 19:46:57.000000000 +0200
++++ vendor/libbase/logging.cpp 2026-03-21 13:49:23.603723000 +0100
+@@ -26,7 +26,7 @@
+ #include <time.h>
+
+ // For getprogname(3) or program_invocation_short_name.
+-#if defined(__ANDROID__) || defined(__APPLE__)
++#if defined(__ANDROID__) || defined(__APPLE__) || defined(__FreeBSD__)
+ #include <stdlib.h>
+ #elif defined(__GLIBC__)
+ #include <errno.h>
+@@ -61,8 +61,8 @@
+ namespace android {
+ namespace base {
+
+-// BSD-based systems like Android/macOS have getprogname(). Others need us to provide one.
+-#if !defined(__APPLE__) && !defined(__BIONIC__)
++// BSD-based systems like Android/macOS/FreeBSD have getprogname(). Others need us to provide one.
++#if !defined(__APPLE__) && !defined(__BIONIC__) && !defined(__FreeBSD__)
+ static const char* getprogname() {
+ #ifdef _WIN32
+ static bool first = true;
diff --git a/devel/android-tools/files/patch-vendor_libbase_threads.cpp b/devel/android-tools/files/patch-vendor_libbase_threads.cpp
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_libbase_threads.cpp
@@ -0,0 +1,20 @@
+--- vendor/libbase/threads.cpp.orig 2024-08-29 19:46:57.000000000 +0200
++++ vendor/libbase/threads.cpp 2026-03-24 12:00:00.000000000 +0100
+@@ -21,6 +21,8 @@
+
+ #if defined(__APPLE__)
+ #include <pthread.h>
++#elif defined(__FreeBSD__)
++#include <pthread_np.h>
+ #elif defined(__linux__) && !defined(__ANDROID__)
+ #include <syscall.h>
+ #elif defined(_WIN32)
+@@ -37,6 +39,8 @@
+ uint64_t tid;
+ pthread_threadid_np(NULL, &tid);
+ return tid;
++#elif defined(__FreeBSD__)
++ return pthread_getthreadid_np();
+ #elif defined(__linux__)
+ return syscall(__NR_gettid);
+ #elif defined(_WIN32)
diff --git a/devel/android-tools/files/patch-vendor_logging_liblog_logger_write.cpp b/devel/android-tools/files/patch-vendor_logging_liblog_logger_write.cpp
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_logging_liblog_logger_write.cpp
@@ -0,0 +1,13 @@
+--- vendor/logging/liblog/logger_write.cpp 2024-08-29 19:46:57.000000000 +0200
++++ vendor/logging/liblog/logger_write.cpp 2026-03-21 13:49:27.807366000 +0100
+@@ -119,8 +119,8 @@
+ #endif
+ }
+
+-// BSD-based systems like Android/macOS have getprogname(). Others need us to provide one.
+-#if !defined(__APPLE__) && !defined(__BIONIC__)
++// BSD-based systems like Android/macOS/FreeBSD have getprogname(). Others need us to provide one.
++#if !defined(__APPLE__) && !defined(__BIONIC__) && !defined(__FreeBSD__)
+ static const char* getprogname() {
+ #ifdef _WIN32
+ static bool first = true;
diff --git a/devel/android-tools/files/patch-vendor_selinux_libselinux_src_label_file.h b/devel/android-tools/files/patch-vendor_selinux_libselinux_src_label_file.h
new file mode 100644
--- /dev/null
+++ b/devel/android-tools/files/patch-vendor_selinux_libselinux_src_label_file.h
@@ -0,0 +1,19 @@
+--- vendor/selinux/libselinux/src/label_file.h 2024-08-29 19:46:57.000000000 +0200
++++ vendor/selinux/libselinux/src/label_file.h 2026-03-21 18:25:49.387620000 +0100
+@@ -6,7 +6,16 @@
+ #include <string.h>
+
+ #include <sys/stat.h>
++#ifdef __FreeBSD__
++#include <sys/extattr.h>
++static inline ssize_t getxattr(const char *path, const char *name,
++ void *value, size_t size)
++{
++ return extattr_get_file(path, EXTATTR_NAMESPACE_SYSTEM, name, value, size);
++}
++#else
+ #include <sys/xattr.h>
++#endif
+
+ /*
+ * regex.h/c were introduced to hold all dependencies on the regular
diff --git a/devel/android-tools/pkg-descr b/devel/android-tools/pkg-descr
--- a/devel/android-tools/pkg-descr
+++ b/devel/android-tools/pkg-descr
@@ -3,6 +3,9 @@
* adb
* fastboot
* mke2fs.android (required by fastboot)
- * simg2img, img2simg, append2simg
+ * simg2img, img2simg, append2simg, ext2simg
+ * e2fsdroid
* lpdump, lpmake, lpadd, lpflash, lpunpack
+ * make_f2fs, sload_f2fs
* mkbootimg, unpack_bootimg, repack_bootimg
+ * avbtool, mkdtboimg
diff --git a/devel/android-tools/pkg-plist b/devel/android-tools/pkg-plist
--- a/devel/android-tools/pkg-plist
+++ b/devel/android-tools/pkg-plist
@@ -1,5 +1,8 @@
bin/adb
bin/append2simg
+bin/avbtool
+bin/e2fsdroid
+bin/ext2simg
bin/fastboot
bin/img2simg
bin/lpadd
@@ -7,12 +10,18 @@
bin/lpflash
bin/lpmake
bin/lpunpack
+bin/make_f2fs
bin/mkbootimg
+bin/mkdtboimg
bin/mke2fs.android
bin/repack_bootimg
bin/simg2img
+bin/sload_f2fs
bin/unpack_bootimg
-%%DATADIR%%/completions/adb
-%%DATADIR%%/completions/fastboot
share/bash-completion/completions/adb
share/bash-completion/completions/fastboot
+share/man/man1/adb.1.gz
+%%DATADIR%%/completions/adb
+%%DATADIR%%/completions/fastboot
+%%DATADIR%%/mkbootimg/gki/generate_gki_certificate.py
+%%DATADIR%%/mkbootimg/mkbootimg.py
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Apr 2, 9:01 AM (9 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30716483
Default Alt Text
D56064.id174205.diff (39 KB)
Attached To
Mode
D56064: devel/android-tools: update to 35.0.2
Attached
Detach File
Event Timeline
Log In to Comment