Add TWRP flags to enable logd and/or logcat in recovery

Developers and device maintainers may find it useful to have access
to logcat in recovery. This patch set adds the following build flags:

TARGET_USES_LOGD - This is an Android build flag that enables logd
support. Devices that don't have built in kernel logging to dev/log/*
will need this flag for logcat. We'll also use this to include the
necessary support files for logd in TWRP.

TWRP_INCLUDE_LOGCAT - This enables logcat support in recovery.

I pulled the init entries from my HTC One M8 GPE boot.img,
so I'm not certain whether these will work for all devices
or if they're all necessary.

Feedback is welcome.

PS2: Use "TARGET_USES_LOGD" instead as this flag already exists, and
previous flag was named incorrectly (logd isn't kernel logging)

PS3: Start logd service on load_persist_props action, needed for 6.0+

PS4: More info on "TARGET_USES_LOGD" flag as related to liblog
compilation can be found at the below links:

https://android.googlesource.com/platform/system/core/+/android-6.0.1_r10/liblog/Android.mk#27
https://android.googlesource.com/platform/system/core/+/android-6.0.1_r10/liblog/Android.mk#50

Whether or not this flag is needed for logcat in TWRP is dependent
on whether liblog was compiled with this flag.

PS5: Update commit message to better describe "TARGET_USES_LOGD" flag

PS6: Another commit message update

Change-Id: Iaac6c6c822dc93fbe4b6eadcf24eef6995dd6b50
This commit is contained in:
Captain Throwback
2016-01-19 17:30:20 -05:00
committed by Dees Troy
parent ed974bb87a
commit 1f12775707
5 changed files with 62 additions and 3 deletions
+6
View File
@@ -425,6 +425,12 @@ endif
ifneq ($(TW_EXCLUDE_DEFAULT_USB_INIT), true)
LOCAL_ADDITIONAL_DEPENDENCIES += init.recovery.usb.rc
endif
ifeq ($(TARGET_USES_LOGD), true)
LOCAL_ADDITIONAL_DEPENDENCIES += logd libsysutils libnl init.recovery.logd.rc
endif
ifeq ($(TWRP_INCLUDE_LOGCAT), true)
LOCAL_ADDITIONAL_DEPENDENCIES += logcat
endif
# Allow devices to specify device-specific recovery dependencies
ifneq ($(TARGET_RECOVERY_DEVICE_MODULES),)
LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_RECOVERY_DEVICE_MODULES)
+19 -2
View File
@@ -12,10 +12,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
ifneq ($(TW_EXCLUDE_DEFAULT_USB_INIT), true)
LOCAL_PATH := $(call my-dir)
ifneq ($(TW_EXCLUDE_DEFAULT_USB_INIT), true)
include $(CLEAR_VARS)
LOCAL_MODULE := init.recovery.usb.rc
LOCAL_MODULE_TAGS := eng
@@ -30,3 +30,20 @@ LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
endif
ifeq ($(TARGET_USES_LOGD), true)
include $(CLEAR_VARS)
LOCAL_MODULE := init.recovery.logd.rc
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
# Cannot send to TARGET_RECOVERY_ROOT_OUT since build system wipes init*.rc
# during ramdisk creation and only allows init.recovery.*.rc files to be copied
# from TARGET_ROOT_OUT thereafter
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
endif
+1
View File
@@ -1,3 +1,4 @@
import /init.recovery.logd.rc
import /init.recovery.usb.rc
import /init.recovery.${ro.hardware}.rc
+28
View File
@@ -0,0 +1,28 @@
on load_all_props_action
start logd
start logd-reinit
on load_persist_props_action
start logd
start logd-reinit
on post-fs
start logd
on post-fs-data
start logd
on property:vold.decrypt=trigger_load_persist_props
start logd
start logd-reinit
service logd /sbin/logd
class core
socket logd stream 0666 logd logd
socket logdr seqpacket 0666 logd logd
socket logdw dgram 0222 logd logd
group root system
service logd-reinit /sbin/logd --reinit
oneshot
disabled
+8 -1
View File
@@ -216,7 +216,14 @@ ifeq ($(BOARD_HAS_NO_REAL_SDCARD),)
RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/sgdisk
endif
endif
ifeq ($(TARGET_USES_LOGD), true)
RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/logd
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libsysutils.so
RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libnl.so
endif
ifeq ($(TWRP_INCLUDE_LOGCAT), true)
RELINK_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/logcat
endif
TWRP_AUTOGEN := $(intermediates)/teamwin
GEN := $(intermediates)/teamwin