Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43482de3 authored by David Anderson's avatar David Anderson
Browse files

fs_mgr: Move libfiemap into libfs_mgr, and introduce libfs_mgr_binder.

This eliminates libfiemap as a standalone library and instead bundles it
into libfs_mgr. All consumers of libfiemap need libfs_mgr, and having
them tightly coupled reduces linkage complexity.

When to use libfs_mgr: In recovery, first-stage-init, or when libfiemap
or overlayfs is not used.

When to use libfs_mgr_binder: When not in recovery/first-stage init, and
overlayfs or libfiemap is needed. In this case, IImageManager will proxy
over binder to gsid.

Bug: 134949511
Test: builds, fiemap_writer/image_test passes.
Change-Id: I4c1a5698afdbf9b3bf87accec98254c1fb6f4e0e
parent 18c6248f
Loading
Loading
Loading
Loading
+42 −5
Original line number Diff line number Diff line
@@ -26,14 +26,14 @@ cc_defaults {
    ],
}

cc_library {
    // Do not ever allow this library to be vendor_available as a shared library.
    // It does not have a stable interface.
    name: "libfs_mgr",
cc_defaults {
    name: "libfs_mgr_defaults",
    defaults: ["fs_mgr_defaults"],
    recovery_available: true,
    export_include_dirs: ["include"],
    include_dirs: ["system/vold"],
    cflags: [
        "-D_FILE_OFFSET_BITS=64",
    ],
    srcs: [
        "file_wait.cpp",
        "fs_mgr.cpp",
@@ -43,6 +43,7 @@ cc_library {
        "fs_mgr_overlayfs.cpp",
        "fs_mgr_roots.cpp",
        "fs_mgr_vendor_overlay.cpp",
        ":libfiemap_srcs",
    ],
    shared_libs: [
        "libbase",
@@ -88,6 +89,42 @@ cc_library {
            ],
        },
    },
    header_libs: [
        "libfiemap_headers",
    ],
    export_header_lib_headers: [
        "libfiemap_headers",
    ],
}

// Two variants of libfs_mgr are provided: libfs_mgr and libfs_mgr_binder.
// Use libfs_mgr in recovery, first-stage-init, or when libfiemap or overlayfs
// is not used.
//
// Use libfs_mgr_binder when not in recovery/first-stage init, or when overlayfs
// or libfiemap is needed. In this case, libfiemap will proxy over binder to
// gsid.
cc_library {
    // Do not ever allow this library to be vendor_available as a shared library.
    // It does not have a stable interface.
    name: "libfs_mgr",
    recovery_available: true,
    defaults: [
        "libfs_mgr_defaults",
    ],
    srcs: [
        ":libfiemap_passthrough_srcs",
    ],
}

cc_library {
    // Do not ever allow this library to be vendor_available as a shared library.
    // It does not have a stable interface.
    name: "libfs_mgr_binder",
    defaults: [
        "libfs_mgr_defaults",
        "libfiemap_binder_defaults",
    ],
}

cc_library_static {
+14 −44
Original line number Diff line number Diff line
@@ -20,15 +20,8 @@ cc_library_headers {
    export_include_dirs: ["include"],
}

cc_defaults {
    name: "libfiemap_defaults",
    defaults: ["fs_mgr_defaults"],
    cflags: [
        "-D_FILE_OFFSET_BITS=64",
        "-Wall",
        "-Werror",
    ],

filegroup {
    name: "libfiemap_srcs",
    srcs: [
        "fiemap_writer.cpp",
        "image_manager.cpp",
@@ -36,55 +29,32 @@ cc_defaults {
        "split_fiemap_writer.cpp",
        "utility.cpp",
    ],

    static_libs: [
        "libdm",
        "libext2_uuid",
        "libext4_utils",
        "liblp",
        "libfs_mgr",
    ],

    shared_libs: [
        "libbase",
    ],

    header_libs: [
        "libfiemap_headers",
        "liblog_headers",
    ],

    export_shared_lib_headers: [
        "libbase",
    ],

    export_header_lib_headers: [
        "libfiemap_headers",
    ],
}

// Open up a binder IImageManager interface.
cc_library_static {
    name: "libfiemap_binder",
    defaults: ["libfiemap_defaults"],
filegroup {
    name: "libfiemap_binder_srcs",
    srcs: [
        "binder.cpp",
    ],
}

cc_defaults {
    name: "libfiemap_binder_defaults",
    srcs: [":libfiemap_binder_srcs"],
    whole_static_libs: [
        "gsi_aidl_interface-cpp",
        "libgsi",
    ],
    shared_libs: [
        "libbinder",
        "libutils",
    ],
}

// Open up a passthrough IImageManager interface. Use libfiemap_binder whenever
// possible. This should only be used when binder is not available.
cc_library_static {
    name: "libfiemap_passthrough",
    defaults: ["libfiemap_defaults"],
    recovery_available: true,
filegroup {
    name: "libfiemap_passthrough_srcs",
    srcs: [
        "passthrough.cpp",
    ],
@@ -92,10 +62,10 @@ cc_library_static {

cc_test {
    name: "fiemap_writer_test",
    defaults: ["libfiemap_defaults"],
    static_libs: [
        "libbase",
        "libdm",
        "libfs_mgr",
        "liblog",
    ],

@@ -112,7 +82,6 @@ cc_test {

cc_test {
    name: "fiemap_image_test",
    defaults: ["libfiemap_defaults"],
    static_libs: [
        "libdm",
        "libext4_utils",
@@ -120,6 +89,7 @@ cc_test {
        "liblp",
    ],
    shared_libs: [
        "libbase",
        "libcrypto",
        "libcrypto_utils",
        "libcutils",
+9 −9
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ cc_defaults {
    static_libs: [
        "libcutils",
        "libdm",
        "libfs_mgr",
        "libfstab",
        "liblp",
        "update_metadata-protos",
@@ -93,8 +92,8 @@ cc_library_static {
        "libsnapshot_hal_deps",
    ],
    srcs: [":libsnapshot_sources"],
    whole_static_libs: [
        "libfiemap_binder",
    static_libs: [
        "libfs_mgr_binder"
    ],
}

@@ -103,8 +102,8 @@ cc_library_static {
    defaults: ["libsnapshot_defaults"],
    srcs: [":libsnapshot_sources"],
    recovery_available: true,
    whole_static_libs: [
        "libfiemap_passthrough",
    static_libs: [
        "libfs_mgr",
    ],
}

@@ -116,8 +115,8 @@ cc_library_static {
    ],
    srcs: [":libsnapshot_sources"],
    recovery_available: true,
    whole_static_libs: [
        "libfiemap_passthrough",
    static_libs: [
        "libfs_mgr",
    ],
}

@@ -144,6 +143,7 @@ cc_library_static {
        "libstorage_literals_headers",
    ],
    static_libs: [
        "libfs_mgr",
        "libgtest",
        "libgmock",
    ],
@@ -170,6 +170,7 @@ cc_test {
        "android.hardware.boot@1.1",
        "libfs_mgr",
        "libgmock",
        "libgsi",
        "liblp",
        "libsnapshot",
        "libsnapshot_test_helpers",
@@ -189,7 +190,6 @@ cc_binary {
    static_libs: [
        "libdm",
        "libext2_uuid",
        "libfiemap_binder",
        "libfstab",
        "libsnapshot",
    ],
@@ -200,7 +200,7 @@ cc_binary {
        "libbinder",
        "libbinderthreadstate",
        "libext4_utils",
        "libfs_mgr",
        "libfs_mgr_binder",
        "libhidlbase",
        "liblog",
        "liblp",