From 4fd4f89591fe826cf26167bccaeb2802f14fbdc8 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Mon, 6 Aug 2018 16:16:14 -0700 Subject: Build and use minadbd as a shared library. The former `minadbd` module is now built as a shared library (`libminadbd_services.so`) that serves sideloading under recovery, with a dynamic dependency on `libadbd.so`. This allows sharing and reusing libadbd code on device (both of `adbd` and `recovery` now uses `libadbd.so`). As a result, it reduces the size of `recovery` binary from 1407360-byte to (1272880 + 33032)-byte (aosp_marlin-userdebug). Bug: 78793464 Test: `m -j bootimage` with aosp_marlin-userdebug Test: Run minadbd_test on marlin. Test: Boot into recovery and verify that sideloading still works. Change-Id: I6c2bc3d351d5af71220a9b9f956c8c039e52c781 --- Android.mk | 7 ++++++- fuse_sideload/Android.bp | 3 ++- minadbd/Android.bp | 16 +++++++++------- tests/Android.mk | 2 +- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Android.mk b/Android.mk index 9542080ca..9d6a00fca 100644 --- a/Android.mk +++ b/Android.mk @@ -114,7 +114,6 @@ include $(BUILD_STATIC_LIBRARY) librecovery_static_libraries := \ libbootloader_message \ libfusesideload \ - libminadbd \ libminui \ libverifier \ libotautil \ @@ -157,6 +156,9 @@ LOCAL_CFLAGS := $(recovery_common_cflags) LOCAL_MODULE := librecovery +LOCAL_SHARED_LIBRARIES := \ + libminadbd_services \ + LOCAL_STATIC_LIBRARIES := \ $(librecovery_static_libraries) @@ -186,6 +188,7 @@ LOCAL_STATIC_LIBRARIES := \ $(librecovery_static_libraries) LOCAL_SHARED_LIBRARIES := \ + libminadbd_services \ librecovery_ui \ LOCAL_HAL_STATIC_LIBRARIES := libhealthd @@ -223,7 +226,9 @@ LOCAL_REQUIRED_MODULES += \ # module is built with Soong (with `recovery: true` flag). LOCAL_REQUIRED_MODULES += \ libbase.recovery \ + libcrypto.recovery \ liblog.recovery \ + libminadbd_services.recovery \ libpng.recovery \ libz.recovery \ diff --git a/fuse_sideload/Android.bp b/fuse_sideload/Android.bp index 76bc16df9..29404cea2 100644 --- a/fuse_sideload/Android.bp +++ b/fuse_sideload/Android.bp @@ -14,6 +14,7 @@ cc_library_static { name: "libfusesideload", + recovery_available: true, cflags: [ "-D_XOPEN_SOURCE", @@ -30,7 +31,7 @@ cc_library_static { "include", ], - static_libs: [ + shared_libs: [ "libbase", "libcrypto", ], diff --git a/minadbd/Android.bp b/minadbd/Android.bp index 432b2f0f5..8ccce4f42 100644 --- a/minadbd/Android.bp +++ b/minadbd/Android.bp @@ -26,8 +26,9 @@ cc_defaults { ], } -cc_library_static { - name: "libminadbd", +cc_library { + name: "libminadbd_services", + recovery_available: true, defaults: [ "minadbd_defaults", @@ -39,14 +40,14 @@ cc_library_static { "minadbd_services.cpp", ], - static_libs: [ - "libfusesideload", + shared_libs: [ + "libadbd", "libbase", "libcrypto", ], - whole_static_libs: [ - "libadbd", + static_libs: [ + "libfusesideload", ], } @@ -62,8 +63,9 @@ cc_test { ], static_libs: [ + "libminadbd_services", + "libadbd", "libBionicGtestMain", - "libminadbd", ], shared_libs: [ diff --git a/tests/Android.mk b/tests/Android.mk index 58ef3a2af..8dd454944 100644 --- a/tests/Android.mk +++ b/tests/Android.mk @@ -157,7 +157,7 @@ librecovery_static_libraries := \ librecovery \ libbootloader_message \ libfusesideload \ - libminadbd \ + libminadbd_services \ librecovery_ui_default \ librecovery_ui \ libminui \ -- cgit v1.2.3 From 13bec7666295dd591868d01b1eec95522a03a2f4 Mon Sep 17 00:00:00 2001 From: tangrobin Date: Tue, 7 Aug 2018 17:23:31 +0800 Subject: Fix the DRM_FORMAT match with corresponding PixelFormat The DRM_FORMAT settings in DrmCreateSurface should match with the correct PixelFormat Bug: 112245291 Test: build and flash boot image to device. Change-Id: I3ee0de38256d1109cd5174b666e2f47dceb637e6 --- minui/graphics_drm.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/minui/graphics_drm.cpp b/minui/graphics_drm.cpp index 9336a1e63..630b80180 100644 --- a/minui/graphics_drm.cpp +++ b/minui/graphics_drm.cpp @@ -117,12 +117,16 @@ GRSurfaceDrm* MinuiBackendDrm::DrmCreateSurface(int width, int height) { uint32_t format; PixelFormat pixel_format = gr_pixel_format(); + // PixelFormat comes in byte order, whereas DRM_FORMAT_* uses little-endian + // (external/libdrm/include/drm/drm_fourcc.h). Note that although drm_fourcc.h also defines a + // macro of DRM_FORMAT_BIG_ENDIAN, it doesn't seem to be actually supported (see the discussion + // in https://lists.freedesktop.org/archives/amd-gfx/2017-May/008560.html). if (pixel_format == PixelFormat::ABGR) { - format = DRM_FORMAT_ABGR8888; + format = DRM_FORMAT_RGBA8888; } else if (pixel_format == PixelFormat::BGRA) { - format = DRM_FORMAT_BGRA8888; + format = DRM_FORMAT_ARGB8888; } else if (pixel_format == PixelFormat::RGBX) { - format = DRM_FORMAT_RGBX8888; + format = DRM_FORMAT_XBGR8888; } else { format = DRM_FORMAT_RGB565; } -- cgit v1.2.3 From 1c4d4bf4f443c7c7c50c8b5e86aefc66f0f72bd1 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Tue, 7 Aug 2018 10:08:02 -0700 Subject: minui: Track libsync module name change. Needs the matching change to libsync_recovery. Test: `mmma -j bootable/recovery` Change-Id: I69b5c978e9b4d16957ffecd360796b29cd95865c --- minui/Android.bp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minui/Android.bp b/minui/Android.bp index 19d28be62..31022e1d6 100644 --- a/minui/Android.bp +++ b/minui/Android.bp @@ -35,7 +35,7 @@ cc_library { whole_static_libs: [ "libadf", "libdrm", - "libsync_recovery", + "libsync", ], shared_libs: [ -- cgit v1.2.3 From c70446ce7b4db79f296833b16ce38eb8a01d83df Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Tue, 7 Aug 2018 20:11:44 -0700 Subject: Revert "Build and use minadbd as a shared library." This reverts commit 4fd4f89591fe826cf26167bccaeb2802f14fbdc8. The reverted CL has a side effect that unintentionally installs a copy of libminadbd_services.so to the system image. This breaks the check with `build/soong/build_test.bash --dist` which detects and prevents vendor modules from installing files to the system image. Prior to fully converting `recovery` to be built with Soong, we have to statically link recovery-specific modules into `recovery`. Bug: 110380063 Test: `m -j bootimage` with aosp_marlin-userdebug Test: Run minadbd_test on marlin. Test: Boot into recovery and verify that sideloading still works. Test: `build/soong/build_test.bash --dist` Change-Id: I290d55c82e17aa60a5afdf2ff7f896afc4dae8b3 --- Android.mk | 7 +------ fuse_sideload/Android.bp | 3 +-- minadbd/Android.bp | 16 +++++++--------- tests/Android.mk | 2 +- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/Android.mk b/Android.mk index aa959c909..b25c1f07a 100644 --- a/Android.mk +++ b/Android.mk @@ -127,6 +127,7 @@ health_hal_static_libraries := \ librecovery_static_libraries := \ libbootloader_message \ libfusesideload \ + libminadbd \ libminui \ libverifier \ libotautil \ @@ -169,9 +170,6 @@ LOCAL_CFLAGS := $(recovery_common_cflags) LOCAL_MODULE := librecovery -LOCAL_SHARED_LIBRARIES := \ - libminadbd_services \ - LOCAL_STATIC_LIBRARIES := \ $(librecovery_static_libraries) @@ -201,7 +199,6 @@ LOCAL_STATIC_LIBRARIES := \ $(librecovery_static_libraries) LOCAL_SHARED_LIBRARIES := \ - libminadbd_services \ librecovery_ui \ LOCAL_HAL_STATIC_LIBRARIES := libhealthd @@ -239,9 +236,7 @@ LOCAL_REQUIRED_MODULES += \ # module is built with Soong (with `recovery: true` flag). LOCAL_REQUIRED_MODULES += \ libbase.recovery \ - libcrypto.recovery \ liblog.recovery \ - libminadbd_services.recovery \ libpng.recovery \ libz.recovery \ diff --git a/fuse_sideload/Android.bp b/fuse_sideload/Android.bp index 29404cea2..76bc16df9 100644 --- a/fuse_sideload/Android.bp +++ b/fuse_sideload/Android.bp @@ -14,7 +14,6 @@ cc_library_static { name: "libfusesideload", - recovery_available: true, cflags: [ "-D_XOPEN_SOURCE", @@ -31,7 +30,7 @@ cc_library_static { "include", ], - shared_libs: [ + static_libs: [ "libbase", "libcrypto", ], diff --git a/minadbd/Android.bp b/minadbd/Android.bp index 8ccce4f42..432b2f0f5 100644 --- a/minadbd/Android.bp +++ b/minadbd/Android.bp @@ -26,9 +26,8 @@ cc_defaults { ], } -cc_library { - name: "libminadbd_services", - recovery_available: true, +cc_library_static { + name: "libminadbd", defaults: [ "minadbd_defaults", @@ -40,14 +39,14 @@ cc_library { "minadbd_services.cpp", ], - shared_libs: [ - "libadbd", + static_libs: [ + "libfusesideload", "libbase", "libcrypto", ], - static_libs: [ - "libfusesideload", + whole_static_libs: [ + "libadbd", ], } @@ -63,9 +62,8 @@ cc_test { ], static_libs: [ - "libminadbd_services", - "libadbd", "libBionicGtestMain", + "libminadbd", ], shared_libs: [ diff --git a/tests/Android.mk b/tests/Android.mk index 5ef17776c..3d3e63e7e 100644 --- a/tests/Android.mk +++ b/tests/Android.mk @@ -170,7 +170,7 @@ librecovery_static_libraries := \ librecovery \ libbootloader_message \ libfusesideload \ - libminadbd_services \ + libminadbd \ librecovery_ui_default \ librecovery_ui \ libminui \ -- cgit v1.2.3