├── BoardConfig.mk ├── README.md ├── compatibility_matrix.xml ├── config.mk ├── extract-files.sh ├── mslgrootfs ├── Android.mk ├── losetup.sh ├── start-rootfs.sh └── tar-rootfs.sh ├── mslgservice ├── Android.mk └── mslgservice.rc ├── proprietary-files.txt ├── sepolicy ├── attributes ├── file_contexts ├── hal_mslgkeeper.te ├── hwservice_contexts ├── init.te ├── mslg_app.te ├── mslg_init.te ├── mslg_rootfs_file.te ├── mslgd.te ├── platform_app.te ├── property.te ├── property_contexts ├── seapp_contexts ├── system_app.te ├── system_server.te ├── untrusted_app_30.te └── vendor_init.te └── setup-makefiles.sh /BoardConfig.mk: -------------------------------------------------------------------------------- 1 | # HIDL 2 | DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE += device/xiaomi/wps/compatibility_matrix.xml 3 | 4 | # Sepolicy 5 | BOARD_VENDOR_SEPOLICY_DIRS += device/xiaomi/wps/sepolicy 6 | 7 | # Inherit the proprietary files 8 | include vendor/xiaomi/wps/BoardConfigVendor.mk 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### How to use? 2 | 3 | 1. Clone this repo to `device/xiaomi/wps` 4 | 5 | 2. Inherit it from `device.mk` in device tree: 6 | 7 | ``` 8 | $(call inherit-product-if-exists, device/xiaomi/wps/config.mk) 9 | ``` 10 | 11 | 3. Inherit it from `BoardConfig.mk` in device tree: 12 | 13 | ``` 14 | include device/xiaomi/wps/BoardConfig.mk 15 | ``` 16 | -------------------------------------------------------------------------------- /compatibility_matrix.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | vendor.xiaomi.mslg.keeper 4 | 1.0 5 | 6 | IMSLgKeeper 7 | default 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /config.mk: -------------------------------------------------------------------------------- 1 | # Namespace 2 | PRODUCT_SOONG_NAMESPACES += \ 3 | device/xiaomi/wps 4 | 5 | # EXT2 UUID 6 | PRODUCT_PACKAGES += \ 7 | libext2_uuid.vendor 8 | 9 | # MSLgRootfs 10 | PRODUCT_PACKAGES += \ 11 | losetup.sh \ 12 | start-rootfs.sh \ 13 | tar-rootfs.sh 14 | 15 | # MSLgService 16 | PRODUCT_PACKAGES += \ 17 | mslgservice.rc 18 | 19 | # Properties 20 | PRODUCT_VENDOR_PROPERTIES += \ 21 | ro.vendor.mslg.rootfs.version=rootfs-23.09.12.tgz \ 22 | sys.mslg.available=1 23 | 24 | # Inherit the proprietary files 25 | $(call inherit-product, vendor/xiaomi/wps/wps-vendor.mk) 26 | -------------------------------------------------------------------------------- /extract-files.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (C) 2016 The CyanogenMod Project 4 | # Copyright (C) 2017-2020 The LineageOS Project 5 | # 6 | # SPDX-License-Identifier: Apache-2.0 7 | # 8 | 9 | set -e 10 | 11 | DEVICE=wps 12 | VENDOR=xiaomi 13 | 14 | # Load extract_utils and do some sanity checks 15 | MY_DIR="${BASH_SOURCE%/*}" 16 | if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi 17 | 18 | ANDROID_ROOT="${MY_DIR}/../../.." 19 | 20 | HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh" 21 | if [ ! -f "${HELPER}" ]; then 22 | echo "Unable to find helper script at ${HELPER}" 23 | exit 1 24 | fi 25 | source "${HELPER}" 26 | 27 | # Default to sanitizing the vendor folder before extraction 28 | CLEAN_VENDOR=true 29 | 30 | KANG= 31 | SECTION= 32 | 33 | while [ "${#}" -gt 0 ]; do 34 | case "${1}" in 35 | -n | --no-cleanup ) 36 | CLEAN_VENDOR=false 37 | ;; 38 | -k | --kang ) 39 | KANG="--kang" 40 | ;; 41 | -s | --section ) 42 | SECTION="${2}"; shift 43 | CLEAN_VENDOR=false 44 | ;; 45 | * ) 46 | SRC="${1}" 47 | ;; 48 | esac 49 | shift 50 | done 51 | 52 | if [ -z "${SRC}" ]; then 53 | SRC="adb" 54 | fi 55 | 56 | # Initialize the helper 57 | setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}" 58 | 59 | extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}" 60 | 61 | "${MY_DIR}/setup-makefiles.sh" 62 | -------------------------------------------------------------------------------- /mslgrootfs/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | 3 | include $(CLEAR_VARS) 4 | LOCAL_MODULE := losetup.sh 5 | LOCAL_MODULE_CLASS := ETC 6 | LOCAL_MODULE_TAGS := optional 7 | LOCAL_SRC_FILES := losetup.sh 8 | LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) 9 | include $(BUILD_PREBUILT) 10 | 11 | include $(CLEAR_VARS) 12 | LOCAL_MODULE := start-rootfs.sh 13 | LOCAL_MODULE_CLASS := ETC 14 | LOCAL_MODULE_TAGS := optional 15 | LOCAL_SRC_FILES := start-rootfs.sh 16 | LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) 17 | include $(BUILD_PREBUILT) 18 | 19 | include $(CLEAR_VARS) 20 | LOCAL_MODULE := tar-rootfs.sh 21 | LOCAL_MODULE_CLASS := ETC 22 | LOCAL_MODULE_TAGS := optional 23 | LOCAL_SRC_FILES := tar-rootfs.sh 24 | LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) 25 | include $(BUILD_PREBUILT) 26 | -------------------------------------------------------------------------------- /mslgrootfs/losetup.sh: -------------------------------------------------------------------------------- 1 | #! /vendor/bin/sh 2 | optimg=$(getprop vendor.mslg.mslgoptimg) 3 | if [[ $optimg == "/dev/block/loop"* ]]; then 4 | echo "has already losetup, nothing to do" 5 | exit 1 6 | else 7 | optimgloop=`losetup -f` 8 | 9 | while [[ $optimgloop != "/dev/block/loop"* ]] 10 | do 11 | sleep 1 12 | optimgloop=`losetup -f` 13 | done 14 | 15 | losetup -r $optimgloop /vendor/etc/assets/mslgoptimg 16 | setprop vendor.mslg.mslgoptimg $optimgloop 17 | 18 | usrimgloop=`losetup -f` 19 | while [[ $usrimgloop != "/dev/block/loop"* ]] 20 | do 21 | sleep 1 22 | usrimgloop=`losetup -f` 23 | done 24 | 25 | losetup -r $usrimgloop /vendor/etc/assets/mslgusrimg 26 | setprop vendor.mslg.mslgusrimg $usrimgloop 27 | 28 | fi 29 | -------------------------------------------------------------------------------- /mslgrootfs/start-rootfs.sh: -------------------------------------------------------------------------------- 1 | #! /vendor/bin/sh 2 | rm -rf /data/vendor/mslg/rootfs/home/xiaomi/core 3 | export TMPDIR=/dev/msl/rdp 4 | /vendor/bin/chroot /data/vendor/mslg/rootfs /bin/su - root <