aboutsummaryrefslogtreecommitdiffstats
path: root/testing/android-tools
diff options
context:
space:
mode:
authorSören Tempel <soeren+git@soeren-tempel.net>2016-12-23 13:58:33 +0100
committerTimo Teräs <timo.teras@iki.fi>2016-12-27 06:28:22 +0000
commit61f5f1d1d0528dea985b04626bc7f59f885cc450 (patch)
treeed83406305d7842b51c58c4353b60fe7bd847f57 /testing/android-tools
parentdb97c08f4986f5f0dcbefe37251ad9748df81c6e (diff)
downloadaports-61f5f1d1d0528dea985b04626bc7f59f885cc450.tar.bz2
aports-61f5f1d1d0528dea985b04626bc7f59f885cc450.tar.xz
testing/android-tools: upgrade to 7.0.0_p24
Diffstat (limited to 'testing/android-tools')
-rw-r--r--testing/android-tools/APKBUILD78
-rw-r--r--testing/android-tools/android-tools.patch826
-rw-r--r--testing/android-tools/fix-build.patch69
-rw-r--r--testing/android-tools/fix-getcwd.patch36
-rw-r--r--testing/android-tools/generate-build.rb172
-rw-r--r--testing/android-tools/musl-fixes.patch164
6 files changed, 1026 insertions, 319 deletions
diff --git a/testing/android-tools/APKBUILD b/testing/android-tools/APKBUILD
index 39fa992b0a..ae3a3fc231 100644
--- a/testing/android-tools/APKBUILD
+++ b/testing/android-tools/APKBUILD
@@ -1,46 +1,40 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: Sören Tempel <soeren+alpine@soeren-tempel.net>
pkgname=android-tools
-pkgver=6.0.1_p46
+pkgver=7.0.0_p24
_realver=${pkgver/_p/_r}
-pkgrel=2
+pkgrel=0
pkgdesc="Android platform tools"
url="http://tools.android.com/"
arch="all"
license="Apache BSD"
depends=""
depends_dev=""
-makedepends="zlib-dev libressl-dev pcre-dev linux-headers bsd-compat-headers
- ruby"
+makedepends="zlib-dev libressl-dev pcre-dev linux-headers bsd-compat-headers"
install=""
subpackages=""
source="http://dev.alpinelinux.org/archive/$pkgname/$pkgname-core-$_realver.tar.gz
http://dev.alpinelinux.org/archive/$pkgname/$pkgname-extras-$_realver.tar.gz
http://dev.alpinelinux.org/archive/$pkgname/$pkgname-libselinux-$_realver.tar.gz
http://dev.alpinelinux.org/archive/$pkgname/$pkgname-f2fs-tools-$_realver.tar.gz
+ http://dev.alpinelinux.org/archive/$pkgname/$pkgname-safe-iop-$_realver.tar.gz
+ http://dev.alpinelinux.org/archive/$pkgname/$pkgname-gtest-$_realver.tar.gz
- fix-build.patch
- fix-getcwd.patch
- generate-build.rb
+ android-tools.patch
+ musl-fixes.patch
"
_giturl="https://android.googlesource.com/platform"
_gittag="android-$_realver"
builddir="$srcdir"
-prepare() {
- default_prepare || return 1
-
- cd "$builddir"
- echo "set -x -e" > build.sh
- ruby generate-build.rb >> build.sh
-}
+patch_args="-p0"
snapshot() {
mkdir -p "$srcdir" && cd "$srcdir"
local r=
- for r in system/core system/extras external/libselinux external/f2fs-tools; do
+ for r in system/core system/extras external/libselinux external/f2fs-tools external/gtest external/safe-iop; do
local n="${r##*/}.git"
local f=$pkgname-"${r##*/}"
@@ -56,35 +50,35 @@ snapshot() {
}
build() {
- cd "$builddir"
- PKGVER=$pkgver sh build.sh || return 1
+ make -C "$builddir" || return 1
}
package() {
- cd "$builddir"
- mkdir -p "$pkgdir"/usr/bin/
- install -Dm755 mkbootimg fastboot adb \
- "$pkgdir"/usr/bin/ || return 1
+ make DESTDIR="$pkgdir" PREFIX=/usr \
+ -C "$builddir" install || return 1
}
-md5sums="db66109fd5ca02ad4ad6c879441ee96c android-tools-core-6.0.1_r46.tar.gz
-1d5f3bdf8a54c94e27f9f663ff5ec6c9 android-tools-extras-6.0.1_r46.tar.gz
-0ae3837c990c4262f3ada4917acc8153 android-tools-libselinux-6.0.1_r46.tar.gz
-b99b09cfef42ac2faad237d51338abad android-tools-f2fs-tools-6.0.1_r46.tar.gz
-7272c0aea987e1d4450ed316cb19937a fix-build.patch
-b3d1da647a52bf0dd6ca562033648b41 fix-getcwd.patch
-3c77207b30748bcf2cbb6dab257bf6ff generate-build.rb"
-sha256sums="1e0186dc1160f2db44aee4afb68909760dbf421d9e82de04a850547d70a5fd05 android-tools-core-6.0.1_r46.tar.gz
-de52852ee2a172cf193bf43840e2d4418d6dfbdcae68cbff3c77ba0c09f325cb android-tools-extras-6.0.1_r46.tar.gz
-5c60e5bfa33e0977ddb6e5f1e0c4df19d88447640d308aaf9665da13b1d370ee android-tools-libselinux-6.0.1_r46.tar.gz
-0883c9017c8e498456563c2088e7436eb725a7720d01ac565f27fd2c82263ac8 android-tools-f2fs-tools-6.0.1_r46.tar.gz
-bb91e2a8855a5b47d64fbe2a13dcfb5c3bfca5b9e79e06a790cdabe48d55bc2c fix-build.patch
-d9e2ba5337c2dbea2d9747c232f56953562494e44faeee88dd0abddb3c810796 fix-getcwd.patch
-802f565f7204b720ff86f6acb02aa1ba03b9438b84a38911ba76edeb0824dd3d generate-build.rb"
-sha512sums="091c663ff5ba36fed872f30c4d32e4961657ce3bf3c039dd641cc4e003194c5b40aa2dd373f909e58df4529465d5c80784423e8a71229104af75c84c835ead90 android-tools-core-6.0.1_r46.tar.gz
-bb3953bfaed031a46dc707896df303a44ea7c764adc48757344c38b805a820c95aa6a702a5e8247c73872466600706e66bf2d3487e6c988cc009197f893426d5 android-tools-extras-6.0.1_r46.tar.gz
-765491488780e1da7510fa3146b6ae7443e98ee5b64490aea1fe95d05eb3f96f31c389cbcc33178ffac602f12bda0948f8d7e8dd23bb27628061fd0ba00a106c android-tools-libselinux-6.0.1_r46.tar.gz
-b5433ac4b9e3f6b180ebc0b8b5c623b0e1008111e40a179ab4383bd7730ecd09a74d524ee8a5ff8bc1dd0ab8c8cef824c8e8212cf9ad461cff1399de0e96b113 android-tools-f2fs-tools-6.0.1_r46.tar.gz
-38e5ce4bfc0305585b1071b52c5d2e47927adc24318abdc466c9eed53ad6ed4fa83b6c1342db51d3a62b76996d2649632012d73c340eaf8b131ac6023248c59a fix-build.patch
-d6ab3595d1f77f4baea03d828cc03291cb08e7787ebd653faac4776a2d27ff899f0746516f52c8b533dd104f9e9a1fcede59936de3146f7b8e8955101dacd889 fix-getcwd.patch
-421596678ab767d4bf59c54878e82a4faa0e3b5a070803ea37b5ee3c8cd41972d2d8ae46d081ee54a0d5b24874c893f32ad2aae7426090632f8c6099a241030b generate-build.rb"
+md5sums="08f229c6a7ee88c9757f7dd204454fb0 android-tools-core-7.0.0_r24.tar.gz
+1ed5c25518727a3ae614163fa63b813b android-tools-extras-7.0.0_r24.tar.gz
+8d0d5abf79d0e56cc73cffd24f994224 android-tools-libselinux-7.0.0_r24.tar.gz
+d4923c0dc9508fa1d6299d633479e306 android-tools-f2fs-tools-7.0.0_r24.tar.gz
+5927ee8bddba0a8dcd4ffd3d8b56251e android-tools-safe-iop-7.0.0_r24.tar.gz
+b41dd596e7ec64b5d278952dc5415cd9 android-tools-gtest-7.0.0_r24.tar.gz
+883cfac28233868a458aab9cfc5da9a1 android-tools.patch
+4f1a962a06ce980cc1623e0cd3417a45 musl-fixes.patch"
+sha256sums="b6eac2868570c458418c9d9317a00d5ca2552eb33faa693a8014b928c71c1718 android-tools-core-7.0.0_r24.tar.gz
+7085bba77af11b7758a4146bc7b13aa2c3ba6ca0e15ccf9173bc86fc32bf5342 android-tools-extras-7.0.0_r24.tar.gz
+cd6ec4a1ba06e76dbb2e9eeaa06d23d39e48a21186a9bcc7522694ca1b603b3d android-tools-libselinux-7.0.0_r24.tar.gz
+53ae7ea6f7c28847ea249624681fc055b0e95b27f09a55946e22a8352aa91887 android-tools-f2fs-tools-7.0.0_r24.tar.gz
+7e961123b32bd0e6fd2d594508746bcaefb6e56990f3afc2c4891f25fcbd7a4d android-tools-safe-iop-7.0.0_r24.tar.gz
+8d8e482c14b39df2e5f9db9d0dec6696adeaaf8380de4a7afd76ee83ac702b7a android-tools-gtest-7.0.0_r24.tar.gz
+08686f177f6c1bd6901b43816aa83e5f1f3c512f583470b1a520b62d54c3d3e6 android-tools.patch
+e4423745d2ac88e24b42250b97345753c954218ec3fc98a1cb3f8b27016eab1f musl-fixes.patch"
+sha512sums="f2e054fb236518ce101ba3a17e578985a8e4884c127c113a3e702386abbb5077c647565c21575e1d2103c1f0316c7ddcfd8602b7eadf6955d01054842430ff18 android-tools-core-7.0.0_r24.tar.gz
+2dd2b571f17d44b2edb354eee9d913e8a004604fc56cf21bb14b7d081891912443bf7a7a543edad834082f93263b200bc0539200a6cb0a4109f502742529d53f android-tools-extras-7.0.0_r24.tar.gz
+3e985e01b4f1d413c4ffb7dea4fa6edc8350872df037eab1e3d109f6f19dcf94a7f77c9bc17d5f2838ebf6f773fb357cf9fb963caccb02b2613793d0e49f6a17 android-tools-libselinux-7.0.0_r24.tar.gz
+fbe08ddafa47d647884bb64202d4fceeabd88bcdba825dd9eb1257744b29a85317fe3cc34c991d9c8ba7838f9ab19d4b94fe2acaa3c6564f9d8689be0461b1b9 android-tools-f2fs-tools-7.0.0_r24.tar.gz
+baee83d6e0010f3884e9bd56c270294402be9eed2109871b9f2ebc833e35e506605c5d41dfea377e5e59b17b0dbbf4acee2759146d2465b5d2315eb212fa7299 android-tools-safe-iop-7.0.0_r24.tar.gz
+303d1b604bd8f8eff8d4d5d9518a43c2d4a96d5d4ca9c89d97120f987897261faa0fee4f22745d066b4a89cdbaeef15cca4cd08fab74340b94c22a8c4d312f4c android-tools-gtest-7.0.0_r24.tar.gz
+211fb8d6c37522b26306b75a3d1d2ee05f7c914f32b91a55cfea7375f5f5a99dae484ab11f798caea96de91bb9e345fb67efab19b12c779539fb15b2a687569b android-tools.patch
+75e09d7391dba7858cf50d98893c84986b5117e6b920109b0adb4a2e1215b8b85b427fb4e855402f21541cbf01a21430ed2d30296d041ba56c01d0c735334dca musl-fixes.patch"
diff --git a/testing/android-tools/android-tools.patch b/testing/android-tools/android-tools.patch
new file mode 100644
index 0000000000..9052703861
--- /dev/null
+++ b/testing/android-tools/android-tools.patch
@@ -0,0 +1,826 @@
+This patch has been taken from the Void Linux distribution.
+
+https://github.com/voidlinux/void-packages/tree/master/srcpkgs/android-tools/patches/android-tools.patch
+
+diff --git a/Makefile b/Makefile
+new file mode 100644
+index 000000000000..4644fc0b62ad
+--- /dev/null
++++ Makefile
+@@ -0,0 +1,47 @@
++all:
++ $(MAKE) -C core/libcutils all
++ $(MAKE) -C libselinux all
++ $(MAKE) -C core/libziparchive all
++ $(MAKE) -C extras/ext4_utils all
++ $(MAKE) -C core/libsparse all
++ $(MAKE) -C core/libutils all
++ $(MAKE) -C core/liblog all
++ $(MAKE) -C core/base all
++ $(MAKE) -C gtest all
++ $(MAKE) -C extras/f2fs_utils all
++ $(MAKE) -C core/adb all
++ $(MAKE) -C core/fastboot all
++
++install: all
++ $(MAKE) -C core/adb install
++ $(MAKE) -C core/fastboot install
++
++clean:
++ $(MAKE) -C core/libcutils clean
++ $(MAKE) -C libselinux clean
++ $(MAKE) -C core/libziparchive clean
++ $(MAKE) -C extras/ext4_utils clean
++ $(MAKE) -C core/libsparse clean
++ $(MAKE) -C core/libutils clean
++ $(MAKE) -C core/liblog clean
++ $(MAKE) -C core/adb libdiagnose_usb
++ $(MAKE) -C core/base clean
++ $(MAKE) -C gtest clean
++ $(MAKE) -C extras/f2fs_utils clean
++ $(MAKE) -C core/adb clean
++ $(MAKE) -C core/fastboot clean
++
++mrproper:
++ $(MAKE) -C core/libcutils mrproper
++ $(MAKE) -C libselinux mrproper
++ $(MAKE) -C core/libziparchive mrproper
++ $(MAKE) -C extras/ext4_utils mrproper
++ $(MAKE) -C core/libsparse mrproper
++ $(MAKE) -C core/libutils mrproper
++ $(MAKE) -C core/liblog mrproper
++ $(MAKE) -C core/adb libdiagnose_usb
++ $(MAKE) -C core/base mrproper
++ $(MAKE) -C gtest mrproper
++ $(MAKE) -C extras/f2fs_utils mrproper
++ $(MAKE) -C core/adb mrproper
++ $(MAKE) -C core/fastboot mrproper
+diff --git core/adb/Makefile core/adb/Makefile
+new file mode 100644
+index 0000000..8ef539b
+--- /dev/null
++++ core/adb/Makefile
+@@ -0,0 +1,97 @@
++adb_version := $(shell git -C . rev-parse --short=12 HEAD 2>/dev/null)-android
++
++SRCS+= \
++ adb_client.cpp \
++ client/main.cpp \
++ console.cpp \
++ commandline.cpp \
++ file_sync_client.cpp \
++ line_printer.cpp \
++ services.cpp \
++ shell_service_protocol.cpp \
++
++LIBADB_SRCS= \
++ adb.cpp \
++ adb_auth.cpp \
++ adb_io.cpp \
++ adb_listeners.cpp \
++ adb_trace.cpp \
++ adb_utils.cpp \
++ fdevent.cpp \
++ sockets.cpp \
++ transport.cpp \
++ transport_local.cpp \
++ transport_usb.cpp \
++ adb_auth_host.cpp \
++ get_my_path_linux.cpp \
++ sysdeps_unix.cpp \
++ usb_linux.cpp \
++
++LIBDIAGNOSE_USB_SRCS= \
++ diagnose_usb.cpp
++
++
++override CXXFLAGS+= \
++ -I. \
++ -I../include \
++ -I../base/include \
++ -D_Nonnull="" \
++ -D_Nullable="" \
++ -D_GNU_SOURCE \
++ -Wall \
++ -Wextra \
++ -Wno-unused-parameter \
++ -Wno-missing-field-initializers \
++ -Wvla \
++ -DADB_REVISION='"$(adb_version)"' \
++ -std=gnu++14 \
++ -DADB_HOST=1 \
++ -fpermissive \
++ -fvisibility=hidden
++
++
++LIBS= \
++ ./libadb.a \
++ ./libdiagnose_usb.a \
++ ../base/libbase.a \
++ ../libcutils/libcutils.a \
++ ../liblog/liblog.a
++
++override LDFLAGS+= -lssl -lcrypto -lpthread
++
++OBJS= $(SRCS:.cpp=.o)
++LIBADB_OBJS= $(LIBADB_SRCS:.cpp=.o)
++LIBDIAGNOSE_USB_OBJS= $(LIBDIAGNOSE_USB_SRCS:.cpp=.o)
++
++BIN= adb
++
++all: $(BIN)
++
++adb: $(OBJS) libadb libdiagnose_usb
++ $(CXX) -o $@ $(OBJS) $(LIBS) $(LDFLAGS)
++
++
++libadb: libadb.a
++
++libadb.a: $(LIBADB_OBJS)
++ $(AR) rcs $@ $(LIBADB_OBJS)
++
++libdiagnose_usb: libdiagnose_usb.a
++
++libdiagnose_usb.a: $(LIBDIAGNOSE_USB_OBJS)
++ $(AR) rcs $@ $(LIBDIAGNOSE_USB_OBJS)
++
++%.o: %.cpp
++ $(CXX) -c $< $(CXXFLAGS) -o $@
++
++install: adb
++ install -Dm755 adb $(DESTDIR)$(PREFIX)/bin/adb
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS) $(LIBADB_OBJS) $(LIBDIAGNOSE_USB_OBJS)
++
++mrproper: clean
++ rm -rf $(BIN) *.a
++
+diff --git core/base/Makefile core/base/Makefile
+new file mode 100644
+index 0000000..d3e7436
+--- /dev/null
++++ core/base/Makefile
+@@ -0,0 +1,37 @@
++SRCS+= \
++ file.cpp \
++ logging.cpp \
++ parsenetaddress.cpp \
++ stringprintf.cpp \
++ strings.cpp \
++ test_utils.cpp \
++ errors_unix.cpp
++
++override CXXFLAGS+= \
++ -I./include \
++ -I../include \
++ -D__GLIBC__ \
++ -Wall \
++ -Wextra \
++ -Werror \
++ -std=gnu++14
++
++OBJS= $(SRCS:.cpp=.o)
++
++BIN= libbase.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.cpp
++ $(CXX) -c $< $(CXXFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git core/base/errors_unix.cpp core/base/errors_unix.cpp
+index 296995e..3b983d3 100644
+--- core/base/errors_unix.cpp
++++ core/base/errors_unix.cpp
+@@ -17,6 +17,7 @@
+ #include "android-base/errors.h"
+
+ #include <errno.h>
++#include <cstring>
+
+ namespace android {
+ namespace base {
+diff --git core/base/logging.cpp core/base/logging.cpp
+index 1741871..0aaae2e 100644
+--- core/base/logging.cpp
++++ core/base/logging.cpp
+@@ -33,6 +33,7 @@
+ #include <limits>
+ #include <sstream>
+ #include <string>
++#include <cstring>
+ #include <utility>
+ #include <vector>
+
+diff --git core/fastboot/Makefile core/fastboot/Makefile
+new file mode 100644
+index 0000000..6d81f7c
+--- /dev/null
++++ core/fastboot/Makefile
+@@ -0,0 +1,70 @@
++fastboot_version := $(shell git -C . rev-parse --short=12 HEAD 2>/dev/null)-android
++
++SRCS+= \
++ bootimg_utils.cpp \
++ engine.cpp \
++ fastboot.cpp \
++ fs.cpp\
++ protocol.cpp \
++ socket.cpp \
++ tcp.cpp \
++ udp.cpp \
++ util.cpp \
++ usb_linux.cpp \
++ util_linux.cpp
++
++
++override CXXFLAGS+= \
++ -I../mkbootimg/ \
++ -I../base/include \
++ -I../libsparse/include \
++ -I../include \
++ -I../adb \
++ -I../../gtest/include \
++ -I../../extras/ext4_utils \
++ -I../../extras/f2fs_utils \
++ -Wall \
++ -Wextra \
++ -Werror \
++ -Wunreachable-code \
++ -DFASTBOOT_REVISION='"$(fastboot_version)"' \
++ -std=gnu++14
++
++LIBS= \
++ ../libziparchive/libziparchive.a \
++ ../../extras/ext4_utils/libext4_utils.a \
++ ../libsparse/libsparse.a \
++ ../libutils/libutils.a \
++ ../liblog/liblog.a \
++ ../adb/libdiagnose_usb.a \
++ ../base/libbase.a \
++ ../libcutils/libcutils.a \
++ ../../gtest/libgtest.a \
++ ../../extras/f2fs_utils/libf2fs.a \
++ ../libcutils/libcutils.a \
++ ../../libselinux/libselinux.a
++
++override LDFLAGS+= -lz -lpcre -lpthread
++
++OBJS= $(SRCS:.cpp=.o)
++
++BIN= fastboot
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(CXX) -o $@ $(OBJS) $(LIBS) $(LDFLAGS)
++
++%.o: %.cpp
++ $(CXX) -c $< $(CXXFLAGS) -o $@
++
++install: fastboot
++ install -Dm755 fastboot $(DESTDIR)$(PREFIX)/bin/fastboot
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git core/include/cutils/atomic.h core/include/cutils/atomic.h
+index ded972a..2ff6fce 100644
+--- core/include/cutils/atomic.h
++++ core/include/cutils/atomic.h
+@@ -19,7 +19,12 @@
+
+ #include <stdint.h>
+ #include <sys/types.h>
++#ifdef __cplusplus
++#include <atomic>
++using namespace std;
++#else
+ #include <stdatomic.h>
++#endif
+
+ #ifndef ANDROID_ATOMIC_INLINE
+ #define ANDROID_ATOMIC_INLINE static inline
+@@ -114,6 +119,7 @@ int32_t android_atomic_or(int32_t value, volatile int32_t* addr)
+ return atomic_fetch_or_explicit(a, value, memory_order_release);
+ }
+
++#ifndef __cplusplus
+ /*
+ * Perform an atomic load with "acquire" or "release" ordering.
+ *
+@@ -208,6 +214,7 @@ int android_atomic_release_cas(int32_t oldvalue, int32_t newvalue,
+ memory_order_release,
+ memory_order_relaxed));
+ }
++#endif
+
+ /*
+ * Fence primitives.
+diff --git core/include/log/log.h core/include/log/log.h
+index e606a84..963347a 100644
+--- core/include/log/log.h
++++ core/include/log/log.h
+@@ -38,6 +38,7 @@
+ #include <log/uio.h>
+
+ #ifdef __cplusplus
++#include <cstring>
+ extern "C" {
+ #endif
+
+diff --git core/libcutils/Makefile core/libcutils/Makefile
+new file mode 100644
+index 0000000..ec9c573
+--- /dev/null
++++ core/libcutils/Makefile
+@@ -0,0 +1,59 @@
++CSRCS+= \
++ config_utils.c \
++ fs_config.c \
++ canned_fs_config.c \
++ hashmap.c \
++ iosched_policy.c \
++ load_file.c \
++ native_handle.c \
++ open_memstream.c \
++ process_name.c \
++ record_stream.c \
++ sched_policy.c \
++ strlcpy.c \
++ threads.c \
++ fs.c \
++ multiuser.c \
++ socket_inaddr_any_server_unix.c \
++ socket_local_client_unix.c \
++ socket_local_server_unix.c \
++ socket_loopback_client_unix.c \
++ socket_loopback_server_unix.c \
++ socket_network_client_unix.c \
++ str_parms.c \
++ ashmem-host.c \
++ trace-host.c \
++ dlmalloc_stubs.c
++
++CXXSRCS+= \
++ sockets_unix.cpp \
++ sockets.cpp \
++ strdup16to8.c \
++ strdup8to16.c
++
++override CFLAGS+= -I../include
++
++override CXXFLAGS+= -I../include
++
++COBJS= $(CSRCS:.c=.o)
++CXXOBJS= $(CXXSRCS:.cpp=.o)
++BIN= libcutils.a
++
++all: $(BIN)
++
++$(BIN): $(COBJS) $(CXXOBJS)
++ $(AR) rcs $@ $(COBJS) $(CXXOBJS)
++
++%.o: %.c
++ $(CC) -c $< $(CFLAGS) -o $@
++
++%.o: %.cpp
++ $(CXX) -c $< $(CXXFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(COBJS) $(CXXOBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git core/libcutils/fs.c core/libcutils/fs.c
+index 3f14de7..175df6a 100644
+--- core/libcutils/fs.c
++++ core/libcutils/fs.c
+@@ -79,7 +79,7 @@ static int fs_prepare_path_impl(const char* path, mode_t mode, uid_t uid, gid_t
+ create:
+ create_result = prepare_as_dir
+ ? TEMP_FAILURE_RETRY(mkdir(path, mode))
+- : TEMP_FAILURE_RETRY(open(path, O_CREAT | O_CLOEXEC | O_NOFOLLOW | O_RDONLY));
++ : TEMP_FAILURE_RETRY(open(path, O_CREAT | O_CLOEXEC | O_NOFOLLOW | O_RDONLY, mode));
+ if (create_result == -1) {
+ if (errno != EEXIST) {
+ ALOGE("Failed to %s(%s): %s",
+diff --git core/liblog/Makefile core/liblog/Makefile
+new file mode 100644
+index 0000000..75a0af3
+--- /dev/null
++++ core/liblog/Makefile
+@@ -0,0 +1,39 @@
++SRCS+= \
++ log_event_list.c \
++ log_event_write.c \
++ logger_write.c \
++ config_write.c \
++ logger_name.c \
++ logger_lock.c \
++ fake_log_device.c \
++ fake_writer.c \
++ event_tag_map.c
++
++
++override CFLAGS+= \
++ -I../include \
++ -DLIBLOG_LOG_TAG=1005 \
++ -DSNET_EVENT_LOG_TAG=1397638484 \
++ -DFAKE_LOG_DEVICE=1 \
++ -Werror \
++ -fvisibility=hidden
++
++OBJS= $(SRCS:.c=.o)
++
++BIN= liblog.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.c
++ $(CC) -c $< $(CFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git core/libpackagelistparser/Makefile core/libpackagelistparser/Makefile
+new file mode 100644
+index 0000000..38a0158
+--- /dev/null
++++ core/libpackagelistparser/Makefile
+@@ -0,0 +1,20 @@
++SRCS+= \
++ packagelistparser.c
++
++override CFLAGS+= -I../include
++override CFLAGS+= -I./include
++
++OBJS= $(SRCS:.c=.o)
++
++BIN= libpackagelistparser.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.c
++ $(CC) -c $< $(CFLAGS) -o $@
++
++clean:
++ rm -rf *.o
+diff --git core/libsparse/Makefile core/libsparse/Makefile
+new file mode 100644
+index 0000000..418c028
+--- /dev/null
++++ core/libsparse/Makefile
+@@ -0,0 +1,31 @@
++SRCS+= \
++ backed_block.c \
++ output_file.c \
++ sparse.c \
++ sparse_crc32.c \
++ sparse_err.c \
++ sparse_read.c
++
++override CFLAGS+= \
++ -I./include \
++ -Werror
++
++OBJS= $(SRCS:.c=.o)
++
++BIN= libsparse.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.c
++ $(CC) -c $< $(CFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git core/libutils/Makefile core/libutils/Makefile
+new file mode 100644
+index 0000000..82a22b9
+--- /dev/null
++++ core/libutils/Makefile
+@@ -0,0 +1,50 @@
++SRCS+= \
++ CallStack.cpp \
++ FileMap.cpp \
++ JenkinsHash.cpp \
++ LinearTransform.cpp \
++ Log.cpp \
++ NativeHandle.cpp \
++ Printer.cpp \
++ PropertyMap.cpp \
++ RefBase.cpp \
++ SharedBuffer.cpp \
++ Static.cpp \
++ StopWatch.cpp \
++ String8.cpp \
++ String16.cpp \
++ SystemClock.cpp \
++ Threads.cpp \
++ Timers.cpp \
++ Tokenizer.cpp \
++ Unicode.cpp \
++ VectorImpl.cpp \
++ misc.cpp \
++ Looper.cpp \
++ ProcessCallStack.cpp
++
++override CXXFLAGS+= \
++ -I../include \
++ -I../../safe-iop/include \
++ -DLIBUTILS_NATIVE=1 \
++ -std=gnu++14
++
++OBJS= $(SRCS:.cpp=.o)
++
++BIN= libutils.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.cpp
++ $(CXX) -c $< $(CXXFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git core/libziparchive/Makefile core/libziparchive/Makefile
+new file mode 100644
+index 0000000..4eef274
+--- /dev/null
++++ core/libziparchive/Makefile
+@@ -0,0 +1,34 @@
++SRCS+= \
++ zip_archive.cc \
++ zip_archive_stream_entry.cc \
++ zip_writer.cc \
++
++override CXXFLAGS+= \
++ -I./include \
++ -I../include \
++ -I../base/include \
++ -DZLIB_CONST \
++ -Werror \
++ -fno-strict-aliasing \
++ -std=gnu++14 \
++ -Wall
++
++OBJS= $(SRCS:.cc=.o)
++
++BIN= libziparchive.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.c
++ $(CXX) -c $< $(CXXFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git core/libziparchive/zip_writer.cc core/libziparchive/zip_writer.cc
+index 1ebed30..5c622d0 100644
+--- core/libziparchive/zip_writer.cc
++++ core/libziparchive/zip_writer.cc
+@@ -24,6 +24,7 @@
+
+ #include <cassert>
+ #include <cstdio>
++#include <cstring>
+ #include <memory>
+ #include <vector>
+ #include <zlib.h>
+diff --git extras/ext4_utils/Makefile extras/ext4_utils/Makefile
+new file mode 100644
+index 0000000..000aaca
+--- /dev/null
++++ extras/ext4_utils/Makefile
+@@ -0,0 +1,38 @@
++SRCS+= \
++ make_ext4fs.c \
++ ext4fixup.c \
++ ext4_utils.c \
++ allocate.c \
++ contents.c \
++ extent.c \
++ indirect.c \
++ sha1.c \
++ wipe.c \
++ crc16.c \
++ ext4_sb.c
++
++override CFLAGS+= \
++ -I../../core/libsparse/include \
++ -I../../core/include \
++ -I../../libselinux/include \
++ -fno-strict-aliasing
++
++OBJS= $(SRCS:.c=.o)
++
++BIN= libext4_utils.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.c
++ $(CC) -c $< $(CFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git extras/f2fs_utils/Makefile extras/f2fs_utils/Makefile
+new file mode 100644
+index 0000000..d81ac9a
+--- /dev/null
++++ extras/f2fs_utils/Makefile
+@@ -0,0 +1,34 @@
++SRCS+= \
++ f2fs_utils.c \
++ f2fs_ioutils.c \
++ f2fs_dlutils.c
++
++
++override CFLAGS+= \
++ -I../../f2fs-tools/include \
++ -I../../f2fs-tools/mkfs \
++ -I../../core/libsparse/include \
++ -I../../libselinux/include \
++ -Wno-unused-parameter
++
++OBJS= $(SRCS:.c=.o)
++
++BIN= libf2fs.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.c
++ $(CC) -c $< $(CFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
++
++
+diff --git extras/f2fs_utils/f2fs_utils.c extras/f2fs_utils/f2fs_utils.c
+index 6254c08..05ec599 100644
+--- extras/f2fs_utils/f2fs_utils.c
++++ extras/f2fs_utils/f2fs_utils.c
+@@ -53,7 +53,7 @@ static void reset_f2fs_info() {
+ config.fd = -1;
+ if (f2fs_sparse_file) {
+ sparse_file_destroy(f2fs_sparse_file);
+- f2fs_sparse_file = NULL;
++ f2fs_sparse_file = 0;
+ }
+ }
+
+@@ -73,6 +73,6 @@ int make_f2fs_sparse_fd(int fd, long long len,
+ sparse_file_write(f2fs_sparse_file, fd, /*gzip*/0, /*sparse*/1, /*crc*/0);
+ sparse_file_destroy(f2fs_sparse_file);
+ flush_sparse_buffs();
+- f2fs_sparse_file = NULL;
++ f2fs_sparse_file = 0;
+ return 0;
+ }
+diff --git libselinux/Makefile libselinux/Makefile
+new file mode 100644
+index 0000000..52ef5cc
+--- /dev/null
++++ libselinux/Makefile
+@@ -0,0 +1,31 @@
++SRCS+= \
++ src/callbacks.c \
++ src/check_context.c \
++ src/freecon.c \
++ src/init.c \
++ src/label.c \
++ src/label_file.c \
++ src/label_android_property.c \
++ src/label_support.c
++
++override CFLAGS+= -I./include
++
++OBJS= $(SRCS:.c=.o)
++
++BIN= libselinux.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.c
++ $(CC) -c $< $(CFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
+diff --git gtest/Makefile gtest/Makefile
+new file mode 100644
+index 0000000..49a50aa
+--- /dev/null
++++ gtest/Makefile
+@@ -0,0 +1,36 @@
++SRCS+= \
++ src/gtest-all.cc \
++ src/gtest-filepath.cc \
++ src/gtest-printers.cc \
++ src/gtest-typed-test.cc \
++ src/gtest_main.cc \
++ src/gtest-death-test.cc \
++ src/gtest-port.cc \
++ src/gtest-test-part.cc \
++ src/gtest.cc
++
++
++override CXXFLAGS+= \
++ -I./include \
++ -I.
++
++OBJS= $(SRCS:.cc=.o)
++
++BIN= libgtest.a
++
++all: $(BIN)
++
++$(BIN): $(OBJS)
++ $(AR) rcs $@ $(OBJS)
++
++%.o: %.cc
++ $(CXX) -c $< $(CXXFLAGS) -o $@
++
++.PHONY: clean mrproper
++
++clean:
++ rm -rf $(OBJS)
++
++mrproper: clean
++ rm -rf $(BIN)
++
diff --git a/testing/android-tools/fix-build.patch b/testing/android-tools/fix-build.patch
deleted file mode 100644
index d86ad54e5e..0000000000
--- a/testing/android-tools/fix-build.patch
+++ /dev/null
@@ -1,69 +0,0 @@
---- a/core/base/file.cpp
-+++ b/core/base/file.cpp
-@@ -20,6 +20,7 @@
- #include <fcntl.h>
- #include <sys/stat.h>
- #include <sys/types.h>
-+#include <string.h>
-
- #include <string>
-
---- a/core/liblog/log_read.c
-+++ b/core/liblog/log_read.c
-@@ -26,6 +26,7 @@
- #include <string.h>
- #include <sys/cdefs.h>
- #include <unistd.h>
-+#include <sys/user.h>
-
- #include <cutils/list.h>
- #include <cutils/sockets.h>
-
---- a/libselinux/src/label_internal.h
-+++ b/libselinux/src/label_internal.h
-@@ -10,6 +10,7 @@
-
- #include <stdlib.h>
- #include <stdarg.h>
-+#include <stdbool.h>
- #include <selinux/selinux.h>
- #include <selinux/label.h>
- #include "dso.h"
-diff -upr core.orig/include/utils/Compat.h core/include/utils/Compat.h
---- a/core/include/utils/Compat.h 2016-07-10 15:30:25.935363345 +0200
-+++ b/core/include/utils/Compat.h 2016-07-10 15:31:01.785149166 +0200
-@@ -35,10 +35,11 @@ static inline ssize_t pread64(int fd, vo
-
- #endif /* __APPLE__ */
-
-+#define DEFFILEMODE 0666
-+
- #if defined(_WIN32)
- #define O_CLOEXEC O_NOINHERIT
- #define O_NOFOLLOW 0
--#define DEFFILEMODE 0666
- #endif /* _WIN32 */
-
- #if defined(_WIN32)
-diff -upr core/adb/adb_auth_host.cpp core.orig/adb/adb_auth_host.cpp
---- a/core/adb/adb_auth_host.cpp 2016-04-22 04:11:37.000000000 +0200
-+++ b/core/adb/adb_auth_host.cpp 2016-07-10 20:28:54.553727489 +0200
-@@ -46,6 +46,7 @@
- #include <base/strings.h>
- #include <cutils/list.h>
-
-+#include <openssl/bn.h>
- #include <openssl/evp.h>
- #include <openssl/objects.h>
- #include <openssl/pem.h>
-diff -upr core.orig/include/ziparchive/zip_archive.h core/include/ziparchive/zip_archive.h
---- a/core/include/ziparchive/zip_archive.h 2016-07-10 20:41:30.509065561 +0200
-+++ b/core/include/ziparchive/zip_archive.h 2016-07-10 20:41:47.117424874 +0200
-@@ -23,6 +23,7 @@
- #include <stdint.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/cdefs.h>
- #include <utils/Compat.h>
-
- __BEGIN_DECLS
diff --git a/testing/android-tools/fix-getcwd.patch b/testing/android-tools/fix-getcwd.patch
deleted file mode 100644
index d96ab42523..0000000000
--- a/testing/android-tools/fix-getcwd.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -upr core.orig/adb/adb_utils.cpp core/adb/adb_utils.cpp
---- a/core.orig/adb/adb_utils.cpp 2016-07-10 15:17:54.889682995 +0200
-+++ b/core/adb/adb_utils.cpp 2016-07-10 15:18:04.338747965 +0200
-@@ -30,7 +30,7 @@
- #include "adb_trace.h"
- #include "sysdeps.h"
-
--bool getcwd(std::string* s) {
-+bool agetcwd(std::string* s) {
- char* cwd = getcwd(nullptr, 0);
- if (cwd != nullptr) *s = cwd;
- free(cwd);
-diff -upr core.orig/adb/commandline.cpp core/adb/commandline.cpp
---- a/core.orig/adb/commandline.cpp 2016-07-10 15:17:54.889682995 +0200
-+++ b/core/adb/commandline.cpp 2016-07-10 15:18:11.671355701 +0200
-@@ -863,7 +863,7 @@ static std::string find_product_out_path
- // make it absolute.
- if (adb_dirstart(hint) != nullptr) {
- std::string cwd;
-- if (!getcwd(&cwd)) {
-+ if (!agetcwd(&cwd)) {
- fprintf(stderr, "adb: getcwd failed: %s\n", strerror(errno));
- return "";
- }
-diff -upr core.orig/adb/adb_utils.h core/adb/adb_utils.h
---- a/core.orig/adb/adb_utils.h 2016-07-10 15:21:09.327109127 +0200
-+++ b/core/adb/adb_utils.h 2016-07-10 15:21:18.272890564 +0200
-@@ -19,7 +19,7 @@
-
- #include <string>
-
--bool getcwd(std::string* cwd);
-+bool agetcwd(std::string* cwd);
- bool directory_exists(const std::string& path);
-
- std::string escape_arg(const std::string& s);
diff --git a/testing/android-tools/generate-build.rb b/testing/android-tools/generate-build.rb
deleted file mode 100644
index 448b23da03..0000000000
--- a/testing/android-tools/generate-build.rb
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/ruby
-# Copied from the archlinux android-tools PKGBUILD.
-
-# Android build system is complicated and does not allow to build
-# separate parts easily.
-# This script tries to mimic Android build rules.
-
-def expand(dir, files)
- files.map{|f| File.join(dir,f)}
-end
-
-# Compiles sources to *.o files.
-# Returns array of output *.o filenames
-def compile(sources, cflags)
- outputs = []
- for s in sources
- ext = File.extname(s)
-
- case ext
- when '.c'
- cc = 'gcc'
- lang_flags = '-std=gnu11 $CFLAGS $CPPFLAGS'
- when '.cpp', '.cc'
- cc = 'g++'
- lang_flags = '-std=gnu++11 $CXXFLAGS $CPPFLAGS'
- else
- raise "Unknown extension #{ext}"
- end
-
- output = s + '.o'
- outputs << output
- puts "#{cc} -o #{output} #{lang_flags} #{cflags} -c #{s}\n"
- end
-
- return outputs
-end
-
-# Links object files
-def link(output, objects, ldflags)
- puts "g++ -o #{output} #{objects.join(' ')} #{ldflags} $LDFLAGS"
-end
-
-minicryptfiles = %w(
- dsa_sig.c
- p256_ec.c
- rsa.c
- sha.c
- p256.c
- p256_ecdsa.c
- sha256.c
-)
-libminicrypt = compile(expand('core/libmincrypt', minicryptfiles), '-Icore/include')
-libmkbootimg = compile(['core/mkbootimg/mkbootimg.c'], '-Icore/include')
-link('mkbootimg', libminicrypt + libmkbootimg, nil)
-
-
-adbdfiles = %w(
- adb.cpp
- adb_auth.cpp
- adb_io.cpp
- adb_listeners.cpp
- adb_utils.cpp
- sockets.cpp
- transport.cpp
- transport_local.cpp
- transport_usb.cpp
-
- fdevent.cpp
- get_my_path_linux.cpp
- usb_linux.cpp
-
- adb_auth_host.cpp
-)
-libadbd = compile(expand('core/adb', adbdfiles), '-DADB_HOST=1 -fpermissive -Icore/include -Icore/base/include')
-
-adbfiles = %w(
- adb_main.cpp
- console.cpp
- commandline.cpp
- adb_client.cpp
- services.cpp
- file_sync_client.cpp
-)
-libadb = compile(expand('core/adb', adbfiles), '-DADB_REVISION=\"$PKGVER\" -D_GNU_SOURCE -DADB_HOST=1 -DWORKAROUND_BUG6558362 -fpermissive -Icore/include -Icore/base/include')
-
-basefiles = %w(
- file.cpp
- stringprintf.cpp
- strings.cpp
-)
-libbase = compile(expand('core/base', basefiles), '-DADB_HOST=1 -Icore/base/include -Icore/include')
-
-logfiles = %w(
- logd_write.c
- log_event_write.c
- fake_log_device.c
-)
-liblog = compile(expand('core/liblog', logfiles), '-DLIBLOG_LOG_TAG=1005 -DFAKE_LOG_DEVICE=1 -D_GNU_SOURCE -Icore/log/include -Icore/include')
-
-cutilsfiles = %w(
- load_file.c
- socket_inaddr_any_server.c
- socket_local_client.c
- socket_local_server.c
- socket_loopback_client.c
- socket_loopback_server.c
- socket_network_client.c
-)
-libcutils = compile(expand('core/libcutils', cutilsfiles), '-D_GNU_SOURCE -Icore/include')
-
-link('adb', libbase + liblog + libcutils + libadbd + libadb, '-lrt -ldl -lpthread -lssl -lcrypto')
-
-
-fastbootfiles = %w(
- protocol.c
- engine.c
- bootimg_utils.cpp
- fastboot.cpp
- util.c
- fs.c
- usb_linux.c
- util_linux.c
-)
-libfastboot = compile(expand('core/fastboot', fastbootfiles), '-DFASTBOOT_REVISION=\"$PKGVER\" -D_GNU_SOURCE -Icore/include -Icore/libsparse/include -Icore/mkbootimg -Iextras/ext4_utils -Iextras/f2fs_utils')
-
-sparsefiles = %w(
- backed_block.c
- output_file.c
- sparse.c
- sparse_crc32.c
- sparse_err.c
- sparse_read.c
-)
-libsparse = compile(expand('core/libsparse', sparsefiles), '-Icore/libsparse/include')
-
-zipfiles = %w(
- zip_archive.cc
-)
-libzip = compile(expand('core/libziparchive', zipfiles), '-Icore/base/include -Icore/include')
-
-utilfiles = %w(
- FileMap.cpp
-)
-libutil = compile(expand('core/libutils', utilfiles), '-Icore/include')
-
-ext4files = %w(
- make_ext4fs.c
- ext4fixup.c
- ext4_utils.c
- allocate.c
- contents.c
- extent.c
- indirect.c
- sha1.c
- wipe.c
- crc16.c
- ext4_sb.c
-)
-libext4 = compile(expand('extras/ext4_utils', ext4files), '-Icore/libsparse/include -Icore/include -Ilibselinux/include')
-
-selinuxfiles = %w(
- src/callbacks.c
- src/check_context.c
- src/freecon.c
- src/init.c
- src/label.c
- src/label_file.c
- src/label_android_property.c
-)
-libselinux = compile(expand('libselinux', selinuxfiles), '-DAUDITD_LOG_TAG=1003 -D_GNU_SOURCE -DHOST -Ilibselinux/include')
-
-link('fastboot', libsparse + libzip + liblog + libutil + libbase + libext4 + libselinux + libfastboot, '-lz -lpcre')
diff --git a/testing/android-tools/musl-fixes.patch b/testing/android-tools/musl-fixes.patch
new file mode 100644
index 0000000000..4c093ce918
--- /dev/null
+++ b/testing/android-tools/musl-fixes.patch
@@ -0,0 +1,164 @@
+This patch has been taken from the Void Linux distribution.
+
+https://github.com/voidlinux/void-packages/tree/master/srcpkgs/android-tools/patches/android-tools-musl.patch
+
+diff --git core/include/ziparchive/zip_archive.h core/include/ziparchive/zip_archive.h
+index 7dc60ae..8886a35 100644
+--- core/include/ziparchive/zip_archive.h
++++ core/include/ziparchive/zip_archive.h
+@@ -22,11 +22,12 @@
+
+ #include <stdint.h>
+ #include <string.h>
+-#include <sys/cdefs.h>
+ #include <sys/types.h>
+ #include <utils/Compat.h>
+
+-__BEGIN_DECLS
++#ifdef __cplusplus
++extern "C" {
++#endif
+
+ /* Zip compression methods we support */
+ enum {
+@@ -215,6 +216,8 @@ int GetFileDescriptor(const ZipArchiveHandle handle);
+
+ const char* ErrorCodeString(int32_t error_code);
+
+-__END_DECLS
++#ifdef __cplusplus
++}
++#endif
+
+ #endif // LIBZIPARCHIVE_ZIPARCHIVE_H_
+diff --git core/liblog/log_portability.h core/liblog/log_portability.h
+index 3ad2060..2b859c4 100644
+--- core/liblog/log_portability.h
++++ core/liblog/log_portability.h
+@@ -17,7 +17,6 @@
+ #ifndef _LIBLOG_PORTABILITY_H__
+ #define _LIBLOG_PORTABILITY_H__
+
+-#include <sys/cdefs.h>
+ #include <unistd.h>
+
+ /* Helpful private sys/cdefs.h like definitions */
+
+diff --git core/include/private/android_filesystem_config.h core/include/private/android_filesystem_config.h
+index c220a0c..d38f971 100644
+--- core/include/private/android_filesystem_config.h
++++ core/include/private/android_filesystem_config.h
+@@ -22,7 +22,6 @@
+ #ifndef _ANDROID_FILESYSTEM_CONFIG_H_
+ #define _ANDROID_FILESYSTEM_CONFIG_H_
+
+-#include <sys/cdefs.h>
+ #include <sys/types.h>
+ #include <stdint.h>
+
+@@ -230,7 +229,10 @@ struct fs_path_config {
+
+ /* Rules for directories and files has moved to system/code/libcutils/fs_config.c */
+
+-__BEGIN_DECLS
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+
+ /*
+ * Used in:
+@@ -247,7 +249,9 @@ void fs_config(const char *path, int dir, const char *target_out_path,
+
+ ssize_t fs_config_generate(char *buffer, size_t length, const struct fs_path_config *pc);
+
+-__END_DECLS
++#ifdef __cplusplus
++}
++#endif
+
+ #endif
+ #endif
+diff --git core/base/file.cpp core/base/file.cpp
+index da1adba..7ba6d23 100644
+--- core/base/file.cpp
++++ core/base/file.cpp
+@@ -111,7 +111,7 @@ bool WriteStringToFile(const std::string& content, const std::string& path,
+
+ bool WriteStringToFile(const std::string& content, const std::string& path) {
+ int flags = O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC | O_NOFOLLOW | O_BINARY;
+- int fd = TEMP_FAILURE_RETRY(open(path.c_str(), flags, DEFFILEMODE));
++ int fd = TEMP_FAILURE_RETRY(open(path.c_str(), flags, (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)));
+ if (fd == -1) {
+ return false;
+ }
+diff --git core/adb/sysdeps.h core/adb/sysdeps.h
+index 75dcc86..2dba172 100644
+--- core/adb/sysdeps.h
++++ core/adb/sysdeps.h
+@@ -757,18 +757,7 @@ static __inline__ int adb_thread_setname(const std::string& name) {
+ #ifdef __APPLE__
+ return pthread_setname_np(name.c_str());
+ #else
+- const char *s = name.c_str();
+-
+- // pthread_setname_np fails rather than truncating long strings.
+- const int max_task_comm_len = 16; // including the null terminator
+- if (name.length() > (max_task_comm_len - 1)) {
+- char buf[max_task_comm_len];
+- strncpy(buf, name.c_str(), sizeof(buf) - 1);
+- buf[sizeof(buf) - 1] = '\0';
+- s = buf;
+- }
+-
+- return pthread_setname_np(pthread_self(), s) ;
++ return 0;
+ #endif
+ }
+
+diff --git core/adb/diagnose_usb.cpp core/adb/diagnose_usb.cpp
+index 0f067b0..1138f8d 100644
+--- core/adb/diagnose_usb.cpp
++++ core/adb/diagnose_usb.cpp
+@@ -32,28 +32,7 @@ static const char kPermissionsHelpUrl[] = "http://developer.android.com/tools/de
+ // Returns a message describing any potential problems we find with udev, or nullptr if we can't
+ // find plugdev information (i.e. udev is not installed).
+ static const char* GetUdevProblem() {
+-#if defined(__linux__)
+- errno = 0;
+- group* plugdev_group = getgrnam("plugdev");
+-
+- if (plugdev_group == nullptr) {
+- if (errno != 0) {
+- perror("failed to read plugdev group info");
+- }
+- // We can't give any generally useful advice here, just let the caller print the help URL.
+- return nullptr;
+- }
+-
+- // getgroups(2) indicates that the group_member() may not check the egid so we check it
+- // additionally just to be sure.
+- if (group_member(plugdev_group->gr_gid) || getegid() == plugdev_group->gr_gid) {
+- // The user is in plugdev so the problem is likely with the udev rules.
+- return "verify udev rules";
+- }
+- return "udev requires plugdev group membership";
+-#else
+ return nullptr;
+-#endif
+ }
+
+ // Short help text must be a single line, and will look something like:
+diff --git core/fastboot/socket.cpp core/fastboot/socket.cpp
+index 14ecd93..aff905c 100644
+--- core/fastboot/socket.cpp
++++ core/fastboot/socket.cpp
+@@ -31,6 +31,8 @@
+ #include <android-base/errors.h>
+ #include <android-base/stringprintf.h>
+
++#include <sys/select.h>
++
+ Socket::Socket(cutils_socket_t sock) : sock_(sock) {}
+
+ Socket::~Socket() {