Commit 70cd4999 authored by Neel Chauhan's avatar Neel Chauhan
Browse files

devel/android-tools: New port: Android debugging tools

While I'm here, remove the old devel/android-tools-adb and
devel/android-tools-fastboot ports. These ports are long out-of-date
and the adb port especially had issues with certain devices.

This port was tested from a FreeBSD 14.0 system to flash both
LineageOS and GrapheneOS on a Google Pixel 3 using both `adb` and
`fastboot`.
parent cdc4f394
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -17197,3 +17197,5 @@ print/ttftot42||2022-06-08|Abdonware, depends on freetype1
print/freetype|print/freetype2|2022-06-08|Has been replaced long ago by freetype2
net/libgnetwork||2022-06-08|Gnome2 library unused anymore
x11-wm/compizconfig-backend-gconf||2022-06-08|gconf support has been removed from compiz
devel/android-tools-adb|devel/android-tools|2022-06-09|Port has been updated, unbroken and consolidated into devel/android-tools
devel/android-tools-fastboot|devel/android-tools|2022-06-09|Port has been updated and consolidated into devel/android-tools
+1 −2
Original line number Diff line number Diff line
@@ -151,8 +151,7 @@
    SUBDIR += aml
    SUBDIR += ammonite
    SUBDIR += amqp-cpp
    SUBDIR += android-tools-adb
    SUBDIR += android-tools-fastboot
    SUBDIR += android-tools
    SUBDIR += android-tools-simpleperf
    SUBDIR += anjuta
    SUBDIR += antlr

devel/android-tools-adb/Makefile

deleted100644 → 0
+0 −79
Original line number Diff line number Diff line
PORTNAME=	android-tools-adb
DISTVERSIONPREFIX=	platform-tools-
DISTVERSION?=	29.0.6
PORTREVISION?=	1
CATEGORIES=	devel comms

MAINTAINER=	ports@FreeBSD.org
COMMENT=	Android debug bridge command line tool

LICENSE=	APACHE20

USE_GITHUB=	yes
GH_TUPLE=	aosp-mirror:platform_system_core:${DISTVERSIONFULL}

CONFLICTS_INSTALL?=	${PORTNAME}-devel

USES=		compiler:c++17-lang pkgconfig ssl uidfix
BUILD_WRKSRC=	${WRKSRC}/adb
INSTALL_WRKSRC=	${BUILD_WRKSRC}
TEST_WRKSRC=	${BUILD_WRKSRC}
MAKEFILE?=	${.CURDIR}/files/Makefile
MAKE_ENV=	BINDIR="${PREFIX}/bin" FILESDIR="${DOCSDIR}" \
		VERSION="${DISTVERSION}${DISTVERSIONSUFFIX}"
ALL_TARGET=	all
TEST_TARGET=	test
PLIST_FILES=	bin/adb
PORTDOCS=	*

OPTIONS_DEFINE+=MDNSRESPONDER BASH DOCS TEST TEST_PYTHON
OPTIONS_DEFAULT=MDNSRESPONDER
OPTIONS_SUB=	yes

.if make(makesum) # for optional distfiles
.MAKEFLAGS:	WITH="${OPTIONS_DEFINE}"
.endif

BASH_GH_TUPLE=		mbrubeck:android-completion:c1b0656:bashcomp
BASH_PLIST_FILES=	etc/bash_completion.d/adb
BASH_VARS=		LICENSE+=MIT LICENSE_COMB=multi

DOCS_MAKE_ARGS_OFF=	FILES="" FILESDIR=""

MDNSRESPONDER_LIB_DEPENDS=	libdns_sd.so:net/mDNSResponder
MDNSRESPONDER_USES=		localbase:ldflags
MDNSRESPONDER_LDFLAGS=		-ldns_sd
MDNSRESPONDER_MAKE_ENV_OFF=	MDNSEXT=_unsupported

TEST_BUILD_DEPENDS+=	googletest>=1.6.0:devel/googletest
TEST_ALL_TARGET=	adb_test

TEST_PYTHON_DESC=	${TEST_DESC:S/tests/python &/}
TEST_PYTHON_GH_TUPLE=	aosp-mirror:platform_development:${DISTVERSIONFULL}:development
TEST_PYTHON_BUILD_DEPENDS=${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR}
TEST_PYTHON_USES=	python:build

