From 367dbf3ac1712923520ba91d0a279671179a93fa Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Thu, 21 Sep 2023 21:08:18 +0900 Subject: [PATCH] Add apex_defaults for consumerir HAL APEX The IR HAL APEX can be defined by inheriting the default one. Note that HAL in APEX can't load a legacy libhardware module from /vendor/lib/hw. Instead, it tries to load the hardware module from the APEX. Hence, the APEX inheriting this should embed it along with the HAL binary. Bug: 300011390 Test: ConsumerIrTest VtsHalIrTargetTest hal_implementation_test Change-Id: I14ab4a7e52195f630aa394f74a3f2852f6007ecc --- ir/aidl/default/Android.bp | 52 ++++++++++++++++++- .../android.hardware.ir-service.example.rc | 2 +- ir/aidl/default/apex_file_contexts | 3 ++ ir/aidl/default/apex_manifest.json | 4 ++ 4 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 ir/aidl/default/apex_file_contexts create mode 100644 ir/aidl/default/apex_manifest.json diff --git a/ir/aidl/default/Android.bp b/ir/aidl/default/Android.bp index a8096c2758..4006554cd2 100644 --- a/ir/aidl/default/Android.bp +++ b/ir/aidl/default/Android.bp @@ -36,8 +36,58 @@ cc_binary { "liblog", "libutils", "android.hardware.ir-V1-ndk", - "libhardware" + "libhardware", ], srcs: ["main.cpp"], } + +prebuilt_etc { + name: "android.hardware.ir-service.example.rc", + src: ":gen-android.hardware.ir-service.example.rc", + installable: false, +} + +genrule { + name: "gen-android.hardware.ir-service.example.rc", + srcs: ["android.hardware.ir-service.example.rc"], + out: ["android.hardware.ir-service.example.apex.rc"], + cmd: "sed -e 's@/vendor/bin/@/apex/com.android.hardware.ir/bin/@' $(in) > $(out)", +} + +prebuilt_etc { + name: "android.hardware.ir-service.example.xml", + src: "android.hardware.ir-service.example.xml", + sub_dir: "vintf", + installable: false, +} + +filegroup { + name: "com.android.hardware.ir_file_contexts", + srcs: ["apex_file_contexts"], +} + +filegroup { + name: "com.android.hardware.ir_apex_manifest.json", + srcs: ["apex_manifest.json"], +} + +apex_defaults { + name: "com.android.hardware.ir", + // Reference to the filegroup instead of direct path since + // paths in defaults don't work in a different directory. + file_contexts: ":com.android.hardware.ir_file_contexts", + manifest: ":com.android.hardware.ir_apex_manifest.json", + + updatable: false, + vendor: true, + + binaries: [ + "android.hardware.ir-service.example", + ], + prebuilts: [ + "android.hardware.ir-service.example.rc", + "android.hardware.ir-service.example.xml", + "android.hardware.consumerir.prebuilt.xml", // feature + ], +} diff --git a/ir/aidl/default/android.hardware.ir-service.example.rc b/ir/aidl/default/android.hardware.ir-service.example.rc index d27f282471..1a721daf5c 100644 --- a/ir/aidl/default/android.hardware.ir-service.example.rc +++ b/ir/aidl/default/android.hardware.ir-service.example.rc @@ -1,4 +1,4 @@ -service vendor.ir-default /vendor/bin/hw/android.hardware.ir-service.example +service vendor.ir-default /apex/com.android.hardware.ir/bin/hw/android.hardware.ir-service.example class hal user system group system diff --git a/ir/aidl/default/apex_file_contexts b/ir/aidl/default/apex_file_contexts new file mode 100644 index 0000000000..3bbf131d2d --- /dev/null +++ b/ir/aidl/default/apex_file_contexts @@ -0,0 +1,3 @@ +(/.*)? u:object_r:vendor_file:s0 +/etc(/.*)? u:object_r:vendor_configs_file:s0 +/bin/hw/android\.hardware\.ir-service\.example u:object_r:hal_ir_default_exec:s0 diff --git a/ir/aidl/default/apex_manifest.json b/ir/aidl/default/apex_manifest.json new file mode 100644 index 0000000000..d384375433 --- /dev/null +++ b/ir/aidl/default/apex_manifest.json @@ -0,0 +1,4 @@ +{ + "name": "com.android.hardware.ir", + "version": 1 +} \ No newline at end of file