You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
335 lines
7.3 KiB
335 lines
7.3 KiB
tidy_errors = [ |
|
"performance-faster-string-find", |
|
"performance-for-range-copy", |
|
"performance-implicit-conversion-in-loop", |
|
"performance-move-const-arg", |
|
"performance-move-constructor-init", |
|
"performance-noexcept-move-constructor", |
|
"performance-unnecessary-value-param", |
|
] |
|
|
|
cc_defaults { |
|
name: "apex_flags_defaults", |
|
cflags: [ |
|
"-Wall", |
|
"-Wextra", |
|
"-Werror", |
|
"-Wno-unused-parameter", |
|
|
|
// Some extra flags. |
|
"-fstrict-aliasing", |
|
"-Wredundant-decls", |
|
"-Wshadow", |
|
"-Wstrict-aliasing", |
|
"-Wthread-safety", |
|
"-Wthread-safety-negative", |
|
"-Wunreachable-code", |
|
"-Wunreachable-code-break", |
|
"-Wunreachable-code-return", |
|
"-Wunused", |
|
"-Wused-but-marked-unused", |
|
], |
|
tidy: true, |
|
tidy_checks: tidy_errors, |
|
tidy_checks_as_errors: tidy_errors, |
|
tidy_flags: [ |
|
"-format-style='file'", |
|
"--header-filter='system/apex/'", |
|
], |
|
} |
|
|
|
|
|
cc_defaults { |
|
name: "apex_defaults", |
|
defaults: ["apex_flags_defaults"], |
|
shared_libs: [ |
|
"libbase", |
|
"libcrypto", |
|
"libjsoncpp", |
|
"libprotobuf-cpp-full", |
|
"libziparchive", |
|
"libcutils", |
|
], |
|
static_libs: [ |
|
"lib_apex_session_state_proto", |
|
"lib_apex_manifest_proto", |
|
], |
|
static: { |
|
whole_static_libs: ["libc++fs"], |
|
}, |
|
shared: { |
|
static_libs: ["libc++fs"], |
|
}, |
|
} |
|
|
|
aidl_interface { |
|
name: "apex_aidl_interface", |
|
srcs: [ |
|
"aidl/android/apex/ApexInfo.aidl", |
|
"aidl/android/apex/ApexInfoList.aidl", |
|
"aidl/android/apex/ApexSessionInfo.aidl", |
|
"aidl/android/apex/IApexService.aidl", |
|
], |
|
local_include_dir: "aidl", |
|
backend: { |
|
java: { |
|
sdk_version: "28", |
|
}, |
|
ndk: { |
|
enabled: false, |
|
}, |
|
}, |
|
} |
|
|
|
cc_binary { |
|
name: "apexd", |
|
defaults: [ |
|
"apex_defaults", |
|
"libapexservice-deps", |
|
], |
|
srcs: [ |
|
"apexd_main.cpp", |
|
], |
|
static_libs: [ |
|
"libapex", |
|
"libapexd", |
|
"libapexd_checkpoint_vold", |
|
"libapexservice", |
|
"libavb", |
|
"libdm", |
|
"libvold_binder", |
|
], |
|
shared_libs: [ |
|
"libselinux", |
|
], |
|
init_rc: ["apexd.rc"], |
|
// Just like the init, apexd should be able to run without |
|
// any APEX activated. To do so, it uses the bootstrap linker |
|
// and the bootstrap bionic libraries. |
|
bootstrap: true, |
|
target: { |
|
android: { |
|
ldflags: ["-Wl,--rpath,/system/${LIB}/bootstrap"], |
|
}, |
|
}, |
|
} |
|
|
|
cc_library_static { |
|
name: "libapexd", |
|
defaults: ["apex_defaults"], |
|
srcs: [ |
|
"apex_database.cpp", |
|
"apexd.cpp", |
|
"apexd_loop.cpp", |
|
"apexd_prepostinstall.cpp", |
|
"apexd_private.cpp", |
|
"apexd_prop.cpp", |
|
"apexd_session.cpp" |
|
], |
|
static_libs: [ |
|
"libapex", |
|
"libavb", |
|
"libdm", |
|
], |
|
whole_static_libs: ["com.android.sysprop.apex"], |
|
shared_libs: [ |
|
"libselinux", |
|
], |
|
export_include_dirs: ["."], |
|
} |
|
|
|
cc_library_static { |
|
name: "libapexd_checkpoint_vold", |
|
defaults: ["apex_defaults"], |
|
srcs: [ "apexd_checkpoint_vold.cpp" ], |
|
static_libs: [ |
|
"libbase", |
|
"libutils", |
|
"libvold_binder", |
|
], |
|
export_include_dirs: ["."], |
|
} |
|
|
|
cc_defaults { |
|
name: "libapexservice-deps", |
|
shared_libs: [ |
|
"apex_aidl_interface-cpp", |
|
"libbinder", |
|
"libutils", |
|
], |
|
} |
|
cc_library_static { |
|
name: "libapexservice", |
|
defaults: [ |
|
"apex_defaults", |
|
"libapexservice-deps", |
|
], |
|
srcs: ["apexservice.cpp"], |
|
static_libs: ["libapexd"], |
|
} |
|
|
|
cc_library_static { |
|
name: "libapex", |
|
defaults: ["apex_defaults"], |
|
srcs: [ |
|
"apex_file.cpp", |
|
"apex_key.cpp", |
|
"apex_manifest.cpp", |
|
"apex_shim.cpp", |
|
], |
|
static_libs: ["libavb"], |
|
host_supported: true, |
|
target: { |
|
darwin: { |
|
enabled: false, |
|
}, |
|
}, |
|
header_libs: [ |
|
"libutils_headers", |
|
], |
|
export_header_lib_headers: [ |
|
"libutils_headers", |
|
], |
|
product_variables: { |
|
debuggable: { |
|
cflags: ["-DDEBUG_ALLOW_BUNDLED_KEY"], |
|
}, |
|
}, |
|
} |
|
|
|
cc_test { |
|
name: "apex_database_test", |
|
defaults: ["apex_defaults"], |
|
srcs: ["apex_database_test.cpp"], |
|
host_supported: true, |
|
target: { |
|
darwin: { |
|
enabled: false, |
|
}, |
|
}, |
|
shared_libs: ["libbase"], |
|
test_suites: ["device-tests"], |
|
} |
|
|
|
cc_test { |
|
name: "apex_file_test", |
|
defaults: ["apex_defaults"], |
|
data: [ |
|
":apex.apexd_test", |
|
":apex.apexd_test_no_inst_key", |
|
"apexd_testdata/com.android.apex.test_package.avbpubkey", |
|
], |
|
srcs: [ |
|
"apex_file_test.cpp", |
|
], |
|
host_supported: true, |
|
target: { |
|
darwin: { |
|
enabled: false, |
|
}, |
|
}, |
|
static_libs: [ |
|
"libapex", |
|
"libavb", |
|
], |
|
shared_libs: ["libziparchive"], |
|
test_suites: ["device-tests"], |
|
} |
|
|
|
cc_test { |
|
name: "apex_manifest_test", |
|
defaults: ["apex_defaults"], |
|
srcs: [ |
|
"apex_manifest_test.cpp", |
|
], |
|
host_supported: true, |
|
target: { |
|
darwin: { |
|
enabled: false, |
|
}, |
|
}, |
|
static_libs: [ |
|
"libapex", |
|
"libavb", |
|
], |
|
test_suites: ["device-tests"], |
|
} |
|
|
|
genrule { |
|
// Generates an apex which has a different manifest outside the filesystem |
|
// image. |
|
name: "gen_bad_apexes", |
|
out: ["apex.apexd_test_manifest_mismatch.apex"], |
|
srcs: [":apex.apexd_test"], |
|
tools: ["soong_zip", "zipalign"], |
|
cmd: "unzip -q $(in) -d $(genDir) && " + |
|
"sed -i -e 's/\"version\": 1/\"version\": 137/' $(genDir)/apex_manifest.json && " + |
|
"$(location soong_zip) -d -C $(genDir) -D $(genDir) " + |
|
"-s apex_manifest.json -s apex_payload.img -s apex_pubkey " + |
|
"-o $(genDir)/unaligned.apex && " + |
|
"$(location zipalign) -f 4096 $(genDir)/unaligned.apex " + |
|
"$(genDir)/apex.apexd_test_manifest_mismatch.apex" |
|
} |
|
|
|
genrule { |
|
// Generates an apex with a corrupted filesystem image, which should cause |
|
// dm-verity verification to fail |
|
name: "gen_corrupt_apex", |
|
out: ["apex.apexd_test_corrupt_apex.apex"], |
|
srcs: [":apex.apexd_test"], |
|
tools: ["soong_zip", "zipalign"], |
|
cmd: "unzip -q $(in) -d $(genDir) && " + |
|
"dd if=/dev/zero of=$(genDir)/apex_payload.img conv=notrunc bs=1024 seek=16 count=1 && " + |
|
"$(location soong_zip) -d -C $(genDir) -D $(genDir) " + |
|
"-s apex_manifest.json -s apex_payload.img -s apex_pubkey " + |
|
"-o $(genDir)/unaligned.apex && " + |
|
"$(location zipalign) -f 4096 $(genDir)/unaligned.apex " + |
|
"$(genDir)/apex.apexd_test_corrupt_apex.apex" |
|
} |
|
|
|
cc_test { |
|
name: "apexservice_test", |
|
defaults: ["apex_defaults"], |
|
cflags: [ |
|
// Otherwise libgmock won't compile. |
|
"-Wno-used-but-marked-unused", |
|
], |
|
data: [ |
|
":apex.apexd_test", |
|
":apex.apexd_test_different_app", |
|
":apex.apexd_test_v2", |
|
":apex.apexd_test_no_inst_key", |
|
":apex.apexd_test_preinstall", |
|
":apex.apexd_test_postinstall", |
|
":apex.apexd_test_prepostinstall.fail", |
|
":gen_bad_apexes", |
|
":gen_corrupt_apex", |
|
":com.android.apex.cts.shim.v1_prebuilt", |
|
":com.android.apex.cts.shim.v2_prebuilt", |
|
":com.android.apex.cts.shim.v2_wrong_sha_prebuilt", |
|
":com.android.apex.cts.shim.v2_additional_file_prebuilt", |
|
":com.android.apex.cts.shim.v2_additional_folder_prebuilt", |
|
":com.android.apex.cts.shim.v2_with_pre_install_hook_prebuilt", |
|
":com.android.apex.cts.shim.v2_with_post_install_hook_prebuilt", |
|
], |
|
srcs: ["apexservice_test.cpp"], |
|
host_supported: false, |
|
compile_multilib: "first", |
|
static_libs: [ |
|
"apex_aidl_interface-cpp", |
|
"libapex", |
|
"libapexd", |
|
"libavb", |
|
"libdm", |
|
"libgmock", |
|
"libvold_binder", |
|
], |
|
shared_libs: [ |
|
"libbinder", |
|
"libselinux", |
|
"libutils", |
|
], |
|
test_suites: ["device-tests"], |
|
test_config: "apexservice_test_config.xml", |
|
} |
|
|
|
|