From 4ffea81903296f6a0d6715efd704dfa23429b225 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 fa707cf..082bc36 100644 --- a/device.mk +++ b/device.mk @@ -249,7 +249,7 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk) # Suspend PRODUCT_PACKAGES += \ - suspend_blocker_rpi + com.android.hardware.suspend_blocker.rpi4 # Thermal PRODUCT_PACKAGES += \ diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts index 8677e22..a0d3ac3 100644 --- a/sepolicy/file_contexts +++ b/sepolicy/file_contexts @@ -38,8 +38,5 @@ /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 - # V4L2 /vendor/bin/hw/android\.hardware\.media\.c2@1\.2-service-v4l2(.*)? u:object_r:mediacodec_exec:s0 diff --git a/suspend_blocker/Android.bp b/suspend_blocker/Android.bp index cc7dfe2..09c1546 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.rpi4", + 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..fb515f3 --- /dev/null +++ b/suspend_blocker/apex_manifest.json @@ -0,0 +1,4 @@ +{ + "name": "com.android.hardware.suspend_blocker.rpi4", + "version": 1 +} diff --git a/suspend_blocker/suspend_blocker_rpi.rc b/suspend_blocker/suspend_blocker_rpi.rc index 29fee65..0ac0c0b 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.rpi4/bin/suspend_blocker_rpi + class hal group system user root