AOSP: e2fsdroid and mke2fs are dynamic executable in recovery partition

The two utilities are now converted to dynamic executables as shared
libraries are supported in recovery mode.

As part of the conversion, shared libraries that are depended from them
are also marked as recovery_available: true.

Bug: 79146551
Test: adb reboot recovery, and select 'Wipe data/factory reset'. The
data partition is formatted and there is no selinux denial.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>

Change-Id: I22fbc83a4ff0496096efca90721b0db1237c32cd
From AOSP commit: df1f088849ed3336bb4f6f200c29b30682f15948
diff --git a/CleanSpec.mk b/CleanSpec.mk
index ded4ceb..8331dae 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -49,3 +49,4 @@
 # ************************************************
 
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libext2_uuid_intermediates)
+$(call add-clean-step, rm -rf $(TARGET_RECOVERY_OUT)/root/sbin)
diff --git a/contrib/android/Android.bp b/contrib/android/Android.bp
index 67844f9..b1fd0da 100644
--- a/contrib/android/Android.bp
+++ b/contrib/android/Android.bp
@@ -6,6 +6,7 @@
 cc_binary {
     name: "e2fsdroid",
     host_supported: true,
+    recovery_available: true,
     defaults: ["e2fsprogs-defaults"],
 
     srcs: [
diff --git a/contrib/android/Android.mk b/contrib/android/Android.mk
deleted file mode 100644
index 68d925d..0000000
--- a/contrib/android/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-#########################################################################
-# Build statically linked e2fsdroid for recovery
-e2fsdroid_src_files := \
-        e2fsdroid.c \
-        block_range.c \
-        fsmap.c \
-        block_list.c \
-        base_fs.c \
-        perms.c \
-        basefs_allocator.c \
-
-e2fsdroid_cflags := -W -Wall -Werror -Wno-error=macro-redefined
-
-e2fsdroid_static_libraries := \
-        libext2_com_err \
-        libext2_misc \
-        libcutils \
-        libselinux \
-        libcrypto \
-        libsparse \
-        liblog \
-        libz \
-
-e2fsdroid_whole_static_libraries := \
-        libbase \
-        libext2fs \
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(e2fsdroid_src_files)
-LOCAL_CFLAGS := $(e2fsdroid_cflags)
-LOCAL_WHOLE_STATIC_LIBRARIES := $(e2fsdroid_whole_static_libraries)
-LOCAL_STATIC_LIBRARIES := $(e2fsdroid_static_libraries)
-LOCAL_MODULE := e2fsdroid_static
-LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-
-include $(BUILD_EXECUTABLE)
-
diff --git a/lib/blkid/Android.bp b/lib/blkid/Android.bp
index 225716c..5a02736 100644
--- a/lib/blkid/Android.bp
+++ b/lib/blkid/Android.bp
@@ -3,6 +3,7 @@
 cc_library {
     name: "libext2_blkid",
     host_supported: true,
+    recovery_available: true,
     unique_host_soname: true,
     defaults: ["e2fsprogs-defaults"],
     srcs: [
diff --git a/lib/e2p/Android.bp b/lib/e2p/Android.bp
index 21089d7..148a576 100644
--- a/lib/e2p/Android.bp
+++ b/lib/e2p/Android.bp
@@ -3,6 +3,7 @@
 cc_library {
     name: "libext2_e2p",
     host_supported: true,
+    recovery_available: true,
     unique_host_soname: true,
     defaults: ["e2fsprogs-defaults"],
     srcs: [
diff --git a/lib/et/Android.bp b/lib/et/Android.bp
index 670d8ee..3414639 100644
--- a/lib/et/Android.bp
+++ b/lib/et/Android.bp
@@ -3,6 +3,7 @@
 cc_library {
     name: "libext2_com_err",
     host_supported: true,
+    recovery_available: true,
     unique_host_soname: true,
     defaults: ["e2fsprogs-defaults"],
     srcs: [
diff --git a/lib/ext2fs/Android.bp b/lib/ext2fs/Android.bp
index 06a750e..5d10d3f 100644
--- a/lib/ext2fs/Android.bp
+++ b/lib/ext2fs/Android.bp
@@ -3,6 +3,7 @@
 cc_library {
     name: "libext2fs",
     host_supported: true,
+    recovery_available: true,
     unique_host_soname: true,
     defaults: ["e2fsprogs-defaults"],
     srcs: [
diff --git a/lib/support/Android.bp b/lib/support/Android.bp
index 0ddd079..e986e0e 100644
--- a/lib/support/Android.bp
+++ b/lib/support/Android.bp
@@ -3,6 +3,7 @@
 cc_library {
     name: "libext2_quota",
     host_supported: true,
+    recovery_available: true,
     unique_host_soname: true,
     defaults: ["e2fsprogs-defaults"],
     srcs: [
diff --git a/misc/Android.bp b/misc/Android.bp
index e73150f..310c9dc 100644
--- a/misc/Android.bp
+++ b/misc/Android.bp
@@ -5,6 +5,7 @@
 cc_library {
     name: "libext2_misc",
     host_supported: true,
+    recovery_available: true,
     defaults: ["e2fsprogs-defaults"],
 
     target: {
@@ -33,6 +34,7 @@
 cc_binary {
     name: "mke2fs",
     host_supported: true,
+    recovery_available: true,
     defaults: ["e2fsprogs-defaults"],
 
     srcs: [
diff --git a/misc/Android.mk b/misc/Android.mk
deleted file mode 100644
index c9d0735..0000000
--- a/misc/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-#########################################################################
-# Build statically linked mke2fs for recovery
-mke2fs_src_files := \
-       mke2fs.c \
-       util.c \
-       mk_hugefiles.c \
-       default_profile.c \
-       create_inode.c \
-
-mke2fs_c_includes := \
-       external/e2fsprogs/e2fsck
-
-mke2fs_cflags := -W -Wall -Werror -Wno-macro-redefined
-
-mke2fs_static_libraries := \
-       libext2_blkid \
-       libext2_uuid \
-       libext2_quota \
-       libext2_com_err \
-       libext2_e2p \
-       libsparse \
-       libz \
-
-mke2fs_whole_static_libraries := \
-       libbase \
-       libext2fs \
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(mke2fs_src_files)
-LOCAL_C_INCLUDES := $(mke2fs_c_includes)
-LOCAL_CFLAGS := $(mke2fs_cflags)
-LOCAL_WHOLE_STATIC_LIBRARIES := $(mke2fs_whole_static_libraries)
-LOCAL_STATIC_LIBRARIES := $(mke2fs_static_libraries)
-LOCAL_MODULE := mke2fs_static
-LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-LOCAL_FORCE_STATIC_EXECUTABLE := true
-
-include $(BUILD_EXECUTABLE)
-