post-patch:
# XXX Hidden by poudriere/tinderbox, see lindev(4) for FreeBSD < 11.0
	@if [ ! -e /dev/full ]; then \
		${REINPLACE_CMD} -e '/TEST/s/[^ ]*ENOSPC/DISABLED_&/' \
			${WRKSRC}/adb/adb_io_test.cpp; \
	fi
# XXX getcwd fails and not connected upstream
	@${REINPLACE_CMD} -e '/TEST/s/, /&DISABLED_/' \
		${WRKSRC}/adb/bugreport_test.cpp

pre-install-TEST-on: do-test

pre-install-TEST_PYTHON-on:
# XXX python tests may leave behind running adb server
	${SETENV} PATH=${BUILD_WRKSRC}:${PATH} \
		PYTHONPATH=${WRKSRC_development}/python-packages \
		${PYTHON_CMD} -m unittest discover -vs ${BUILD_WRKSRC}

post-install-BASH-on:
	${MKDIR} ${STAGEDIR}${PREFIX}/${BASH_PLIST_FILES:H}
	${INSTALL_DATA} ${WRKSRC_bashcomp}/android \
		${STAGEDIR}${PREFIX}/${BASH_PLIST_FILES}

.include <bsd.port.mk>

devel/android-tools-adb/distinfo

deleted100644 → 0
+0 −7
Original line number Diff line number Diff line
TIMESTAMP = 1581453885
SHA256 (aosp-mirror-platform_system_core-platform-tools-29.0.6_GH0.tar.gz) = 3d1898c1ad19f63641090576c60588ab761132b42b306ff4979d30723187d562
SIZE (aosp-mirror-platform_system_core-platform-tools-29.0.6_GH0.tar.gz) = 72302409
SHA256 (mbrubeck-android-completion-c1b0656_GH0.tar.gz) = ca3311ba47a5edd56c929ac9aae57c02c2c3f1636519c5f67abb00b6e3ecd75c
SIZE (mbrubeck-android-completion-c1b0656_GH0.tar.gz) = 5967
SHA256 (aosp-mirror-platform_development-platform-tools-29.0.6_GH0.tar.gz) = 5560f767082834183e31af0fca9e121996e5e16aac67ce10f9321c4146809a0a
SIZE (aosp-mirror-platform_development-platform-tools-29.0.6_GH0.tar.gz) = 63959966
+0 −149
Original line number Diff line number Diff line
PROG_CXX=adb
NOMAN= # DragonFly, NetBSD, OpenBSD
MAN= # FreeBSD
BINDIR?=/usr/bin
FILESDIR?=${DOCDIR}/${PROG}

FILES= OVERVIEW.TXT SERVICES.TXT SYNC.TXT protocol.txt

SRCS+= adb.cpp
SRCS+= adb_io.cpp
SRCS+= adb_listeners.cpp
SRCS+= adb_trace.cpp
SRCS+= adb_utils.cpp
SRCS+= services.cpp
SRCS+= shell_service_protocol.cpp
SRCS+= socket_spec.cpp
SRCS+= ../adb/sockets.cpp
SRCS+= sysdeps_unix.cpp
SRCS+= transport.cpp
SRCS+= transport_local.cpp
SRCS+= transport_usb.cpp
SRCS+= types.cpp

TEST_SRCS+= adb_io_test.cpp
TEST_SRCS+= adb_listeners_test.cpp
TEST_SRCS+= adb_utils_test.cpp
TEST_SRCS+= bugreport_test.cpp
TEST_SRCS+= shell_service_protocol_test.cpp
TEST_SRCS+= socket_spec_test.cpp
TEST_SRCS+= socket_test.cpp
TEST_SRCS+= sysdeps_test.cpp
TEST_SRCS+= transport_test.cpp
TEST_SRCS+= types_test.cpp

.PATH: ${.CURDIR}/client
SRCS+= adb_client.cpp
SRCS+= adb_install.cpp
SRCS+= auth.cpp
SRCS+= bugreport.cpp
SRCS+= commandline.cpp
SRCS+= console.cpp
SRCS+= file_sync_client.cpp
SRCS+= line_printer.cpp
SRCS+= main.cpp
SRCS+= transport_mdns${MDNSEXT}.cpp
SRCS+= usb_libusb.cpp

.PATH: ${.CURDIR}/fdevent
SRCS+= fdevent.cpp
SRCS+= fdevent_poll.cpp
TEST_SRCS+= fdevent_test.cpp

.PATH: ${.CURDIR}/sysdeps
SRCS+= errno.cpp
TEST_SRCS+= stat_test.cpp

.PATH: ${.CURDIR}/sysdeps/posix
SRCS+= network.cpp

