From e1d92d2183c6085a3fa808f91dbc062c1e101d54 Mon Sep 17 00:00:00 2001 From: Konsta Date: Wed, 19 Mar 2025 12:59:47 +0200 Subject: [PATCH] suspend_blocker: convert to apex * Start the service later at 'class hal' to avoid making this into bootstrap APEX. 'class early_hal' is started on trigger 'on late-fs' which is too early for vendor APEX. --- device.mk | 2 +- sepolicy/file_contexts | 3 --- suspend_blocker/Android.bp | 23 ++++++++++++++++++++++- suspend_blocker/apex_file_contexts | 3 +++ suspend_blocker/apex_manifest.json | 4 ++++ suspend_blocker/suspend_blocker_rpi.rc | 4 ++-- 6 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 suspend_blocker/apex_file_contexts create mode 100644 suspend_blocker/apex_manifest.json diff --git a/device.mk b/device.mk index 4f5008e..11629df 100644 --- a/device.mk +++ b/device.mk @@ -248,7 +248,7 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk) # Suspend PRODUCT_PACKAGES += \ - suspend_blocker_rpi + com.android.hardware.suspend_blocker.rpi5 # Thermal PRODUCT_PACKAGES += \ diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 1a07e66..07691f0 100644 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -39,6 +39,3 @@ /dev/block/mmcblk0p2 u:object_r:system_block_device:s0 /dev/block/mmcblk0p3 u:object_r:system_block_device:s0 /dev/block/mmcblk0p4 u:object_r:userdata_block_device:s0 - -# Suspend -/vendor/bin/suspend_blocker_rpi u:object_r:suspend_blocker_exec:s0 diff --git a/suspend_blocker/Android.bp b/suspend_blocker/Android.bp index cc7dfe2..b8c11ee 100644 --- a/suspend_blocker/Android.bp +++ b/suspend_blocker/Android.bp @@ -5,8 +5,29 @@ cc_binary { name: "suspend_blocker_rpi", - init_rc: ["suspend_blocker_rpi.rc"], vendor: true, srcs: ["suspend_blocker_rpi.cpp"], shared_libs: ["libpower"], + installable: false, +} + +prebuilt_etc { + name: "suspend_blocker_rpi.rc", + src: "suspend_blocker_rpi.rc", + installable: false, +} + +apex { + name: "com.android.hardware.suspend_blocker.rpi5", + manifest: "apex_manifest.json", + file_contexts: "apex_file_contexts", + key: "com.android.hardware.key", + certificate: ":com.android.hardware.certificate", + updatable: false, + vendor: true, + + binaries: ["suspend_blocker_rpi"], + prebuilts: [ + "suspend_blocker_rpi.rc", + ], } diff --git a/suspend_blocker/apex_file_contexts b/suspend_blocker/apex_file_contexts new file mode 100644 index 0000000..30fa31c --- /dev/null +++ b/suspend_blocker/apex_file_contexts @@ -0,0 +1,3 @@ +(/.*)? u:object_r:vendor_file:s0 +/etc(/.*)? u:object_r:vendor_configs_file:s0 +/bin/suspend_blocker_rpi u:object_r:suspend_blocker_exec:s0 diff --git a/suspend_blocker/apex_manifest.json b/suspend_blocker/apex_manifest.json new file mode 100644 index 0000000..ae99189 --- /dev/null +++ b/suspend_blocker/apex_manifest.json @@ -0,0 +1,4 @@ +{ + "name": "com.android.hardware.suspend_blocker.rpi5", + "version": 1 +} diff --git a/suspend_blocker/suspend_blocker_rpi.rc b/suspend_blocker/suspend_blocker_rpi.rc index 29fee65..a0969d5 100644 --- a/suspend_blocker/suspend_blocker_rpi.rc +++ b/suspend_blocker/suspend_blocker_rpi.rc @@ -1,4 +1,4 @@ -service suspend_blocker_rpi /vendor/bin/suspend_blocker_rpi - class early_hal # Start together with system_suspend HAL +service suspend_blocker_rpi /apex/com.android.hardware.suspend_blocker.rpi5/bin/suspend_blocker_rpi + class hal group system user root