Commit ef43ec79 authored by jbeich's avatar jbeich
Browse files

devel/fb-adb: add new port

Differential Revision:	https://reviews.freebsd.org/D3930

fb-adb is a tool for interacting with Android systems. It does much of
what adb does, but with better remote shell support and, hopefully,
fewer bugs. Differences between adb and fb-adb are that fb-adb:

  * is binary clean (no LF -> CRLF mangling)
  * transmits and updates window size
  * distinguishes standard output and standard error
  * properly muxes streams with independent flow control
  * allows for ssh-like pty allocation control
  * propagates program exit status instead of always exiting
    with status 0
  * properly escapes program arguments
  * kills remote program
  * provides a generic facility to elevate to root without re-escaping

https://github.com/facebook/fb-adb
parent 483320de
......@@ -499,6 +499,7 @@
SUBDIR += f77flow
SUBDIR += fam
SUBDIR += fastcrc
SUBDIR += fb-adb
SUBDIR += fb303
SUBDIR += fc++
SUBDIR += ffcall
......
# $FreeBSD$
PORTNAME= fb-adb
DISTVERSION= 1.4.4-109
DISTVERSIONSUFFIX= -g930ba5f
CATEGORIES= devel
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Better shell for Android devices
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= xxd:${PORTSDIR}/editors/vim-lite \
${LOCALBASE}/android/ARMv7/bin/arm-aux-linux-androideabi-gcc:${PORTSDIR}/lang/gnatdroid-armv7 \
${BASH_CMD}:${PORTSDIR}/shells/${BASH_CMD:T}
RUN_DEPENDS= adb:${PORTSDIR}/devel/android-tools-adb
USE_GITHUB= yes
GH_ACCOUNT= facebook
USES= autoreconf:outsource gmake ncurses perl5 python:3,build
USE_PERL5= build # pod2man
BASH_CMD?= bash # can be zsh
GNU_CONFIGURE= yes
CONFIGURE_ENV= PATH="${BUILD_DEPENDS:M*android*:C/:.*//:H}:$$PATH" \
PYTHON3="${PYTHON_CMD}"
# XXX --mandir as SET_LATE_CONFIGURE_ARGS doesn't respect CONFIGURE_CMD
CONFIGURE_ARGS= --mandir="${MANPREFIX}/man" --with-android-ndk=system
INSTALL_TARGET= install-strip
PLIST_FILES= bin/${PORTNAME} \
man/man1/${PORTNAME}.1.gz
# Cross-build sanitization
CONFIG_SITE= /dev/null # XXX Only for AC_CONFIG_SUBDIRS
CONFIGURE_ENV+= HOST_CFLAGS="${CPPFLAGS} ${CFLAGS:N-[Og]*:N-pipe}" \
STUB_CFLAGS="${STUB_CFLAGS}" \
CPPFLAGS="" CFLAGS="${CFLAGS:M-[Og]*} ${CFLAGS:M-pipe}" \
HOST_LDFLAGS="${LDFLAGS} ${LIBS}" \
STUB_LDFLAGS="${STUB_LDFLAGS}" \
LDFLAGS="" LIBS=""
OPTIONS_DEFINE= ASSERT BASH DEBUG
ASSERT_CONFIGURE_ENABLE=checking
BASH_DESC= Install JSON parser used by bash-completion
BASH_RUN_DEPENDS= jq:${PORTSDIR}/textproc/jq
DEBUG_CONFIGURE_ENABLE= debuggable-stubs
post-patch:
# XXX Decouple -Werror from --enable-checking (ASSERT=on)
# XXX lang/gnatdroid-x86 doesn't exist yet
@${REINPLACE_CMD} -e '/CPPFLAGS.*-Werror/d' \
-e 's/stub-x86[^,]*, //g' \
${WRKSRC}/configure.ac
@${REINPLACE_CMD} -e 's/linux-android/aux-&/' \
${WRKSRC}/stub-*/configure
# XXX Similar to USES=qmake:outsource, merge into Mk/Uses/autoreconf.mk
.if defined(USES) && ${USES:Mautoreconf\:outsource}
USES:= autoreconf:build ${USES:Nautoreconf*}
CONFIGURE_CMD= ${AUTORECONF_WRKSRC}/${CONFIGURE_SCRIPT}
CONFIGURE_WRKSRC= ${WRKDIR}/.build
BUILD_WRKSRC= ${CONFIGURE_WRKSRC}
INSTALL_WRKSRC= ${CONFIGURE_WRKSRC}
AUTORECONF_WRKSRC?= ${WRKSRC}
_USES_configure+= 470:do-autoreconf
do-autoreconf:
.for f in AUTHORS ChangeLog INSTALL NEWS README
# Don't modify time stamps if the files already exist
@test -e ${AUTORECONF_WRKSRC}/${f} || ${TOUCH} ${AUTORECONF_WRKSRC}/${f}
.endfor
@(cd ${AUTORECONF_WRKSRC} && ${LOCALBASE}/bin/autoreconf -f -i)
@${MKDIR} ${CONFIGURE_WRKSRC}
.endif
.include <bsd.port.mk>
SHA256 (facebook-fb-adb-1.4.4-109-g930ba5f_GH0.tar.gz) = e93ca8163fa42d3fc10888231bb7cc9fedbff809171f9b6745ca04da7a082b6d
SIZE (facebook-fb-adb-1.4.4-109-g930ba5f_GH0.tar.gz) = 248393
SHA256 (android-ndk-r10e-linux-x86.bin) = 92b07d25aaad9b341a7f2b2a62402d508e948bf2dea3ee7b65a6aeb18bca7df5
SIZE (android-ndk-r10e-linux-x86.bin) = 394281908
SHA256 (android-ndk-r10e-linux-x86_64.bin) = 102d6723f67ff1384330d12c45854315d6452d6510286f4e5891e00a5a8f1d5a
SIZE (android-ndk-r10e-linux-x86_64.bin) = 401522849
--- util.c.orig 2015-10-09 22:02:18 UTC
+++ util.c
@@ -1563,3 +1563,9 @@ xregerror(int errcode, const regex_t* pr
reslist_xfer(rl->parent, rl);
return (char*) gb.buf;
}
+
+#ifndef __linux__
+// XXX For GCC 4.4 or older
+__weak_reference(my_unreachable, __builtin_unreachable);
+void my_unreachable() { abort(); }
+#endif
fb-adb is a tool for interacting with Android systems. It does much of
what adb does, but with better remote shell support and, hopefully,
fewer bugs. Differences between adb and fb-adb are that fb-adb:
* is binary clean (no LF -> CRLF mangling)
* transmits and updates window size
* distinguishes standard output and standard error
* properly muxes streams with independent flow control
* allows for ssh-like pty allocation control
* propagates program exit status instead of always exiting
with status 0
* properly escapes program arguments
* kills remote program
* provides a generic facility to elevate to root without re-escaping
WWW: https://github.com/facebook/fb-adb
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment