diff options
author | Sören Tempel <soeren+git@soeren-tempel.net> | 2018-02-25 10:43:22 +0100 |
---|---|---|
committer | Sören Tempel <soeren+git@soeren-tempel.net> | 2018-02-27 12:29:49 +0100 |
commit | 517f35f1db49d9d9beb1eb4c3ba74092744eb3b7 (patch) | |
tree | e3eaa5e6a59921dc0ddc71e25264d5a4d8925158 /testing/android-tools | |
parent | 6146bc2b8f1b7cc95404b57983cf99b8cc34a729 (diff) | |
download | aports-517f35f1db49d9d9beb1eb4c3ba74092744eb3b7.tar.bz2 aports-517f35f1db49d9d9beb1eb4c3ba74092744eb3b7.tar.xz |
testing/android-tools: upgrade to 8.1.0_p7
This upgrade includes a ruby script for generating ninja build file
instead of manually creating a Makefile. The ruby script is taken from
the Arch Linux PKGBUILD.
Patches have also been taken from Arch Linux but needed some
modifications.
Diffstat (limited to 'testing/android-tools')
-rw-r--r-- | testing/android-tools/APKBUILD | 97 | ||||
-rw-r--r-- | testing/android-tools/android-tools.patch | 826 | ||||
-rw-r--r-- | testing/android-tools/generate_build.rb | 415 | ||||
-rw-r--r-- | testing/android-tools/musl-fixes.patch | 327 |
4 files changed, 651 insertions, 1014 deletions
diff --git a/testing/android-tools/APKBUILD b/testing/android-tools/APKBUILD index 26dcf390bb..5eed435169 100644 --- a/testing/android-tools/APKBUILD +++ b/testing/android-tools/APKBUILD @@ -1,27 +1,29 @@ # Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> # Maintainer: Sören Tempel <soeren+alpine@soeren-tempel.net> pkgname=android-tools -pkgver=7.0.0_p24 +pkgver=8.1.0_p7 _realver=${pkgver/_p/_r} -pkgrel=2 +# See https://android.googlesource.com/platform/external/boringssl/+/$_realver/BORINGSSL_REVISION +_boringssl=14308731e5446a73ac2258688a9688b524483cb6 +pkgrel=0 pkgdesc="Android platform tools" url="http://tools.android.com/" arch="all" -license="Apache BSD" +license="Apache-2.0 MIT" depends="" depends_dev="" -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 - - android-tools.patch +makedepends="zlib-dev pcre2-dev linux-headers bsd-compat-headers go perl + ruby gtest-dev cmake ninja clang clang-dev libressl-dev libusb-dev" +source="https://dev.alpinelinux.org/archive/$pkgname/$pkgname-core-$_realver.tar.gz + https://dev.alpinelinux.org/archive/$pkgname/$pkgname-extras-$_realver.tar.gz + https://dev.alpinelinux.org/archive/$pkgname/$pkgname-selinux-$_realver.tar.gz + https://dev.alpinelinux.org/archive/$pkgname/$pkgname-f2fs-tools-$_realver.tar.gz + https://dev.alpinelinux.org/archive/$pkgname/$pkgname-e2fsprogs-$_realver.tar.gz + + $pkgname-boringssl-$_realver.tar.gz::https://github.com/google/boringssl/archive/$_boringssl.tar.gz + musl-fixes.patch + generate_build.rb " _giturl="https://android.googlesource.com/platform" @@ -34,7 +36,7 @@ snapshot() { mkdir -p "$srcdir" && cd "$srcdir" local r= - for r in system/core system/extras external/libselinux external/f2fs-tools external/gtest external/safe-iop; do + for r in system/core system/extras external/selinux external/f2fs-tools external/e2fsprogs; do local n="${r##*/}.git" local f=$pkgname-"${r##*/}" @@ -49,36 +51,47 @@ snapshot() { scp "$srcdir"/$pkgname-*-$_realver.tar.gz dev.alpinelinux.org:/archive/$pkgname/ } +prepare() { + default_prepare + + cd "$builddir" + ln -s boringssl-$_boringssl boringssl + + PKGVER=$_realver \ + CFLAGS="$CFLAGS -Wno-cpp" \ + CXXFLAGS="$CXXFLAGS -Wno-#warnings" \ + ruby ./generate_build.rb > build.ninja +} + build() { - make -C "$builddir" || return 1 + mkdir -p "$builddir"/boringssl/build + cd "$builddir"/boringssl/build + + cmake -GNinja \ + -DBUILD_SHARED_LIBS=False \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + .. + ninja + + cd "$builddir" + ninja } package() { - make DESTDIR="$pkgdir" PREFIX=/usr \ - -C "$builddir" install || return 1 + cd "$builddir" + mkdir -p "$pkgdir"/usr/bin + install -m755 fastboot adb mke2fs.android \ + e2fsdroid ext2simg core/mkbootimg/mkbootimg \ + "$pkgdir"/usr/bin } -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" +sha512sums="0592d04a12ee992750a2975c7c6eaa0db6001fcabdd046dd4385878600f5549d74c5b418306d29faa20f1aeb0342323f1a274d6209941ca6a09c696c267d0d4d android-tools-core-8.1.0_r7.tar.gz +bd11d9b6c02f35715c8130f11f51ad74c1efbfe883a84c2c36bb6427de0d600494ffc5dfb9a6a60cca25b2410bd08c624fd319f01272e91afe983e72e8c9ea0d android-tools-extras-8.1.0_r7.tar.gz +85a55a2b9ea2205a9fd81f04a899851b498745e11bd915db8297924ab1ed71fefc9a9ea3b360f8ed9798124bff590fd7408128f19b0ff36f6118407ed7318602 android-tools-selinux-8.1.0_r7.tar.gz +9ead522e8e82d380833bb46b8b154f46f722ef6edd3f268ba992b746c1e896e61d3b8d92c69ef0862b7e00d8f8f54b9cc298de99a5ac80338ef91357f403e75b android-tools-f2fs-tools-8.1.0_r7.tar.gz +722d30b43cbb7ff325927c1696cec02a4d0dbb4ded4b9016f35908d2e87d5f65875f9cbdbb935c3cb6c790ea722c3119240ad2f3adfb33e01a6a7ca62d69c158 android-tools-e2fsprogs-8.1.0_r7.tar.gz +171b524b0452a48853b2c8010ff5e14d5d720e69eeaf1d3b79f675838f3afa94aee9de2f47b37303feb2d92cbf77639efe585786625b7b37b8cc2ba727c37fdc android-tools-boringssl-8.1.0_r7.tar.gz +785e201dd8131a6dc49b6b40b54bc698a33cc9500ad2161187d2505541fddd68a66aac951f0794c0d852383bb4ae2f5bd9c37455b8777462b3e3c9fa7bfe455e musl-fixes.patch +052bd5e602a600c21aaf30bd734dd6da37aaa62a0712a2a5cbb7f781bc2e59aad97516b65a6f985049307f849994a6b34a8646bd9b5eac247271ff5819b6a2e5 generate_build.rb" diff --git a/testing/android-tools/android-tools.patch b/testing/android-tools/android-tools.patch deleted file mode 100644 index 9052703861..0000000000 --- a/testing/android-tools/android-tools.patch +++ /dev/null @@ -1,826 +0,0 @@ -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/generate_build.rb b/testing/android-tools/generate_build.rb new file mode 100644 index 0000000000..e9319557b6 --- /dev/null +++ b/testing/android-tools/generate_build.rb @@ -0,0 +1,415 @@ +#!/usr/bin/ruby +# This ruby script has been copied from Arch Linux. + +# 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 = 'cc' + lang_flags = '-std=gnu11 $CFLAGS $CPPFLAGS' + when '.cpp', '.cc' + cc = 'cxx' + lang_flags = '-std=gnu++14 $CXXFLAGS $CPPFLAGS' + else + raise "Unknown extension #{ext}" + end + + output = s + '.o' + outputs << output + puts "build #{output}: #{cc} #{s}\n cflags = #{lang_flags} #{cflags}" + end + + return outputs +end + +# dir - directory where ninja file is located +# lib - static library path relative to dir +def subninja(dir, lib) + puts "subninja #{dir}build.ninja" + return lib.each{|l| dir + l} +end + +# Links object files +def link(output, objects, ldflags) + puts "build #{output}: link #{objects.join(' ')}\n ldflags = #{ldflags} $LDFLAGS" +end + +puts "# This set of commands generated by generate_build.rb script\n\n" +puts "CC = #{ENV['CC'] || 'clang'}" +puts "CXX = #{ENV['CXX'] || 'clang++'}\n\n" +puts "CFLAGS = #{ENV['CFLAGS']}" +puts "CXXFLAGS = #{ENV['CXXFLAGS']}" +puts "LDFLAGS = #{ENV['LDFLAGS']}" +puts "PKGVER = #{ENV['PKGVER']}\n\n" + + +puts """ +rule cc + command = $CC $cflags -c $in -o $out + +rule cxx + command = $CXX $cflags -c $in -o $out + +rule link + command = $CXX $ldflags $LDFLAGS $in -o $out + + +""" + +adbdfiles = %w( + adb.cpp + adb_io.cpp + adb_listeners.cpp + adb_trace.cpp + adb_utils.cpp + bugreport.cpp + line_printer.cpp + sockets.cpp + transport.cpp + transport_local.cpp + transport_usb.cpp + transport_mdns_unsupported.cpp + fdevent.cpp + adb_auth_host.cpp + shell_service_protocol.cpp +) +libadbd = compile(expand('core/adb', adbdfiles), '-DADB_VERSION="\"$PKGVER\"" -DADB_HOST=1 -Icore/include -Icore/base/include -Icore/adb -Icore/libcrypto_utils/include -Iboringssl/include') + +adbfiles = %w( + console.cpp + socket_spec.cpp + commandline.cpp + adb_client.cpp + services.cpp + file_sync_client.cpp + sysdeps_unix.cpp + sysdeps/errno.cpp + client/main.cpp + client/usb_dispatch.cpp + client/usb_linux.cpp + client/usb_libusb.cpp + sysdeps/posix/network.cpp +) +libadb = compile(expand('core/adb', adbfiles), '-D_GNU_SOURCE -DADB_HOST=1 -Icore/include -Icore/base/include -Icore/adb') + +basefiles = %w( + file.cpp + logging.cpp + parsenetaddress.cpp + stringprintf.cpp + strings.cpp + errors_unix.cpp + test_utils.cpp +) +libbase = compile(expand('core/base', basefiles), '-DADB_HOST=1 -Icore/base/include -Icore/include') + +logfiles = %w( + log_event_write.c + fake_log_device.c + log_event_list.c + logger_write.c + config_write.c + config_read.c + logger_lock.c + local_logger.c + fake_writer.c + logger_name.c + stderr_write.c + logprint.c +) +liblog = compile(expand('core/liblog', logfiles), '-DLIBLOG_LOG_TAG=1006 -D_XOPEN_SOURCE=700 -DFAKE_LOG_DEVICE=1 -Icore/log/include -Icore/include') + +cutilsfiles = %w( + load_file.c + socket_local_client_unix.c + socket_network_client_unix.c + socket_local_server_unix.c + sockets_unix.cpp + socket_inaddr_any_server_unix.c + sockets.cpp + android_get_control_file.cpp + threads.c + fs_config.cpp + canned_fs_config.c +) +libcutils = compile(expand('core/libcutils', cutilsfiles), '-D_GNU_SOURCE -Icore/libcutils/include -Icore/include') + +diagnoseusbfiles = %w( + diagnose_usb.cpp +) +libdiagnoseusb = compile(expand('core/adb', diagnoseusbfiles), '-Icore/include -Icore/base/include') + +libcryptofiles = %w( + android_pubkey.c +) +libcrypto = compile(expand('core/libcrypto_utils', libcryptofiles), '-Icore/libcrypto_utils/include -Iboringssl/include') + +# TODO: make subninja working +#boringssl = subninja('boringssl/build/', ['crypto/libcrypto.a']) +boringssl = ['boringssl/build/crypto/libcrypto.a'] + +link('adb', libbase + liblog + libcutils + libadbd + libadb + libdiagnoseusb + libcrypto + boringssl, '-lpthread -lusb-1.0') + + +fastbootfiles = %w( + protocol.cpp + engine.cpp + bootimg_utils.cpp + fastboot.cpp + util.cpp + fs.cpp + usb_linux.cpp + socket.cpp + tcp.cpp + udp.cpp +) +libfastboot = compile(expand('core/fastboot', fastbootfiles), '-DFASTBOOT_VERSION="\"$PKGVER\"" -D_GNU_SOURCE -D_XOPEN_SOURCE=700 -DUSE_F2FS -Icore/base/include -Icore/include -Icore/adb -Icore/libsparse/include -Icore/mkbootimg -Iextras/ext4_utils/include -Iextras/f2fs_utils -Icore/libziparchive/include') + +sparsefiles = %w( + backed_block.c + output_file.c + sparse.c + sparse_crc32.c + sparse_err.c + sparse_read.cpp +) +libsparse = compile(expand('core/libsparse', sparsefiles), '-Icore/libsparse/include -Icore/base/include') + +f2fsfiles = %w( + f2fs_utils.c + f2fs_ioutils.c + f2fs_dlutils.c +) +f2fs = compile(expand('extras/f2fs_utils', f2fsfiles), '-Iextras/f2fs_utils -If2fs-tools/include -If2fs-tools/mkfs -Icore/libsparse/include -Iselinux/libselinux/include') + +zipfiles = %w( + zip_archive.cc +) +libzip = compile(expand('core/libziparchive', zipfiles), '-Icore/base/include -Icore/include -Icore/libziparchive/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), '-D_GNU_SOURCE -Icore/libsparse/include -Icore/include -Iselinux/libselinux/include -Iextras/ext4_utils/include') + +selinuxfiles = %w( + callbacks.c + check_context.c + freecon.c + init.c + label.c + label_file.c + label_support.c + setrans_client.c + regex.c + matchpathcon.c + selinux_config.c + label_backends_android.c + canonicalize_context.c + lsetfilecon.c + policyvers.c + lgetfilecon.c + load_policy.c + seusers.c + sha1.c + booleans.c + disable.c + enabled.c + getenforce.c + setenforce.c +) +libselinux = compile(expand('selinux/libselinux/src', selinuxfiles), '-DAUDITD_LOG_TAG=1003 -D_GNU_SOURCE -DHOST -DUSE_PCRE2 -DNO_PERSISTENTLY_STORED_PATTERNS -DDISABLE_SETRANS -DDISABLE_BOOL -DNO_MEDIA_BACKEND -DNO_X_BACKEND -DNO_DB_BACKEND -DPCRE2_CODE_UNIT_WIDTH=8 -Iselinux/libselinux/include -Iselinux/libsepol/include') + +libsepolfiles = %w( + policydb_public.c + genbools.c + debug.c + policydb.c + conditional.c + services.c + ebitmap.c + util.c + assertion.c + avtab.c + hashtab.c + sidtab.c + context.c + genusers.c + context_record.c + mls.c + avrule_block.c + symtab.c + policydb_convert.c + write.c + constraint.c + expand.c + hierarchy.c +) +libsepol = compile(expand('selinux/libsepol/src', libsepolfiles), '-Iselinux/libsepol/include') + +link('fastboot', libsparse + libzip + libcutils + liblog + libutil + libbase + libext4 + f2fs + libselinux + libsepol + libfastboot + libdiagnoseusb, '-lz -lpcre2-8 -lpthread -ldl') + + +# mke2fs.android - a ustom version of mke2fs that supports --android_sparse (FS#56955) +libext2fsfiles = %w( + lib/blkid/cache.c + lib/blkid/dev.c + lib/blkid/devname.c + lib/blkid/devno.c + lib/blkid/getsize.c + lib/blkid/llseek.c + lib/blkid/probe.c + lib/blkid/read.c + lib/blkid/resolve.c + lib/blkid/save.c + lib/blkid/tag.c + lib/e2p/feature.c + lib/e2p/hashstr.c + lib/e2p/mntopts.c + lib/e2p/ostype.c + lib/e2p/parse_num.c + lib/e2p/uuid.c + lib/et/com_err.c + lib/et/error_message.c + lib/et/et_name.c + lib/ext2fs/alloc.c + lib/ext2fs/alloc_sb.c + lib/ext2fs/alloc_stats.c + lib/ext2fs/alloc_tables.c + lib/ext2fs/atexit.c + lib/ext2fs/badblocks.c + lib/ext2fs/bb_inode.c + lib/ext2fs/bitmaps.c + lib/ext2fs/bitops.c + lib/ext2fs/blkmap64_ba.c + lib/ext2fs/blkmap64_rb.c + lib/ext2fs/blknum.c + lib/ext2fs/block.c + lib/ext2fs/bmap.c + lib/ext2fs/closefs.c + lib/ext2fs/crc16.c + lib/ext2fs/crc32c.c + lib/ext2fs/csum.c + lib/ext2fs/dirblock.c + lib/ext2fs/dir_iterate.c + lib/ext2fs/expanddir.c + lib/ext2fs/ext2_err.c + lib/ext2fs/ext_attr.c + lib/ext2fs/extent.c + lib/ext2fs/fallocate.c + lib/ext2fs/fileio.c + lib/ext2fs/freefs.c + lib/ext2fs/gen_bitmap64.c + lib/ext2fs/gen_bitmap.c + lib/ext2fs/get_num_dirs.c + lib/ext2fs/getsectsize.c + lib/ext2fs/getsize.c + lib/ext2fs/i_block.c + lib/ext2fs/ind_block.c + lib/ext2fs/initialize.c + lib/ext2fs/inline.c + lib/ext2fs/inline_data.c + lib/ext2fs/inode.c + lib/ext2fs/io_manager.c + lib/ext2fs/ismounted.c + lib/ext2fs/link.c + lib/ext2fs/llseek.c + lib/ext2fs/lookup.c + lib/ext2fs/mkdir.c + lib/ext2fs/mkjournal.c + lib/ext2fs/mmp.c + lib/ext2fs/namei.c + lib/ext2fs/newdir.c + lib/ext2fs/openfs.c + lib/ext2fs/progress.c + lib/ext2fs/punch.c + lib/ext2fs/rbtree.c + lib/ext2fs/read_bb.c + lib/ext2fs/read_bb_file.c + lib/ext2fs/res_gdt.c + lib/ext2fs/rw_bitmaps.c + lib/ext2fs/sparse_io.c + lib/ext2fs/symlink.c + lib/ext2fs/undo_io.c + lib/ext2fs/unix_io.c + lib/ext2fs/valid_blk.c + lib/support/dict.c + lib/support/mkquota.c + lib/support/parse_qtype.c + lib/support/plausible.c + lib/support/prof_err.c + lib/support/profile.c + lib/support/quotaio.c + lib/support/quotaio_tree.c + lib/support/quotaio_v2.c + lib/uuid/gen_uuid.c + lib/uuid/isnull.c + lib/uuid/pack.c + lib/uuid/parse.c + lib/uuid/unpack.c + lib/uuid/unparse.c + misc/create_inode.c +) +libext2fs = compile(expand('e2fsprogs', libext2fsfiles), '-Ie2fsprogs/lib -Icore/libsparse/include') + + +mke2fsfiles = %w( + misc/default_profile.c + misc/mke2fs.c + misc/mk_hugefiles.c + misc/util.c +) +mke2fs = compile(expand('e2fsprogs', mke2fsfiles), '-Ie2fsprogs/lib') + +link('mke2fs.android', mke2fs + libext2fs + libsparse + libbase + libzip + liblog + libutil, '-lpthread -lz') + + +e2fsdroidfiles = %w( + contrib/android/e2fsdroid.c + contrib/android/basefs_allocator.c + contrib/android/block_range.c + contrib/android/hashmap.c + contrib/android/base_fs.c + contrib/android/fsmap.c + contrib/android/block_list.c + contrib/android/perms.c +) +e2fsdroid = compile(expand('e2fsprogs', e2fsdroidfiles), '-Ie2fsprogs/lib -Iselinux/libselinux/include -Icore/libcutils/include -Ie2fsprogs/misc') + +link('e2fsdroid', e2fsdroid + libext2fs + libsparse + libbase + libzip + liblog + libutil + libselinux + libsepol + libcutils, '-lz -lpthread -lpcre2-8') + + +ext2simgfiles = %w( + contrib/android/ext2simg.c +) +ext2simg = compile(expand('e2fsprogs', ext2simgfiles), '-Ie2fsprogs/lib -Icore/libsparse/include') + +link('ext2simg', ext2simg + libext2fs + libsparse + libbase + libzip + liblog + libutil, '-lz -lpthread') diff --git a/testing/android-tools/musl-fixes.patch b/testing/android-tools/musl-fixes.patch index 4c093ce918..235ef68854 100644 --- a/testing/android-tools/musl-fixes.patch +++ b/testing/android-tools/musl-fixes.patch @@ -1,164 +1,199 @@ -This patch has been taken from the Void Linux distribution. +Patch has been taken from Arch Linux with some minor modifications for +needed to build android-tools with musl libc. -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 @@ - +diff -upr core.orig/adb/client/usb_libusb.cpp core/adb/client/usb_libusb.cpp +--- core.orig/adb/client/usb_libusb.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/adb/client/usb_libusb.cpp 2018-02-25 10:35:06.661418453 +0100 +@@ -21,6 +21,7 @@ #include <stdint.h> - #include <string.h> --#include <sys/cdefs.h> + + #include <atomic> ++#include <condition_variable> + #include <chrono> + #include <memory> + #include <mutex> +@@ -28,7 +29,7 @@ + #include <thread> + #include <unordered_map> + +-#include <libusb/libusb.h> ++#include <libusb-1.0/libusb.h> + + #include <android-base/file.h> + #include <android-base/logging.h> +diff -upr core.orig/adb/diagnose_usb.cpp core/adb/diagnose_usb.cpp +--- core.orig/adb/diagnose_usb.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/adb/diagnose_usb.cpp 2018-02-25 10:35:06.658085109 +0100 +@@ -45,9 +45,7 @@ static std::string GetUdevProblem() { + return ""; + } + +- // getgroups(2) indicates that the GNU group_member(3) 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) { ++ if (getegid() == plugdev_group->gr_gid) { + // The user is in plugdev so the problem is likely with the udev rules. + return "user in plugdev group; are your udev rules wrong?"; + } +diff -upr core.orig/adb/sysdeps/posix/network.cpp core/adb/sysdeps/posix/network.cpp +--- core.orig/adb/sysdeps/posix/network.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/adb/sysdeps/posix/network.cpp 2018-02-25 10:35:06.661418453 +0100 +@@ -21,6 +21,7 @@ + #include <sys/socket.h> + + #include <string> ++#include <string.h> + + #include "adb_unique_fd.h" + +diff -upr core.orig/base/errors_unix.cpp core/base/errors_unix.cpp +--- core.orig/base/errors_unix.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/base/errors_unix.cpp 2018-02-25 10:35:06.654751766 +0100 +@@ -17,6 +17,7 @@ + #include "android-base/errors.h" + + #include <errno.h> ++#include <string.h> + + namespace android { + namespace base { +diff -upr core.orig/base/file.cpp core/base/file.cpp +--- core.orig/base/file.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/base/file.cpp 2018-02-25 10:35:06.654751766 +0100 +@@ -22,6 +22,7 @@ + #include <sys/stat.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> ++#include <string.h> + + #include <memory> + #include <mutex> +diff -upr core.orig/base/logging.cpp core/base/logging.cpp +--- core.orig/base/logging.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/base/logging.cpp 2018-02-25 10:35:06.654751766 +0100 +@@ -23,6 +23,7 @@ + #include <fcntl.h> + #include <libgen.h> + #include <time.h> ++#include <string.h> + + // For getprogname(3) or program_invocation_short_name. + #if defined(__ANDROID__) || defined(__APPLE__) +@@ -89,7 +90,7 @@ static thread_id GetThreadId() { + } - /* 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> + namespace { +-#if defined(__GLIBC__) ++#if defined(__linux__) + const char* getprogname() { + return program_invocation_short_name; + } +diff -upr core.orig/fastboot/fs.cpp core/fastboot/fs.cpp +--- core.orig/fastboot/fs.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/fastboot/fs.cpp 2018-02-25 10:35:06.651418422 +0100 +@@ -108,7 +108,7 @@ static int generate_ext4_image(const cha + static constexpr int block_size = 4096; + const std::string exec_dir = android::base::GetExecutableDirectory(); -@@ -230,7 +229,10 @@ struct fs_path_config { +- const std::string mke2fs_path = exec_dir + "/mke2fs"; ++ const std::string mke2fs_path = exec_dir + "/mke2fs.android"; + std::vector<const char*> mke2fs_args = {mke2fs_path.c_str(), "-t", "ext4", "-b"}; - /* Rules for directories and files has moved to system/code/libcutils/fs_config.c */ + std::string block_size_str = std::to_string(block_size); +diff -upr core.orig/fastboot/socket.cpp core/fastboot/socket.cpp +--- core.orig/fastboot/socket.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/fastboot/socket.cpp 2018-02-25 10:35:06.651418422 +0100 +@@ -28,6 +28,8 @@ --__BEGIN_DECLS -+#ifdef __cplusplus -+extern "C" { -+#endif + #include "socket.h" + ++#include <sys/select.h> + + #include <android-base/errors.h> + #include <android-base/stringprintf.h> - /* - * Used in: -@@ -247,7 +249,9 @@ void fs_config(const char *path, int dir, const char *target_out_path, +diff -upr core.orig/libsparse/sparse_read.cpp core/libsparse/sparse_read.cpp +--- core.orig/libsparse/sparse_read.cpp 2017-11-29 19:11:44.000000000 +0100 ++++ core/libsparse/sparse_read.cpp 2018-02-25 10:35:06.621418331 +0100 +@@ -26,6 +26,7 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string> ++#include <string.h> + #include <unistd.h> - ssize_t fs_config_generate(char *buffer, size_t length, const struct fs_path_config *pc); + #include <sparse/sparse.h> +diff -upr selinux.orig/libsepol/src/private.h selinux/libsepol/src/private.h +--- selinux.orig/libsepol/src/private.h 2017-08-13 09:34:17.000000000 +0200 ++++ selinux/libsepol/src/private.h 2018-02-25 10:36:31.765008355 +0100 +@@ -14,7 +14,7 @@ + #endif --__END_DECLS -+#ifdef __cplusplus -+} -+#endif + #include <errno.h> +-#include <dso.h> ++#include "dso.h" - #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()); + #define __BYTE_ORDER BYTE_ORDER +diff -upr selinux.orig/libsepol/src/util.c selinux/libsepol/src/util.c +--- selinux.orig/libsepol/src/util.c 2017-08-13 09:34:17.000000000 +0200 ++++ selinux/libsepol/src/util.c 2018-02-25 10:36:31.765008355 +0100 +@@ -27,7 +27,7 @@ + #include <sepol/policydb/flask_types.h> + #include <sepol/policydb/policydb.h> + #include <sepol/policydb/util.h> +-#include <dso.h> ++#include "dso.h" + + struct val_to_name { + unsigned int val; +diff -upr e2fsprogs.orig/contrib/android/perms.c e2fsprogs/contrib/android/perms.c +--- e2fsprogs.orig/contrib/android/perms.c 2017-11-29 00:28:33.000000000 +0100 ++++ e2fsprogs/contrib/android/perms.c 2018-02-25 10:37:13.048466147 +0100 +@@ -5,6 +5,7 @@ + #include "support/nls-enable.h" + #include <time.h> + #include <sys/stat.h> ++#include "private/android_filesystem_capability.h" + + #ifndef XATTR_SELINUX_SUFFIX + # define XATTR_SELINUX_SUFFIX "selinux" +diff -upr e2fsprogs.orig/lib/ext2fs/bitops.h e2fsprogs/lib/ext2fs/bitops.h +--- e2fsprogs.orig/lib/ext2fs/bitops.h 2017-11-29 00:28:33.000000000 +0100 ++++ e2fsprogs/lib/ext2fs/bitops.h 2018-02-25 10:37:13.028466087 +0100 +@@ -233,11 +233,11 @@ extern errcode_t ext2fs_find_first_set_g + #if (__STDC_VERSION__ >= 199901L) + #define _INLINE_ extern inline #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; +-#define _INLINE_ inline ++#define _INLINE_ static inline #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; + #else /* !INCLUDE_INLINE FUNCS */ + #if (__STDC_VERSION__ >= 199901L) +-#define _INLINE_ inline ++#define _INLINE_ static inline + #else /* not C99 */ + #ifdef __GNUC__ + #define _INLINE_ extern __inline__ +diff -upr e2fsprogs.orig/lib/ext2fs/ext2fs.h e2fsprogs/lib/ext2fs/ext2fs.h +--- e2fsprogs.orig/lib/ext2fs/ext2fs.h 2017-11-29 00:28:33.000000000 +0100 ++++ e2fsprogs/lib/ext2fs/ext2fs.h 2018-02-25 10:37:13.028466087 +0100 +@@ -53,9 +53,7 @@ extern "C" { + */ + #define EXT2_LIB_CURRENT_REV EXT2_DYNAMIC_REV + +-#ifdef HAVE_SYS_TYPES_H + #include <sys/types.h> -#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() { + #include <stdio.h> + #include <stdlib.h> +@@ -1736,7 +1734,7 @@ extern const struct ext2_inode *ext2fs_c + #define _INLINE_ extern + #else + #if (__STDC_VERSION__ >= 199901L) +-#define _INLINE_ inline ++#define _INLINE_ static inline + #else + #ifdef __GNUC__ + #define _INLINE_ extern __inline__ |