aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjbeich <jbeich@FreeBSD.org>2015-10-28 22:29:52 +0800
committerjbeich <jbeich@FreeBSD.org>2015-10-28 22:29:52 +0800
commitef43ec7934cb11e0c603e9bfc77b923c0e1f1f3a (patch)
treeff6891deb013df40bc598ec640dfbc7c3174baed
parent483320def481106677a2b370b84d45e4f5e85c71 (diff)
downloadfreebsd-ports-gnome-ef43ec7934cb11e0c603e9bfc77b923c0e1f1f3a.tar.gz
freebsd-ports-gnome-ef43ec7934cb11e0c603e9bfc77b923c0e1f1f3a.tar.zst
freebsd-ports-gnome-ef43ec7934cb11e0c603e9bfc77b923c0e1f1f3a.zip
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
-rw-r--r--devel/Makefile1
-rw-r--r--devel/fb-adb/Makefile78
-rw-r--r--devel/fb-adb/distinfo6
-rw-r--r--devel/fb-adb/files/patch-util.c12
-rw-r--r--devel/fb-adb/pkg-descr16
5 files changed, 113 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index 599456ad1923..10a77507429d 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -499,6 +499,7 @@
SUBDIR += f77flow
SUBDIR += fam
SUBDIR += fastcrc
+ SUBDIR += fb-adb
SUBDIR += fb303
SUBDIR += fc++
SUBDIR += ffcall
diff --git a/devel/fb-adb/Makefile b/devel/fb-adb/Makefile
new file mode 100644
index 000000000000..8da34440dd53
--- /dev/null
+++ b/devel/fb-adb/Makefile
@@ -0,0 +1,78 @@
+# $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>
diff --git a/devel/fb-adb/distinfo b/devel/fb-adb/distinfo
new file mode 100644
index 000000000000..9a89339dd571
--- /dev/null
+++ b/devel/fb-adb/distinfo
@@ -0,0 +1,6 @@
+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
diff --git a/devel/fb-adb/files/patch-util.c b/devel/fb-adb/files/patch-util.c
new file mode 100644
index 000000000000..a147a187eaea
--- /dev/null
+++ b/devel/fb-adb/files/patch-util.c
@@ -0,0 +1,12 @@
+--- 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
diff --git a/devel/fb-adb/pkg-descr b/devel/fb-adb/pkg-descr
new file mode 100644
index 000000000000..ff27e20310d6
--- /dev/null
+++ b/devel/fb-adb/pkg-descr
@@ -0,0 +1,16 @@
+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