.PATH: ${.CURDIR}/../base
SRCS+= chrono_utils.cpp
SRCS+= file.cpp
SRCS+= liblog_symbols.cpp
SRCS+= logging.cpp
SRCS+= parsenetaddress.cpp
SRCS+= stringprintf.cpp
SRCS+= strings.cpp
TEST_SRCS+= file_test.cpp
TEST_SRCS+= logging_test.cpp
TEST_SRCS+= parsenetaddress_test.cpp
TEST_SRCS+= stringprintf_test.cpp
TEST_SRCS+= strings_test.cpp
TEST_SRCS+= test_main.cpp
TEST_SRCS+= test_utils.cpp

.PATH: ${.CURDIR}/../diagnose_usb
SRCS+= diagnose_usb.cpp

.PATH: ${.CURDIR}/../libcrypto_utils
SRCS+= android_pubkey.c

.PATH: ${.CURDIR}/../libcrypto_utils/tests
TEST_SRCS+= android_pubkey_test.cpp

.PATH: ${.CURDIR}/../libcutils
SRCS+= socket_inaddr_any_server_unix.cpp
SRCS+= socket_local_client_unix.cpp
SRCS+= socket_local_server_unix.cpp
SRCS+= socket_network_client_unix.cpp
SRCS+= ../libcutils/sockets.cpp
SRCS+= threads.cpp
# DragonFly, NetBSD, OpenBSD
CPPFLAGS.sockets.cpp+= -o ${.TARGET}

# required by base
.PATH: ${.CURDIR}/../liblog
SRCS+= logger_write.cpp
SRCS+= ../liblog/properties.cpp

CPPFLAGS+= -DPLATFORM_TOOLS_VERSION="\"${VERSION:U0.0.0}\""
CPPFLAGS+= -DADB_HOST=1
CPPFLAGS+= -Doff64_t=off_t
CPPFLAGS+= -Dlseek64=lseek
CPPFLAGS+= -Dpread64=pread
CPPFLAGS+= -Dpwrite64=pwrite
CPPFLAGS+= -I${.CURDIR}
CPPFLAGS+= -I${.CURDIR}/client
CPPFLAGS+= -I${.CURDIR}/../include
CPPFLAGS+= -I${.CURDIR}/../base/include
CPPFLAGS+= -I${.CURDIR}/../diagnose_usb/include
CPPFLAGS+= -I${.CURDIR}/../libcrypto_utils/include
CPPFLAGS+= ${CPPFLAGS.${.IMPSRC:T}}
CPPFLAGS+= $$(${PKG_CONFIG} libcrypto --cflags 2>/dev/null)
CPPFLAGS+= $$(${PKG_CONFIG} libusb-1.0 --cflags 2>/dev/null)
CXXFLAGS+= -std=gnu++2a

.ifndef COMPILE.c
CFLAGS+= ${CPPFLAGS}
CXXFLAGS+= ${CPPFLAGS}
.endif

TEST_CPPFLAGS+= $$(${PKG_CONFIG} gtest --cflags)
TEST_CPPFLAGS+= $$(${PKG_CONFIG} gmock --cflags)
.for f in ${TEST_SRCS}
CPPFLAGS.${f}+= ${TEST_CPPFLAGS}
.endfor

LDADD+= $$(${PKG_CONFIG} libcrypto --libs 2>/dev/null || echo -lcrypto)
LDADD+= $$(${PKG_CONFIG} libusb-1.0 --libs 2>/dev/null || echo -lusb)
LDADD+= \-lpthread
DPADD+= ${LIBCRYPTO} ${LIBPTHREAD} ${LIBUSB}
TEST_LDADD+= $$(${PKG_CONFIG} gtest --libs)
TEST_LDADD+= $$(${PKG_CONFIG} gmock --libs)

TEST_OBJS+= ${TEST_SRCS:R:S/$/.o/}
CLEANFILES+= ${PROG}_test ${TEST_OBJS}

PKG_CONFIG?= pkg-config

beforeinstall:
	${INSTALL} -d ${DESTDIR}${FILESDIR}

.include <bsd.prog.mk>

test: ${PROG}_test
	@for f in ${.ALLSRC}; do ./$$f; done

${PROG}_test: ${OBJS:Nmain.o:Nadb_install.o:Ncommandline.o} ${TEST_OBJS}
	${CXX} ${CPPFLAGS} ${CXXFLAGS} ${LDFLAGS} -o $@ $> ${LDADD} ${TEST_LDADD}
Loading