From 64ede7b44ca9f2473b0795066303c5e822d56bb1 Mon Sep 17 00:00:00 2001 From: Klines Jiang Date: Mon, 5 Feb 2024 06:46:43 +0000 Subject: [PATCH] [Gyotaku] Add the dumpLog for gyotaku app Pixel 5a (barbet) does not support Pixel dump, we need to exclude build Pixel dump for Pixel 5a (barbet) Bug: 310110649 Test: Local build and trigger a new bugreport the result passed Change-Id: Idb712b2b3830f42de21be9942be547d7fcdd929f --- gyotaku_app/dump/Android.bp | 20 ++++++++++++++++++ gyotaku_app/dump/dump_gyotaku.cpp | 35 +++++++++++++++++++++++++++++++ gyotaku_app/dump/dump_gyotaku.te | 11 ++++++++++ gyotaku_app/dump/file.te | 5 +++++ gyotaku_app/dump/file_contexts | 4 ++++ gyotaku_app/gyotaku.mk | 6 ++++++ 6 files changed, 81 insertions(+) create mode 100644 gyotaku_app/dump/Android.bp create mode 100644 gyotaku_app/dump/dump_gyotaku.cpp create mode 100644 gyotaku_app/dump/dump_gyotaku.te create mode 100644 gyotaku_app/dump/file.te create mode 100644 gyotaku_app/dump/file_contexts diff --git a/gyotaku_app/dump/Android.bp b/gyotaku_app/dump/Android.bp new file mode 100644 index 0000000..0f62d0a --- /dev/null +++ b/gyotaku_app/dump/Android.bp @@ -0,0 +1,20 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_binary { + name: "dump_gyotaku", + srcs: ["dump_gyotaku.cpp"], + cflags: [ + "-Wall", + "-Wextra", + "-Werror", + ], + shared_libs: [ + "libbase", + "libdump", + "liblog", + ], + vendor: true, + relative_install_path: "dump", +} diff --git a/gyotaku_app/dump/dump_gyotaku.cpp b/gyotaku_app/dump/dump_gyotaku.cpp new file mode 100644 index 0000000..62c2a57 --- /dev/null +++ b/gyotaku_app/dump/dump_gyotaku.cpp @@ -0,0 +1,35 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include +#include + +#define GYOTAKU_DIRECTORY "/data/vendor/gyotaku/andlog" +#define GYOTAKU_ANDROID_LOG_PREFIX "android_" + +#define maxFileLogsNumber 30 + +int main() { + std::string outputDir = concatenatePath(BUGREPORT_PACKING_DIR, "gyotaku"); + if (mkdir(outputDir.c_str(), 0700) == -1) { + printf("Unable to create folder: %s\n", outputDir.c_str()); + return 0; + } + + dumpLogs(GYOTAKU_DIRECTORY, outputDir.c_str(), maxFileLogsNumber, GYOTAKU_ANDROID_LOG_PREFIX); + return 0; +} + diff --git a/gyotaku_app/dump/dump_gyotaku.te b/gyotaku_app/dump/dump_gyotaku.te new file mode 100644 index 0000000..8c1727f --- /dev/null +++ b/gyotaku_app/dump/dump_gyotaku.te @@ -0,0 +1,11 @@ +pixel_bugreport(dump_gyotaku) + +userdebug_or_eng(` + # For access and collecting logs into vendor radio type folder. + allow dump_gyotaku radio_vendor_data_file:dir create_dir_perms; + allow dump_gyotaku radio_vendor_data_file:file create_file_perms; + + # For access /data/vendor/ folder. + allow dump_gyotaku gyotaku_vendor_data_file:dir create_dir_perms; + allow dump_gyotaku gyotaku_vendor_data_file:file create_file_perms; +') diff --git a/gyotaku_app/dump/file.te b/gyotaku_app/dump/file.te new file mode 100644 index 0000000..8035955 --- /dev/null +++ b/gyotaku_app/dump/file.te @@ -0,0 +1,5 @@ +# For /data/vendor use +type gyotaku_vendor_data_file, file_type, data_file_type; +userdebug_or_eng(` + typeattribute gyotaku_vendor_data_file mlstrustedobject; +') diff --git a/gyotaku_app/dump/file_contexts b/gyotaku_app/dump/file_contexts new file mode 100644 index 0000000..3a16a00 --- /dev/null +++ b/gyotaku_app/dump/file_contexts @@ -0,0 +1,4 @@ +/data/vendor/gyotaku(/.*)? u:object_r:gyotaku_vendor_data_file:s0 + +# Pixel dump for Gyotaku +/vendor/bin/dump/dump_gyotaku u:object_r:dump_gyotaku_exec:s0 diff --git a/gyotaku_app/gyotaku.mk b/gyotaku_app/gyotaku.mk index fa58556..c6c41d5 100644 --- a/gyotaku_app/gyotaku.mk +++ b/gyotaku_app/gyotaku.mk @@ -4,5 +4,11 @@ ifneq ($(TARGET_BUILD_VARIANT), user) Gyotaku BOARD_SEPOLICY_DIRS += device/google/gs-common/gyotaku_app/sepolicy/ + + # Pixel 5a (barbet) does not support Pixel dump + ifneq ($(TARGET_PRODUCT), barbet) + PRODUCT_PACKAGES_DEBUG += dump_gyotaku + BOARD_SEPOLICY_DIRS += device/google/gs-common/gyotaku_app/dump + endif endif endif