├── .github └── dependabot.yml ├── .gitignore ├── README.md ├── aospdtgen ├── __init__.py ├── __main__.py ├── device_tree.py ├── main.py ├── proprietary_files │ ├── elf.py │ ├── get_vndk_libs.py │ ├── ignore.py │ ├── proprietary_files_list.py │ ├── section.py │ └── sections │ │ ├── acdb.py │ │ ├── adsp.py │ │ ├── alarm.py │ │ ├── ant.py │ │ ├── atrace.py │ │ ├── audio.py │ │ ├── authsecret.py │ │ ├── automotive.py │ │ ├── bluetooth.py │ │ ├── boot.py │ │ ├── broadcastradio.py │ │ ├── camera.py │ │ ├── cas.py │ │ ├── cdsp.py │ │ ├── cit.py │ │ ├── cne.py │ │ ├── configstore.py │ │ ├── confirmationui.py │ │ ├── contexthub.py │ │ ├── cvp.py │ │ ├── display.py │ │ ├── dpm.py │ │ ├── drm.py │ │ ├── dsp.py │ │ ├── dumpstate.py │ │ ├── face.py │ │ ├── fastboot.py │ │ ├── fingerprint.py │ │ ├── fm.py │ │ ├── gatekeeper.py │ │ ├── gnss.py │ │ ├── health.py │ │ ├── identity.py │ │ ├── input.py │ │ ├── ipa.py │ │ ├── ir.py │ │ ├── keymaster.py │ │ ├── light.py │ │ ├── local_time.py │ │ ├── media.py │ │ ├── neuralnetworks.py │ │ ├── nfc.py │ │ ├── nvram.py │ │ ├── oemlock.py │ │ ├── pasr.py │ │ ├── payment.py │ │ ├── perf.py │ │ ├── power.py │ │ ├── qcc.py │ │ ├── qesd.py │ │ ├── qspm.py │ │ ├── qvr.py │ │ ├── qxr.py │ │ ├── radio.py │ │ ├── rebootescrow.py │ │ ├── renderscript.py │ │ ├── secure_element.py │ │ ├── security.py │ │ ├── sensors.py │ │ ├── servicetracker.py │ │ ├── sla.py │ │ ├── soter.py │ │ ├── soundtrigger.py │ │ ├── storage.py │ │ ├── tetheroffload.py │ │ ├── thermal.py │ │ ├── time.py │ │ ├── touch.py │ │ ├── trusted_ui.py │ │ ├── tv.py │ │ ├── usb.py │ │ ├── uwb.py │ │ ├── vibrator.py │ │ ├── vr.py │ │ ├── weaver.py │ │ ├── wifi.py │ │ └── wifidisplay.py ├── templates │ ├── Android.bp.jinja2 │ ├── Android.mk.jinja2 │ ├── AndroidProducts.mk.jinja2 │ ├── BoardConfig.mk.jinja2 │ ├── LICENSE.jinja2 │ ├── README.md.jinja2 │ ├── __init__.py │ ├── device.mk.jinja2 │ ├── extract-files.sh.jinja2 │ ├── lineage_device.mk.jinja2 │ ├── rootdir_Android.bp.jinja2 │ ├── rootdir_Android.mk.jinja2 │ └── setup-makefiles.sh.jinja2 └── utils │ ├── boot_configuration.py │ ├── format_props.py │ └── ignored_props.py ├── poetry.lock └── pyproject.toml /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "pip" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "daily" 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 105 | __pypackages__/ 106 | 107 | # Celery stuff 108 | celerybeat-schedule 109 | celerybeat.pid 110 | 111 | # SageMath parsed files 112 | *.sage.py 113 | 114 | # Environments 115 | .env 116 | .venv 117 | env/ 118 | venv/ 119 | ENV/ 120 | env.bak/ 121 | venv.bak/ 122 | 123 | # Spyder project settings 124 | .spyderproject 125 | .spyproject 126 | 127 | # Rope project settings 128 | .ropeproject 129 | 130 | # mkdocs documentation 131 | /site 132 | 133 | # mypy 134 | .mypy_cache/ 135 | .dmypy.json 136 | dmypy.json 137 | 138 | # Pyre type checker 139 | .pyre/ 140 | 141 | # pytype static type analyzer 142 | .pytype/ 143 | 144 | # Cython debug symbols 145 | cython_debug/ 146 | 147 | # PyCharm 148 | # JetBrains specific template is maintainted in a separate JetBrains.gitignore that can 149 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 150 | # and can be added to the global gitignore or merged into this file. For a more nuclear 151 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 152 | #.idea/ 153 | 154 | # Visual Studio Code 155 | .vscode/ 156 | 157 | # aospdtgen rules 158 | 159 | # Allow lib directory 160 | !/aospdtgen/lib/ 161 | 162 | # Ignore output folder 163 | /output 164 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # aospdtgen 2 | 3 | [![PyPI version](https://img.shields.io/pypi/v/aospdtgen)](https://pypi.org/project/aospdtgen/) 4 | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/0ec14174bf9840458f27062444b1e375)](https://www.codacy.com/gh/sebaubuntu-python/aospdtgen/dashboard?utm_source=github.com&utm_medium=referral&utm_content=sebaubuntu-python/aospdtgen&utm_campaign=Badge_Grade) 5 | 6 | Create a [LineageOS](https://github.com/LineageOS)-compatible device tree from an Android stock ROM dump (made with [dumpyara](https://github.com/SebaUbuntu/dumpyara)). 7 | This script supports any Android firmware from a Treble-enabled device (Higher than Android 8.0 and with VNDK enabled, you can check it with [Treble Info](https://play.google.com/store/apps/details?id=tk.hack5.treblecheck) or with `adb shell getprop ro.treble.enabled`). 8 | For pre-Treble devices please use [twrpdtgen](https://github.com/twrpdtgen/twrpdtgen). 9 | 10 | Requires Python 3.8 or greater 11 | 12 | ## Installation 13 | 14 | ```sh 15 | pip3 install aospdtgen 16 | ``` 17 | 18 | ## Instructions 19 | 20 | ``` 21 | $ python3 -m aospdtgen -h 22 | Android device tree generator 23 | Version 0.1.0 24 | 25 | usage: python3 -m aospdtgen [-h] [-o OUTPUT] dump_path 26 | 27 | positional arguments: 28 | dump_path path to an Android dump made with dumpyara 29 | 30 | optional arguments: 31 | -h, --help show this help message and exit 32 | -o OUTPUT, --output OUTPUT 33 | custom output folder 34 | ``` 35 | 36 | ## License 37 | 38 | ``` 39 | # 40 | # Copyright (C) 2022 The LineageOS Project 41 | # 42 | # SPDX-License-Identifier: Apache-2.0 43 | # 44 | ``` 45 | -------------------------------------------------------------------------------- /aospdtgen/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | """aospdtgen module.""" 7 | 8 | from pathlib import Path 9 | 10 | from aospdtgen.proprietary_files.section import register_sections 11 | 12 | __version__ = "1.1.1" 13 | 14 | module_path = Path(__file__).parent 15 | sections_path = module_path / "proprietary_files" / "sections" 16 | current_path = Path.cwd() 17 | 18 | register_sections(sections_path) 19 | -------------------------------------------------------------------------------- /aospdtgen/__main__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # 3 | # Copyright (C) 2022 The LineageOS Project 4 | # 5 | # SPDX-License-Identifier: Apache-2.0 6 | # 7 | 8 | from aospdtgen.main import main 9 | 10 | if __name__ == '__main__': 11 | main() 12 | -------------------------------------------------------------------------------- /aospdtgen/device_tree.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from datetime import datetime 8 | from os import chmod 9 | from pathlib import Path 10 | from sebaubuntu_libs.libandroid.device_info import DeviceInfo 11 | from sebaubuntu_libs.libandroid.fstab import Fstab 12 | from sebaubuntu_libs.libandroid.partitions.partitions import Partitions 13 | from sebaubuntu_libs.libandroid.props import BuildProp 14 | from sebaubuntu_libs.liblogging import LOGI 15 | from sebaubuntu_libs.libpath import is_relative_to 16 | from sebaubuntu_libs.libreorder import strcoll_files_key 17 | from shutil import rmtree 18 | from stat import S_IRWXU, S_IRGRP, S_IROTH 19 | 20 | from aospdtgen.proprietary_files.proprietary_files_list import ProprietaryFilesList 21 | from aospdtgen.templates import render_template 22 | from aospdtgen.utils.boot_configuration import BootConfiguration 23 | from aospdtgen.utils.format_props import dump_partition_build_prop 24 | 25 | class DeviceTree: 26 | """Class representing an Android device tree.""" 27 | def __init__(self, path: Path): 28 | """Given a path to a dumpyara dump path, generate a device tree by parsing it.""" 29 | self.path = path 30 | 31 | self.current_year = str(datetime.now().year) 32 | 33 | LOGI("Figuring out partitions scheme") 34 | self.partitions = Partitions(self.path) 35 | 36 | self.system = self.partitions.system 37 | self.vendor = self.partitions.vendor 38 | 39 | LOGI("Parsing build props and device info") 40 | self.build_prop = BuildProp() 41 | for partition in self.partitions.get_all_partitions(): 42 | self.build_prop.import_props(partition.build_prop) 43 | self.device_info = DeviceInfo(self.build_prop) 44 | 45 | LOGI("Parsing fstab") 46 | fstabs = [ 47 | file for file in self.vendor.files 48 | if (is_relative_to(file.relative_to(self.vendor.path), "etc") 49 | and file.name.startswith("fstab.")) 50 | ] 51 | assert fstabs, "No fstab found" 52 | fstab = fstabs[0] 53 | self.fstab = Fstab(fstab) 54 | 55 | # Let the partitions know their fstab entries if any 56 | for partition in self.partitions.get_all_partitions(): 57 | partition.fill_fstab_entry(self.fstab) 58 | 59 | LOGI("Extracting boot image") 60 | self.boot_configuration = BootConfiguration(self.path) 61 | 62 | LOGI("Getting list of rootdir files") 63 | self.rootdir_bin_files = [file for file in self.vendor.files 64 | if is_relative_to(file.relative_to(self.vendor.path), "bin") 65 | and file.suffix == ".sh"] 66 | self.rootdir_bin_files.sort(key=strcoll_files_key) 67 | 68 | self.rootdir_etc_files = [file for file in self.vendor.files 69 | if is_relative_to(file.relative_to(self.vendor.path), "etc/init/hw")] 70 | self.rootdir_etc_files.sort(key=strcoll_files_key) 71 | 72 | recovery_resources_location = (self.boot_configuration.recovery_aik_manager.ramdisk_path 73 | if self.boot_configuration.recovery_aik_manager 74 | else self.boot_configuration.boot_aik_manager.ramdisk_path) 75 | self.rootdir_recovery_etc_files = [file for file in recovery_resources_location.iterdir() 76 | if is_relative_to(file.relative_to(recovery_resources_location), ".") 77 | and file.suffix == ".rc"] 78 | self.rootdir_recovery_etc_files.sort(key=strcoll_files_key) 79 | 80 | LOGI("Generating proprietary files list") 81 | self.proprietary_files_list = ProprietaryFilesList( 82 | [value for value in self.partitions.get_all_partitions()] 83 | ) 84 | 85 | def dump_to_folder(self, folder: Path): 86 | """Dump all makefiles, blueprint and prebuilts to a folder.""" 87 | if folder.is_dir(): 88 | rmtree(folder) 89 | folder.mkdir(parents=True) 90 | 91 | # Makefiles/blueprints 92 | self._render_template(folder, "Android.bp", comment_prefix="//") 93 | self._render_template(folder, "Android.mk") 94 | self._render_template(folder, "AndroidProducts.mk") 95 | self._render_template(folder, "BoardConfig.mk") 96 | self._render_template(folder, "device.mk") 97 | self._render_template(folder, "extract-files.sh") 98 | self._render_template(folder, "lineage_device.mk", out_file=f"lineage_{self.device_info.codename}.mk") 99 | self._render_template(folder, "README.md") 100 | self._render_template(folder, "setup-makefiles.sh") 101 | 102 | # Set permissions 103 | chmod(folder / "extract-files.sh", S_IRWXU | S_IRGRP | S_IROTH) 104 | chmod(folder / "setup-makefiles.sh", S_IRWXU | S_IRGRP | S_IROTH) 105 | 106 | # Proprietary files list 107 | (folder / "proprietary-files.txt").write_text( 108 | self.proprietary_files_list.get_formatted_list(self.device_info.build_description)) 109 | 110 | # Dump build props 111 | for partition in self.partitions.get_all_partitions(): 112 | dump_partition_build_prop(partition.build_prop, folder / f"{partition.model.name}.prop") 113 | 114 | # Dump boot image prebuilt files 115 | prebuilts_path = folder / "prebuilts" 116 | prebuilts_path.mkdir() 117 | 118 | self.boot_configuration.copy_files_to_folder(prebuilts_path) 119 | 120 | # Dump rootdir 121 | rootdir_path = folder / "rootdir" 122 | rootdir_path.mkdir() 123 | 124 | self._render_template(rootdir_path, "rootdir_Android.bp", "Android.bp", comment_prefix="//") 125 | self._render_template(rootdir_path, "rootdir_Android.mk", "Android.mk") 126 | 127 | # rootdir/bin 128 | rootdir_bin_path = rootdir_path / "bin" 129 | rootdir_bin_path.mkdir() 130 | 131 | for file in self.rootdir_bin_files: 132 | (rootdir_bin_path / file.name).write_bytes(file.read_bytes()) 133 | 134 | # rootdir/etc 135 | rootdir_etc_path = rootdir_path / "etc" 136 | rootdir_etc_path.mkdir() 137 | 138 | for file in self.rootdir_etc_files + self.rootdir_recovery_etc_files: 139 | (rootdir_etc_path / file.name).write_bytes(file.read_bytes()) 140 | 141 | (rootdir_etc_path / self.fstab.fstab.name).write_text(self.fstab.format()) 142 | 143 | # Manifest 144 | (folder / "manifest.xml").write_text(str(self.vendor.manifest)) 145 | 146 | def cleanup(self) -> None: 147 | """ 148 | Cleanup all the temporary files. 149 | 150 | After you call this, you should throw away this object and never use it anymore. 151 | """ 152 | self.boot_configuration.cleanup() 153 | 154 | def _render_template(self, *args, comment_prefix: str = "#", **kwargs): 155 | return render_template( 156 | *args, 157 | boot_configuration=self.boot_configuration, 158 | comment_prefix=comment_prefix, 159 | current_year=self.current_year, 160 | device_info=self.device_info, 161 | fstab=self.fstab, 162 | rootdir_bin_files=self.rootdir_bin_files, 163 | rootdir_etc_files=self.rootdir_etc_files, 164 | rootdir_recovery_etc_files=self.rootdir_recovery_etc_files, 165 | partitions=self.partitions, 166 | **kwargs, 167 | ) 168 | -------------------------------------------------------------------------------- /aospdtgen/main.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from argparse import ArgumentParser 8 | from pathlib import Path 9 | from sebaubuntu_libs.liblocale import setup_locale 10 | from sebaubuntu_libs.liblogging import setup_logging 11 | 12 | from aospdtgen import __version__ as version, current_path 13 | from aospdtgen.device_tree import DeviceTree 14 | 15 | def main(): 16 | setup_logging() 17 | 18 | print(f"Android device tree generator\n" 19 | f"Version {version}\n") 20 | 21 | parser = ArgumentParser(prog='python3 -m aospdtgen') 22 | parser.add_argument("dump_path", type=Path, 23 | help="path to an Android dump made with dumpyara") 24 | parser.add_argument("-o", "--output", type=Path, default=current_path / "output", 25 | help="custom output folder") 26 | 27 | args = parser.parse_args() 28 | 29 | setup_locale() 30 | 31 | dump = DeviceTree(args.dump_path) 32 | dump.dump_to_folder(args.output) 33 | dump.cleanup() 34 | 35 | print(f"\nDone! You can find the device tree in {str(args.output)}") 36 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/elf.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from pathlib import Path 8 | from typing import List 9 | 10 | def get_shared_libs(files: List[Path]): 11 | for lib in files: 12 | if not lib.suffix == ".so": 13 | continue 14 | 15 | yield lib 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/get_vndk_libs.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from base64 import b64decode 8 | from typing import List, Set 9 | from requests import get 10 | 11 | from aospdtgen.proprietary_files.ignore import IGNORE_SHARED_LIBS 12 | 13 | ARCHS = [ 14 | "arm", 15 | "arm64", 16 | "x86", 17 | "x86_64", 18 | ] 19 | 20 | FIRST_VNDK_VERSION = 29 21 | 22 | # VNDK version, architecture, file name 23 | FROZEN_VNDK_LIST_URL = "https://android.googlesource.com/platform/prebuilts/vndk/v{}/+/main/{}/configs/{}?format=TEXT" 24 | 25 | # VNDK version 26 | GSI_VNDK_LIST_URL = "https://android.googlesource.com/platform/build/+/main/target/product/gsi/{}.txt?format=TEXT" 27 | 28 | def get_vndk_file_names(vndk_version: int) -> List[str]: 29 | return [ 30 | "llndk.libraries.txt", 31 | f"vndkcore.libraries.{vndk_version}.txt", 32 | f"vndkprivate.libraries.{vndk_version}.txt", 33 | "vndkproduct.libraries.txt", 34 | "vndksp.libraries.txt", 35 | ] 36 | 37 | def main(): 38 | libs: Set[str] = set() 39 | 40 | # Add the currently known shared libraries 41 | libs.update(IGNORE_SHARED_LIBS) 42 | 43 | current_vndk_version = FIRST_VNDK_VERSION 44 | while True: 45 | print(f"Fetching VNDK libraries for version {current_vndk_version}") 46 | 47 | found_something = False 48 | 49 | # Get the GSI VNDK list 50 | response = get(GSI_VNDK_LIST_URL.format(current_vndk_version)) 51 | if response.ok: 52 | found_something = True 53 | 54 | # We only need the library name 55 | for line in b64decode(response.content).decode("ascii").splitlines(): 56 | lib = line.split()[-1] 57 | libs.add(lib) 58 | 59 | # Now get the VNDK list for each architecture 60 | for arch in ARCHS: 61 | for file in get_vndk_file_names(current_vndk_version): 62 | response = get(FROZEN_VNDK_LIST_URL.format(current_vndk_version, arch, file)) 63 | if response.ok: 64 | found_something = True 65 | 66 | for line in b64decode(response.content).decode("ascii").splitlines(): 67 | libs.add(line) 68 | 69 | if not found_something: 70 | if current_vndk_version == FIRST_VNDK_VERSION: 71 | raise Exception( 72 | "Failed to fetch the GSI VNDK list for" 73 | f" version {current_vndk_version}, Google dropped it?" 74 | ) 75 | 76 | print(f"Failed to fetch the VNDK list for version {current_vndk_version}, stopping") 77 | 78 | break 79 | 80 | current_vndk_version += 1 81 | 82 | # Print the list of libraries 83 | print( 84 | "\n".join( 85 | f'"{lib}",' 86 | for lib in sorted(libs) 87 | ) 88 | ) 89 | 90 | main() 91 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/ignore.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from pathlib import Path 8 | import re 9 | from sebaubuntu_libs.libstring import removeprefix 10 | 11 | IGNORE_BINARIES = [ 12 | "awk", # https://cs.android.com/android/platform/superproject/main/+/main:external/one-true-awk/Android.bp 13 | "logwrapper", # https://cs.android.com/android/platform/superproject/main/+/main:system/logging/logwrapper/Android.bp 14 | "newfs_msdos", # https://cs.android.com/android/platform/superproject/main/+/main:external/newfs_msdos/Android.bp 15 | "sh", 16 | "vndservice", # https://cs.android.com/android/platform/superproject/main/+/main:frameworks/native/cmds/service/Android.bp 17 | "vndservicemanager", # https://cs.android.com/android/platform/superproject/main/+/main:frameworks/native/cmds/servicemanager/Android.bp 18 | ] + [ 19 | # toolbox 20 | "toolbox", 21 | "toolbox_vendor", 22 | ] + [ 23 | # toolbox symlinks 24 | # https://cs.android.com/android/platform/superproject/main/+/main:system/core/toolbox/Android.bp 25 | "getevent", 26 | "getprop", 27 | "modprobe", 28 | "setprop", 29 | "start", 30 | "stop", 31 | ] + [ 32 | # toybox 33 | "toybox", 34 | "toybox_vendor", 35 | ] + [ 36 | # toybox symlinks 37 | # https://cs.android.com/android/platform/superproject/main/+/main:external/toybox/Android.bp 38 | "[", 39 | "acpi", 40 | "base64", 41 | "basename", 42 | "blockdev", 43 | "brctl", 44 | "cal", 45 | "cat", 46 | "chattr", 47 | "chcon", 48 | "chgrp", 49 | "chmod", 50 | "chown", 51 | "chroot", 52 | "chrt", 53 | "cksum", 54 | "clear", 55 | "cmp", 56 | "comm", 57 | "cp", 58 | "cpio", 59 | "cut", 60 | "date", 61 | "dd", 62 | "devmem", 63 | "df", 64 | "diff", 65 | "dirname", 66 | "dmesg", 67 | "dos2unix", 68 | "du", 69 | "echo", 70 | "egrep", 71 | "env", 72 | "expand", 73 | "expr", 74 | "fallocate", 75 | "false", 76 | "fgrep", 77 | "file", 78 | "find", 79 | "flock", 80 | "fmt", 81 | "free", 82 | "fsync", 83 | "getconf", 84 | "getenforce", 85 | "gpiodetect", 86 | "gpiofind", 87 | "gpioget", 88 | "gpioinfo", 89 | "gpioset", 90 | "grep", 91 | "groups", 92 | "gunzip", 93 | "gzip", 94 | "head", 95 | "hostname", 96 | "hwclock", 97 | "i2cdetect", 98 | "i2cdump", 99 | "i2cget", 100 | "i2cset", 101 | "i2ctransfer", 102 | "iconv", 103 | "id", 104 | "ifconfig", 105 | "inotifyd", 106 | "insmod", 107 | "install", 108 | "ionice", 109 | "iorenice", 110 | "kill", 111 | "killall", 112 | "ln", 113 | "load_policy", 114 | "log", 115 | "logger", 116 | "logname", 117 | "losetup", 118 | "ls", 119 | "lsattr", 120 | "lsmod", 121 | "lsof", 122 | "lspci", 123 | "lsusb", 124 | "md5sum", 125 | "memeater", 126 | "microcom", 127 | "mkdir", 128 | "mkfifo", 129 | "mknod", 130 | "mkswap", 131 | "mktemp", 132 | "modinfo", 133 | "more", 134 | "mount", 135 | "mountpoint", 136 | "mv", 137 | "nc", 138 | "netcat", 139 | "netstat", 140 | "nice", 141 | "nl", 142 | "nohup", 143 | "nproc", 144 | "nsenter", 145 | "od", 146 | "paste", 147 | "patch", 148 | "pgrep", 149 | "pidof", 150 | "pkill", 151 | "pmap", 152 | "printenv", 153 | "printf", 154 | "ps", 155 | "pwd", 156 | "readelf", 157 | "readlink", 158 | "realpath", 159 | "renice", 160 | "restorecon", 161 | "rm", 162 | "rmdir", 163 | "rmmod", 164 | "rtcwake", 165 | "runcon", 166 | "sed", 167 | "sendevent", 168 | "seq", 169 | "setenforce", 170 | "setsid", 171 | "sha1sum", 172 | "sha224sum", 173 | "sha256sum", 174 | "sha384sum", 175 | "sha512sum", 176 | "sleep", 177 | "sort", 178 | "split", 179 | "stat", 180 | "strings", 181 | "stty", 182 | "swapoff", 183 | "swapon", 184 | "sync", 185 | "sysctl", 186 | "tac", 187 | "tail", 188 | "tar", 189 | "taskset", 190 | "tee", 191 | "test", 192 | "time", 193 | "timeout", 194 | "top", 195 | "touch", 196 | "tr", 197 | "true", 198 | "truncate", 199 | "tty", 200 | "uclampset", 201 | "ulimit", 202 | "umount", 203 | "uname", 204 | "uniq", 205 | "unix2dos", 206 | "unlink", 207 | "unshare", 208 | "uptime", 209 | "usleep", 210 | "uudecode", 211 | "uuencode", 212 | "uuidgen", 213 | "vi", 214 | "vmstat", 215 | "watch", 216 | "wc", 217 | "which", 218 | "whoami", 219 | "xargs", 220 | "xxd", 221 | "yes", 222 | "zcat", 223 | ] 224 | 225 | """ 226 | Use get_vndk_libs.py to update this list 227 | """ 228 | IGNORE_SHARED_LIBS = [ 229 | "android.frameworks.automotive.display@1.0.so", 230 | "android.frameworks.cameraservice.common-V1-ndk.so", 231 | "android.frameworks.cameraservice.common@2.0.so", 232 | "android.frameworks.cameraservice.device-V1-ndk.so", 233 | "android.frameworks.cameraservice.device@2.0.so", 234 | "android.frameworks.cameraservice.service-V1-ndk.so", 235 | "android.frameworks.cameraservice.service@2.0.so", 236 | "android.frameworks.cameraservice.service@2.1.so", 237 | "android.frameworks.displayservice@1.0.so", 238 | "android.frameworks.schedulerservice@1.0.so", 239 | "android.frameworks.sensorservice@1.0.so", 240 | "android.frameworks.stats@1.0.so", 241 | "android.frameworks.vr.composer@1.0.so", 242 | "android.hardware.atrace@1.0.so", 243 | "android.hardware.audio.common-V1-ndk.so", 244 | "android.hardware.audio.common@2.0.so", 245 | "android.hardware.audio.common@4.0.so", 246 | "android.hardware.audio.common@5.0.so", 247 | "android.hardware.audio.common@6.0.so", 248 | "android.hardware.audio.effect@2.0.so", 249 | "android.hardware.audio.effect@4.0.so", 250 | "android.hardware.audio.effect@5.0.so", 251 | "android.hardware.audio.effect@6.0.so", 252 | "android.hardware.audio@2.0.so", 253 | "android.hardware.audio@4.0.so", 254 | "android.hardware.audio@5.0.so", 255 | "android.hardware.audio@6.0.so", 256 | "android.hardware.authsecret-V1-ndk.so", 257 | "android.hardware.authsecret-V1-ndk_platform.so", 258 | "android.hardware.authsecret@1.0.so", 259 | "android.hardware.automotive.audiocontrol@1.0.so", 260 | "android.hardware.automotive.audiocontrol@2.0.so", 261 | "android.hardware.automotive.can@1.0.so", 262 | "android.hardware.automotive.evs@1.0.so", 263 | "android.hardware.automotive.evs@1.1.so", 264 | "android.hardware.automotive.occupant_awareness-V1-ndk.so", 265 | "android.hardware.automotive.occupant_awareness-V1-ndk_platform.so", 266 | "android.hardware.automotive.sv@1.0.so", 267 | "android.hardware.automotive.vehicle@2.0.so", 268 | "android.hardware.biometrics.face@1.0.so", 269 | "android.hardware.biometrics.fingerprint@2.1.so", 270 | "android.hardware.biometrics.fingerprint@2.2.so", 271 | "android.hardware.bluetooth.a2dp@1.0.so", 272 | "android.hardware.bluetooth.audio-V2-ndk.so", 273 | "android.hardware.bluetooth.audio@2.0.so", 274 | "android.hardware.bluetooth@1.0.so", 275 | "android.hardware.bluetooth@1.1.so", 276 | "android.hardware.boot@1.0.so", 277 | "android.hardware.boot@1.1.so", 278 | "android.hardware.broadcastradio@1.0.so", 279 | "android.hardware.broadcastradio@1.1.so", 280 | "android.hardware.broadcastradio@2.0.so", 281 | "android.hardware.camera.common-V1-ndk.so", 282 | "android.hardware.camera.common@1.0.so", 283 | "android.hardware.camera.device-V1-ndk.so", 284 | "android.hardware.camera.device@1.0.so", 285 | "android.hardware.camera.device@3.2.so", 286 | "android.hardware.camera.device@3.3.so", 287 | "android.hardware.camera.device@3.4.so", 288 | "android.hardware.camera.device@3.5.so", 289 | "android.hardware.camera.device@3.6.so", 290 | "android.hardware.camera.metadata-V1-ndk.so", 291 | "android.hardware.camera.metadata@3.2.so", 292 | "android.hardware.camera.metadata@3.3.so", 293 | "android.hardware.camera.metadata@3.4.so", 294 | "android.hardware.camera.metadata@3.5.so", 295 | "android.hardware.camera.provider-V1-ndk.so", 296 | "android.hardware.camera.provider@2.4.so", 297 | "android.hardware.camera.provider@2.5.so", 298 | "android.hardware.camera.provider@2.6.so", 299 | "android.hardware.cas.native@1.0.so", 300 | "android.hardware.cas@1.0.so", 301 | "android.hardware.cas@1.1.so", 302 | "android.hardware.cas@1.2.so", 303 | "android.hardware.common-V1-ndk_platform.so", 304 | "android.hardware.common-V2-ndk.so", 305 | "android.hardware.common-V2-ndk_platform.so", 306 | "android.hardware.common.fmq-V1-ndk.so", 307 | "android.hardware.common.fmq-V1-ndk_platform.so", 308 | "android.hardware.configstore-utils.so", 309 | "android.hardware.configstore@1.0.so", 310 | "android.hardware.configstore@1.1.so", 311 | "android.hardware.confirmationui-support-lib.so", 312 | "android.hardware.confirmationui@1.0.so", 313 | "android.hardware.contexthub@1.0.so", 314 | "android.hardware.contexthub@1.1.so", 315 | "android.hardware.drm-V1-ndk.so", 316 | "android.hardware.drm@1.0.so", 317 | "android.hardware.drm@1.1.so", 318 | "android.hardware.drm@1.2.so", 319 | "android.hardware.drm@1.3.so", 320 | "android.hardware.dumpstate-V1-ndk.so", 321 | "android.hardware.dumpstate@1.0.so", 322 | "android.hardware.dumpstate@1.1.so", 323 | "android.hardware.fastboot@1.0.so", 324 | "android.hardware.gatekeeper@1.0.so", 325 | "android.hardware.gnss-V1-ndk_platform.so", 326 | "android.hardware.gnss-V2-ndk.so", 327 | "android.hardware.gnss.measurement_corrections@1.0.so", 328 | "android.hardware.gnss.measurement_corrections@1.1.so", 329 | "android.hardware.gnss.visibility_control@1.0.so", 330 | "android.hardware.gnss@1.0.so", 331 | "android.hardware.gnss@1.1.so", 332 | "android.hardware.gnss@2.0.so", 333 | "android.hardware.gnss@2.1.so", 334 | "android.hardware.graphics.allocator-V1-ndk.so", 335 | "android.hardware.graphics.allocator-V2-ndk.so", 336 | "android.hardware.graphics.allocator@2.0.so", 337 | "android.hardware.graphics.allocator@3.0.so", 338 | "android.hardware.graphics.allocator@4.0.so", 339 | "android.hardware.graphics.bufferqueue@1.0.so", 340 | "android.hardware.graphics.bufferqueue@2.0.so", 341 | "android.hardware.graphics.common-V1-ndk_platform.so", 342 | "android.hardware.graphics.common-V2-ndk_platform.so", 343 | "android.hardware.graphics.common-V3-ndk.so", 344 | "android.hardware.graphics.common-V4-ndk.so", 345 | "android.hardware.graphics.common@1.0.so", 346 | "android.hardware.graphics.common@1.1.so", 347 | "android.hardware.graphics.common@1.2.so", 348 | "android.hardware.graphics.composer3-V1-ndk.so", 349 | "android.hardware.graphics.composer@2.1.so", 350 | "android.hardware.graphics.composer@2.2.so", 351 | "android.hardware.graphics.composer@2.3.so", 352 | "android.hardware.graphics.composer@2.4.so", 353 | "android.hardware.graphics.mapper@2.0.so", 354 | "android.hardware.graphics.mapper@2.1.so", 355 | "android.hardware.graphics.mapper@3.0.so", 356 | "android.hardware.graphics.mapper@4.0.so", 357 | "android.hardware.health-V1-ndk.so", 358 | "android.hardware.health.storage-V1-ndk.so", 359 | "android.hardware.health.storage-V1-ndk_platform.so", 360 | "android.hardware.health.storage@1.0.so", 361 | "android.hardware.health@1.0.so", 362 | "android.hardware.health@2.0.so", 363 | "android.hardware.health@2.1.so", 364 | "android.hardware.identity-V2-ndk_platform.so", 365 | "android.hardware.identity-V3-ndk_platform.so", 366 | "android.hardware.identity-V4-ndk.so", 367 | "android.hardware.input.classifier@1.0.so", 368 | "android.hardware.input.common@1.0.so", 369 | "android.hardware.ir-V1-ndk.so", 370 | "android.hardware.ir@1.0.so", 371 | "android.hardware.keymaster-V2-ndk_platform.so", 372 | "android.hardware.keymaster-V3-ndk.so", 373 | "android.hardware.keymaster-V3-ndk_platform.so", 374 | "android.hardware.keymaster@3.0.so", 375 | "android.hardware.keymaster@4.0.so", 376 | "android.hardware.keymaster@4.1.so", 377 | "android.hardware.light-V1-ndk_platform.so", 378 | "android.hardware.light-V2-ndk.so", 379 | "android.hardware.light@2.0.so", 380 | "android.hardware.media.bufferpool@1.0.so", 381 | "android.hardware.media.bufferpool@2.0.so", 382 | "android.hardware.media.c2@1.0.so", 383 | "android.hardware.media.c2@1.1.so", 384 | "android.hardware.media.omx@1.0.so", 385 | "android.hardware.media@1.0.so", 386 | "android.hardware.memtrack-V1-ndk.so", 387 | "android.hardware.memtrack-V1-ndk_platform.so", 388 | "android.hardware.memtrack@1.0.so", 389 | "android.hardware.neuralnetworks@1.0.so", 390 | "android.hardware.neuralnetworks@1.1.so", 391 | "android.hardware.neuralnetworks@1.2.so", 392 | "android.hardware.neuralnetworks@1.3.so", 393 | "android.hardware.nfc-V1-ndk.so", 394 | "android.hardware.nfc@1.0.so", 395 | "android.hardware.nfc@1.1.so", 396 | "android.hardware.nfc@1.2.so", 397 | "android.hardware.oemlock-V1-ndk.so", 398 | "android.hardware.oemlock-V1-ndk_platform.so", 399 | "android.hardware.oemlock@1.0.so", 400 | "android.hardware.power-V1-ndk_platform.so", 401 | "android.hardware.power-V2-ndk_platform.so", 402 | "android.hardware.power-V3-ndk.so", 403 | "android.hardware.power.stats-V1-ndk.so", 404 | "android.hardware.power.stats-V1-ndk_platform.so", 405 | "android.hardware.power.stats@1.0.so", 406 | "android.hardware.power@1.0.so", 407 | "android.hardware.power@1.1.so", 408 | "android.hardware.power@1.2.so", 409 | "android.hardware.power@1.3.so", 410 | "android.hardware.radio-V1-ndk.so", 411 | "android.hardware.radio.config-V1-ndk.so", 412 | "android.hardware.radio.config@1.0.so", 413 | "android.hardware.radio.config@1.1.so", 414 | "android.hardware.radio.config@1.2.so", 415 | "android.hardware.radio.data-V1-ndk.so", 416 | "android.hardware.radio.deprecated@1.0.so", 417 | "android.hardware.radio.messaging-V1-ndk.so", 418 | "android.hardware.radio.modem-V1-ndk.so", 419 | "android.hardware.radio.network-V1-ndk.so", 420 | "android.hardware.radio.sim-V1-ndk.so", 421 | "android.hardware.radio.voice-V1-ndk.so", 422 | "android.hardware.radio@1.0.so", 423 | "android.hardware.radio@1.1.so", 424 | "android.hardware.radio@1.2.so", 425 | "android.hardware.radio@1.3.so", 426 | "android.hardware.radio@1.4.so", 427 | "android.hardware.radio@1.5.so", 428 | "android.hardware.rebootescrow-V1-ndk.so", 429 | "android.hardware.rebootescrow-V1-ndk_platform.so", 430 | "android.hardware.renderscript@1.0.so", 431 | "android.hardware.secure_element@1.0.so", 432 | "android.hardware.secure_element@1.1.so", 433 | "android.hardware.secure_element@1.2.so", 434 | "android.hardware.security.dice-V1-ndk.so", 435 | "android.hardware.security.keymint-V1-ndk_platform.so", 436 | "android.hardware.security.keymint-V2-ndk.so", 437 | "android.hardware.security.secureclock-V1-ndk.so", 438 | "android.hardware.security.secureclock-V1-ndk_platform.so", 439 | "android.hardware.security.sharedsecret-V1-ndk.so", 440 | "android.hardware.security.sharedsecret-V1-ndk_platform.so", 441 | "android.hardware.sensors-V1-ndk.so", 442 | "android.hardware.sensors@1.0.so", 443 | "android.hardware.sensors@2.0.so", 444 | "android.hardware.sensors@2.1.so", 445 | "android.hardware.soundtrigger3-V1-ndk.so", 446 | "android.hardware.soundtrigger@2.0-core.so", 447 | "android.hardware.soundtrigger@2.0.so", 448 | "android.hardware.soundtrigger@2.1.so", 449 | "android.hardware.soundtrigger@2.2.so", 450 | "android.hardware.soundtrigger@2.3.so", 451 | "android.hardware.tetheroffload.config@1.0.so", 452 | "android.hardware.tetheroffload.control@1.0.so", 453 | "android.hardware.thermal@1.0.so", 454 | "android.hardware.thermal@1.1.so", 455 | "android.hardware.thermal@2.0.so", 456 | "android.hardware.tv.cec@1.0.so", 457 | "android.hardware.tv.cec@2.0.so", 458 | "android.hardware.tv.input@1.0.so", 459 | "android.hardware.tv.tuner@1.0.so", 460 | "android.hardware.usb-V1-ndk.so", 461 | "android.hardware.usb.gadget@1.0.so", 462 | "android.hardware.usb.gadget@1.1.so", 463 | "android.hardware.usb@1.0.so", 464 | "android.hardware.usb@1.1.so", 465 | "android.hardware.usb@1.2.so", 466 | "android.hardware.uwb-V1-ndk.so", 467 | "android.hardware.vibrator-V1-ndk_platform.so", 468 | "android.hardware.vibrator-V2-ndk.so", 469 | "android.hardware.vibrator-V2-ndk_platform.so", 470 | "android.hardware.vibrator@1.0.so", 471 | "android.hardware.vibrator@1.1.so", 472 | "android.hardware.vibrator@1.2.so", 473 | "android.hardware.vibrator@1.3.so", 474 | "android.hardware.vr@1.0.so", 475 | "android.hardware.weaver-V1-ndk.so", 476 | "android.hardware.weaver-V1-ndk_platform.so", 477 | "android.hardware.weaver@1.0.so", 478 | "android.hardware.wifi.hostapd-V1-ndk.so", 479 | "android.hardware.wifi.hostapd@1.0.so", 480 | "android.hardware.wifi.hostapd@1.1.so", 481 | "android.hardware.wifi.hostapd@1.2.so", 482 | "android.hardware.wifi.offload@1.0.so", 483 | "android.hardware.wifi.supplicant-V1-ndk.so", 484 | "android.hardware.wifi.supplicant@1.0.so", 485 | "android.hardware.wifi.supplicant@1.1.so", 486 | "android.hardware.wifi.supplicant@1.2.so", 487 | "android.hardware.wifi.supplicant@1.3.so", 488 | "android.hardware.wifi@1.0.so", 489 | "android.hardware.wifi@1.1.so", 490 | "android.hardware.wifi@1.2.so", 491 | "android.hardware.wifi@1.3.so", 492 | "android.hardware.wifi@1.4.so", 493 | "android.hidl.allocator@1.0.so", 494 | "android.hidl.memory.block@1.0.so", 495 | "android.hidl.memory.token@1.0.so", 496 | "android.hidl.memory@1.0-impl.so", 497 | "android.hidl.memory@1.0.so", 498 | "android.hidl.safe_union@1.0.so", 499 | "android.hidl.token@1.0-utils.so", 500 | "android.hidl.token@1.0.so", 501 | "android.media.audio.common.types-V1-ndk.so", 502 | "android.media.soundtrigger.types-V1-ndk.so", 503 | "android.system.keystore2-V1-ndk_platform.so", 504 | "android.system.keystore2-V2-ndk.so", 505 | "android.system.net.netd@1.0.so", 506 | "android.system.net.netd@1.1.so", 507 | "android.system.suspend-V1-ndk.so", 508 | "android.system.suspend@1.0.so", 509 | "android.system.wifi.keystore@1.0.so", 510 | "audio.a2dp.default.so", 511 | "hidl.tests.vendor@1.0.so", 512 | "hidl.tests.vendor@1.1.so", 513 | "ld-android.so", 514 | "libEGL.so", 515 | "libETC1.so", 516 | "libFFTEm.so", 517 | "libGLESv1_CM.so", 518 | "libGLESv2.so", 519 | "libGLESv3.so", 520 | "libLLVM_android.so", 521 | "libOpenMAXAL.so", 522 | "libOpenSLES.so", 523 | "libRS.so", 524 | "libRSCacheDir.so", 525 | "libRSCpuRef.so", 526 | "libRSDriver.so", 527 | "libRS_internal.so", 528 | "libRScpp.so", 529 | "libaacextractor.so", 530 | "libaaudio.so", 531 | "libaaudioservice.so", 532 | "libadbconnection.so", 533 | "libadbconnectiond.so", 534 | "libadf.so", 535 | "libamrextractor.so", 536 | "libandroid.so", 537 | "libandroid_net.so", 538 | "libandroid_runtime.so", 539 | "libandroid_servers.so", 540 | "libandroidfw.so", 541 | "libappfuse.so", 542 | "libart-compiler.so", 543 | "libart-dexlayout.so", 544 | "libart-disassembler.so", 545 | "libart.so", 546 | "libartd-compiler.so", 547 | "libartd-dexlayout.so", 548 | "libartd.so", 549 | "libasyncio.so", 550 | "libaudioclient.so", 551 | "libaudioeffect_jni.so", 552 | "libaudioflinger.so", 553 | "libaudiohal.so", 554 | "libaudiohal@2.0.so", 555 | "libaudiohal_deathhandler.so", 556 | "libaudiomanager.so", 557 | "libaudiopolicyenginedefault.so", 558 | "libaudiopolicymanager.so", 559 | "libaudiopolicymanagerdefault.so", 560 | "libaudiopolicyservice.so", 561 | "libaudiopreprocessing.so", 562 | "libaudioprocessing.so", 563 | "libaudioroute.so", 564 | "libaudiospdif.so", 565 | "libaudioutils.so", 566 | "libavservices_minijail.so", 567 | "libavservices_minijail_vendor.so", 568 | "libbacktrace.so", 569 | "libbase.so", 570 | "libbcc.so", 571 | "libbcinfo.so", 572 | "libbinder.so", 573 | "libbinder_ndk.so", 574 | "libbinderthreadstate.so", 575 | "libbinderwrapper.so", 576 | "libblas.so", 577 | "libbluetooth-binder.so", 578 | "libbluetooth.so", 579 | "libbluetooth_jni.so", 580 | "libbootanimation.so", 581 | "libbrillo-binder.so", 582 | "libbrillo-stream.so", 583 | "libbrillo.so", 584 | "libbrotli.so", 585 | "libbufferhub.so", 586 | "libbufferhubqueue.so", 587 | "libbufferqueueconverter.so", 588 | "libbundlewrapper.so", 589 | "libbz.so", 590 | "libc++.so", 591 | "libc++_shared.so", 592 | "libc.so", 593 | "libc_malloc_debug.so", 594 | "libcamera2ndk.so", 595 | "libcamera_client.so", 596 | "libcamera_metadata.so", 597 | "libcameraservice.so", 598 | "libcap.so", 599 | "libcgrouprc.so", 600 | "libchrome.so", 601 | "libclang_rt.asan-aarch64-android.so", 602 | "libclang_rt.asan-arm-android.so", 603 | "libclang_rt.asan-i686-android.so", 604 | "libclang_rt.asan-mips-android.so", 605 | "libclang_rt.asan-mips64-android.so", 606 | "libclang_rt.asan-x86_64-android.so", 607 | "libclang_rt.hwasan-aarch64-android.so", 608 | "libclang_rt.scudo-aarch64-android.so", 609 | "libclang_rt.scudo-arm-android.so", 610 | "libclang_rt.scudo-i686-android.so", 611 | "libclang_rt.scudo-x86_64-android.so", 612 | "libclang_rt.scudo_minimal-aarch64-android.so", 613 | "libclang_rt.scudo_minimal-arm-android.so", 614 | "libclang_rt.scudo_minimal-i686-android.so", 615 | "libclang_rt.scudo_minimal-x86_64-android.so", 616 | "libclang_rt.ubsan_minimal-aarch64-android.so", 617 | "libclang_rt.ubsan_minimal-arm-android.so", 618 | "libclang_rt.ubsan_minimal-i686-android.so", 619 | "libclang_rt.ubsan_minimal-x86_64-android.so", 620 | "libclang_rt.ubsan_standalone-aarch64-android.so", 621 | "libclang_rt.ubsan_standalone-arm-android.so", 622 | "libclang_rt.ubsan_standalone-i686-android.so", 623 | "libclang_rt.ubsan_standalone-x86_64-android.so", 624 | "libcld80211.so", 625 | "libcn-cbor.so", 626 | "libcodec2.so", 627 | "libcodec2_hidl@1.0.so", 628 | "libcodec2_vndk.so", 629 | "libcom.android.tethering.connectivity_native.so", 630 | "libcompiler_rt.so", 631 | "libcrypto.so", 632 | "libcrypto_utils.so", 633 | "libcups.so", 634 | "libcurl.so", 635 | "libcutils.so", 636 | "libdebuggerd_client.so", 637 | "libdefcontainer_jni.so", 638 | "libdexfile.so", 639 | "libdiskconfig.so", 640 | "libdisplayservicehidl.so", 641 | "libdl.so", 642 | "libdl_android.so", 643 | "libdmabufheap.so", 644 | "libdng_sdk.so", 645 | "libdownmix.so", 646 | "libdrm.so", 647 | "libdrmframework.so", 648 | "libdrmframework_jni.so", 649 | "libdt_fd_forward.so", 650 | "libdt_socket.so", 651 | "libdumpstateaidl.so", 652 | "libdumpstateutil.so", 653 | "libeffectproxy.so", 654 | "libeffects.so", 655 | "libeffectsconfig.so", 656 | "libevent.so", 657 | "libexif.so", 658 | "libexpat.so", 659 | "libext2_blkid.so", 660 | "libext2_com_err.so", 661 | "libext2_e2p.so", 662 | "libext2_misc.so", 663 | "libext2_quota.so", 664 | "libext2_uuid.so", 665 | "libext2fs.so", 666 | "libext4_utils.so", 667 | "libf2fs_sparseblock.so", 668 | "libfilterfw.so", 669 | "libfilterpack_imageproc.so", 670 | "libflacextractor.so", 671 | "libfmq.so", 672 | "libframesequence.so", 673 | "libft2.so", 674 | "libfwdlockengine.so", 675 | "libgatekeeper.so", 676 | "libgiftranscode.so", 677 | "libgralloctypes.so", 678 | "libgraphicsenv.so", 679 | "libgtest_prod.so", 680 | "libgui.so", 681 | "libgui_vendor.so", 682 | "libhardware.so", 683 | "libhardware_legacy.so", 684 | "libharfbuzz_ng.so", 685 | "libheif.so", 686 | "libhidcommand_jni.so", 687 | "libhidl-gen-hash.so", 688 | "libhidl-gen-utils.so", 689 | "libhidlallocatorutils.so", 690 | "libhidlbase.so", 691 | "libhidlcache.so", 692 | "libhidlmemory.so", 693 | "libhidltransport.so", 694 | "libhwbinder.so", 695 | "libhwbinder_noltopgo.so", 696 | "libhwc2on1adapter.so", 697 | "libhwui.so", 698 | "libicui18n.so", 699 | "libicuuc.so", 700 | "libimg_utils.so", 701 | "libincident.so", 702 | "libinput.so", 703 | "libinputflinger.so", 704 | "libinputservice.so", 705 | "libion.so", 706 | "libiprouteutil.so", 707 | "libjavacore.so", 708 | "libjavacrypto.so", 709 | "libjdwp.so", 710 | "libjni_pacprocessor.so", 711 | "libjnigraphics.so", 712 | "libjpeg.so", 713 | "libjsoncpp.so", 714 | "libkeymaster4support.so", 715 | "libkeymaster_messages.so", 716 | "libkeymaster_portable.so", 717 | "libkeystore-engine.so", 718 | "libkeystore_aidl.so", 719 | "libkeystore_binder.so", 720 | "libkeystore_parcelables.so", 721 | "libkeyutils.so", 722 | "liblayers_proto.so", 723 | "libldacBT_abr.so", 724 | "libldacBT_enc.so", 725 | "libldnhncr.so", 726 | "liblog.so", 727 | "liblogwrap.so", 728 | "liblshal.so", 729 | "liblz4.so", 730 | "liblzma.so", 731 | "libm.so", 732 | "libmdnssd.so", 733 | "libmedia.so", 734 | "libmedia_helper.so", 735 | "libmedia_jni.so", 736 | "libmedia_omx.so", 737 | "libmediadrm.so", 738 | "libmediaextractorservice.so", 739 | "libmedialogservice.so", 740 | "libmediametrics.so", 741 | "libmediandk.so", 742 | "libmediaplayerservice.so", 743 | "libmediautils.so", 744 | "libmemtrack.so", 745 | "libmemunreachable.so", 746 | "libmetricslogger.so", 747 | "libmidiextractor.so", 748 | "libminijail.so", 749 | "libminikin.so", 750 | "libmkbootimg_abi_check.so", 751 | "libmkvextractor.so", 752 | "libmp3extractor.so", 753 | "libmp4extractor.so", 754 | "libmpeg2extractor.so", 755 | "libmtp.so", 756 | "libnativehelper.so", 757 | "libnativewindow.so", 758 | "libnbaio.so", 759 | "libnbaio_mono.so", 760 | "libnblog.so", 761 | "libnetd_client.so", 762 | "libnetdutils.so", 763 | "libnetlink.so", 764 | "libnetutils.so", 765 | "libneuralnetworks.so", 766 | "libnfc-nci.so", 767 | "libnfc_nci_jni.so", 768 | "libnl.so", 769 | "libnpt.so", 770 | "liboggextractor.so", 771 | "libopenjdk.so", 772 | "libopenjdkd.so", 773 | "libopenjdkjvm.so", 774 | "libopenjdkjvmd.so", 775 | "libopenjdkjvmti.so", 776 | "libopenjdkjvmtid.so", 777 | "libopus.so", 778 | "libpackagelistparser.so", 779 | "libpagemap.so", 780 | "libpcap.so", 781 | "libpcre2.so", 782 | "libpcrecpp.so", 783 | "libpdfium.so", 784 | "libpdx_default_transport.so", 785 | "libpiex.so", 786 | "libpixelflinger.so", 787 | "libpng.so", 788 | "libpower.so", 789 | "libpowermanager.so", 790 | "libprintspooler_jni.so", 791 | "libprocessgroup.so", 792 | "libprocinfo.so", 793 | "libprotobuf-cpp-full.so", 794 | "libprotobuf-cpp-lite.so", 795 | "libprotoutil.so", 796 | "libpuresoftkeymasterdevice.so", 797 | "libqtaguid.so", 798 | "libradio_metadata.so", 799 | "libreference-ril.so", 800 | "libresourcemanagerservice.so", 801 | "libreverbwrapper.so", 802 | "libril.so", 803 | "librilutils.so", 804 | "librs_jni.so", 805 | "librtp_jni.so", 806 | "libschedulerservicehidl.so", 807 | "libselinux.so", 808 | "libsensor.so", 809 | "libsensorservice.so", 810 | "libsensorservicehidl.so", 811 | "libsepol.so", 812 | "libservices.so", 813 | "libsigchain.so", 814 | "libsoftkeymasterdevice.so", 815 | "libsonic.so", 816 | "libsonivox.so", 817 | "libsoundpool.so", 818 | "libsoundtrigger.so", 819 | "libsoundtriggerservice.so", 820 | "libsparse.so", 821 | "libspeexresampler.so", 822 | "libsqlite.so", 823 | "libssl.so", 824 | "libstagefright.so", 825 | "libstagefright_amrnb_common.so", 826 | "libstagefright_bufferpool@2.0.so", 827 | "libstagefright_bufferqueue_helper.so", 828 | "libstagefright_enc_common.so", 829 | "libstagefright_flacdec.so", 830 | "libstagefright_foundation.so", 831 | "libstagefright_http_support.so", 832 | "libstagefright_httplive.so", 833 | "libstagefright_omx.so", 834 | "libstagefright_omx_utils.so", 835 | "libstagefright_soft_aacdec.so", 836 | "libstagefright_soft_aacenc.so", 837 | "libstagefright_soft_amrdec.so", 838 | "libstagefright_soft_amrnbenc.so", 839 | "libstagefright_soft_amrwbenc.so", 840 | "libstagefright_soft_avcdec.so", 841 | "libstagefright_soft_avcenc.so", 842 | "libstagefright_soft_flacdec.so", 843 | "libstagefright_soft_flacenc.so", 844 | "libstagefright_soft_g711dec.so", 845 | "libstagefright_soft_gsmdec.so", 846 | "libstagefright_soft_hevcdec.so", 847 | "libstagefright_soft_mp3dec.so", 848 | "libstagefright_soft_mpeg2dec.so", 849 | "libstagefright_soft_mpeg4dec.so", 850 | "libstagefright_soft_mpeg4enc.so", 851 | "libstagefright_soft_opusdec.so", 852 | "libstagefright_soft_rawdec.so", 853 | "libstagefright_soft_vorbisdec.so", 854 | "libstagefright_soft_vpxdec.so", 855 | "libstagefright_soft_vpxenc.so", 856 | "libstagefright_softomx.so", 857 | "libstagefright_xmlparser.so", 858 | "libstatslog.so", 859 | "libstdc++.so", 860 | "libsurfaceflinger.so", 861 | "libsuspend.so", 862 | "libsync.so", 863 | "libsysutils.so", 864 | "libtextclassifier.so", 865 | "libtextclassifier_hash.so", 866 | "libtinyalsa.so", 867 | "libtinycompress.so", 868 | "libtinyxml2.so", 869 | "libtombstoned_client.so", 870 | "libui.so", 871 | "libunwind.so", 872 | "libunwindstack.so", 873 | "libusbhost.so", 874 | "libutils.so", 875 | "libutilscallstack.so", 876 | "libvintf.so", 877 | "libvisualizer.so", 878 | "libvixl-arm.so", 879 | "libvixl-arm64.so", 880 | "libvndksupport.so", 881 | "libvorbisidec.so", 882 | "libvulkan.so", 883 | "libwavextractor.so", 884 | "libwebrtc_audio_preprocessing.so", 885 | "libwebviewchromium_loader.so", 886 | "libwebviewchromium_plat_support.so", 887 | "libwfds.so", 888 | "libwifi-service.so", 889 | "libwifi-system-iface.so", 890 | "libwifi-system.so", 891 | "libwifikeystorehal.so", 892 | "libwilhelm.so", 893 | "libxml2.so", 894 | "libyuv.so", 895 | "libz.so", 896 | "libziparchive.so", 897 | ] 898 | 899 | IGNORE_FILENAMES = [ 900 | # Property files 901 | "build.prop", 902 | "default.prop", 903 | 904 | # config.fs 905 | "fs_config_dirs", 906 | "fs_config_files", 907 | "group", 908 | 909 | # Licenses 910 | "NOTICE.xml.gz", 911 | "NOTICE_GPL.html.gz", 912 | "NOTICE_GPL.xml.gz", 913 | "passwd", 914 | 915 | # Recovery patch 916 | "recovery-from-boot.p", 917 | 918 | # Partition symlinks 919 | "odm", 920 | "product", 921 | "system", 922 | "system_ext", 923 | "vendor", 924 | ] 925 | 926 | IGNORE_EXTENSIONS = [ 927 | # Apps's odex/vdex 928 | "odex", 929 | "vdex", 930 | ] 931 | 932 | IGNORE_FOLDERS = [ 933 | # Hostapd config 934 | "etc/hostapd", 935 | 936 | # Device init scripts 937 | "etc/init/hw", 938 | 939 | # Permissions 940 | "etc/permissions", 941 | 942 | # SELinux 943 | "etc/selinux", 944 | 945 | # Kernel modules 946 | "lib/modules", 947 | 948 | # ADSP tests 949 | "lib/rfsa/adsp/tests", 950 | 951 | # RRO overlays 952 | "overlay", 953 | 954 | # RFS symlinks 955 | "rfs", 956 | ] 957 | 958 | IGNORE_PATHS = [ 959 | # VINTF 960 | "etc/vintf/compatibility_matrix.xml", 961 | "etc/vintf/manifest.xml", 962 | ] 963 | 964 | IGNORE_PATTERNS = [re.compile(pattern) for pattern in [ 965 | # Shell scripts 966 | "bin/.*\\.sh", 967 | 968 | # TODO: Find a cleaner way to exclude AOSP interfaces libs, 969 | # We're currently excluding all AOSP interfaces libs except impl 970 | "^(?!lib(64)?/(hw/)?android\\..*\\..*-impl.so)lib(64)?/(hw/)?android\\..*\\..*.so", 971 | 972 | # Versioned libprotobuf library 973 | "lib(64)?/libprotobuf-cpp-(full|lite)-.*.so", 974 | ]] 975 | 976 | def is_blob_allowed(file: Path) -> bool: 977 | """ 978 | Check if the lib is not in the disallowed list. 979 | """ 980 | if file.name in IGNORE_BINARIES: 981 | return False 982 | 983 | if file.name in IGNORE_SHARED_LIBS: 984 | return False 985 | 986 | if file.name in IGNORE_FILENAMES: 987 | return False 988 | 989 | if removeprefix(file.suffix, '.') in IGNORE_EXTENSIONS: 990 | return False 991 | 992 | for folder in [str(folder) for folder in file.parents]: 993 | if folder in IGNORE_FOLDERS: 994 | return False 995 | 996 | if str(file) in IGNORE_PATHS: 997 | return False 998 | 999 | for pattern in IGNORE_PATTERNS: 1000 | if pattern.match(str(file)): 1001 | return False 1002 | 1003 | return True 1004 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/proprietary_files_list.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from sebaubuntu_libs.libandroid.partitions.partition import AndroidPartition 8 | from sebaubuntu_libs.libandroid.partitions.partition_model import TREBLE 9 | from typing import List, Optional 10 | 11 | from aospdtgen.proprietary_files.ignore import is_blob_allowed 12 | from aospdtgen.proprietary_files.section import Section, sections 13 | 14 | class ProprietaryFilesList: 15 | """Class representing a proprietary files list.""" 16 | def __init__(self, partitions: List[AndroidPartition]): 17 | """Initialize a new ProprietaryFilesList object.""" 18 | self.partitions = partitions 19 | 20 | self.sections = sections 21 | misc_section = Section() 22 | 23 | for partition in self.partitions: 24 | files = [] 25 | 26 | for file in partition.files: 27 | file_relative = file.relative_to(partition.path) 28 | # Filter out ignored files 29 | if is_blob_allowed(file_relative): 30 | files.append(file) 31 | 32 | for section in self.sections: 33 | files = section.add_files(files, partition) 34 | 35 | if partition.model.group != TREBLE: 36 | continue 37 | 38 | misc_section.add_files(files, partition) 39 | 40 | self.sections.append(misc_section) 41 | 42 | def __str__(self) -> str: 43 | return self.get_formatted_list() 44 | 45 | def get_formatted_list(self, build_description: Optional[str] = None) -> str: 46 | result = "" 47 | if build_description: 48 | result += f"# Unpinned blobs from {build_description}\n" 49 | 50 | for section in self.sections: 51 | if not section.files: 52 | continue 53 | 54 | result += (f"\n# {section.name}\n") 55 | result += "\n".join(str(file) for file in section.get_files()) 56 | result += "\n" 57 | 58 | return result 59 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/section.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from importlib import import_module 8 | from pathlib import Path 9 | from pkgutil import iter_modules 10 | from re import match 11 | from sebaubuntu_libs.libandroid.elf.elf import ELF 12 | from sebaubuntu_libs.libandroid.partitions.partition import AndroidPartition 13 | from sebaubuntu_libs.libexception import format_exception 14 | from sebaubuntu_libs.liblogging import LOGE 15 | from sebaubuntu_libs.libpath import is_relative_to 16 | from sebaubuntu_libs.libreorder import strcoll_files_key 17 | from sebaubuntu_libs.libstring import removesuffix 18 | from typing import Dict, List, Type 19 | 20 | from aospdtgen.proprietary_files.elf import get_shared_libs 21 | 22 | class Section: 23 | """Class representing a proprietary files list section.""" 24 | name: str = "Miscellaneous" 25 | """Name of the section""" 26 | interfaces: List[str] = [] 27 | """List of interfaces""" 28 | hardware_modules: List[str] = [] 29 | """List of hardware modules IDs""" 30 | apexes: List[str] = [] 31 | """List of APEXes""" 32 | apps: List[str] = [] 33 | """List of app names""" 34 | binaries: List[str] = [] 35 | """List of binaries/services""" 36 | libraries: List[str] = [] 37 | """List of libraries (omit the .so)""" 38 | filenames: List[str] = [] 39 | """List of exact file names""" 40 | folders: List[str] = [] 41 | """List of folders""" 42 | patterns: List[str] = [] 43 | """List of basic patterns (use regex)""" 44 | properties_prefixes: Dict[str, bool] = {} 45 | """List of properties prefix to whether it's an exact match""" 46 | 47 | def __init__(self): 48 | """Initialize the section.""" 49 | self.files: List[Path] = [] 50 | 51 | def add_files(self, files: List[Path], partition: AndroidPartition): 52 | matched: List[Path] = [] 53 | not_matched: List[Path] = [] 54 | 55 | for file in files: 56 | file_relative = file.relative_to(partition.path) 57 | (matched if self.file_match(file_relative) else not_matched).append(file) 58 | 59 | # Handle shared libs 60 | for file in matched: 61 | file_relative = file.relative_to(partition.path) 62 | # Check only ELFs 63 | if (not is_relative_to(file_relative, "bin") 64 | and not is_relative_to(file_relative, "lib") 65 | and not is_relative_to(file_relative, "lib64")): 66 | continue 67 | 68 | # Add shared libs used by the section ELFs 69 | needed_libs = ELF.get_needed_libs(file) 70 | for lib in needed_libs: 71 | # Skip the lib if it belongs to another section 72 | skip = False 73 | 74 | for interface in known_interfaces: 75 | if match(f"{interface}(@[0-9]+\\.[0-9]+|-).*\\.so", lib): 76 | skip = True 77 | break 78 | 79 | if removesuffix(lib, ".so") in known_libraries: 80 | skip = True 81 | 82 | if skip: 83 | continue 84 | 85 | # Recursively handle shared libs' shared libs as well 86 | unmatched_shared_libs = get_shared_libs(not_matched) 87 | for file in unmatched_shared_libs: 88 | if file.name != lib: 89 | continue 90 | 91 | # Move from unmatched to matched 92 | not_matched.remove(file) 93 | matched.append(file) 94 | 95 | self.files.extend( 96 | partition.model.proprietary_files_prefix / file.relative_to(partition.path) 97 | for file in matched 98 | ) 99 | 100 | return not_matched 101 | 102 | def get_files(self): 103 | """Returns the ordered list of files.""" 104 | self.files.sort(key=strcoll_files_key) 105 | return self.files 106 | 107 | def file_match(self, file: Path): 108 | if self.name == "Miscellaneous": 109 | return True 110 | 111 | # Interfaces 112 | for interface in self.interfaces: 113 | # Service binary (we try) 114 | if is_relative_to(file, "bin") and interface in file.name: 115 | return True 116 | 117 | # Service init script (we try) 118 | if is_relative_to(file, "etc/init") and interface in file.name: 119 | return True 120 | 121 | # VINTF fragment (again, we try) 122 | if is_relative_to(file, "etc/vintf/manifest") and interface in file.name: 123 | return True 124 | 125 | # Passthrough impl (only HIDL) 126 | if (is_relative_to(file, "lib/hw") or is_relative_to(file, "lib64/hw")) and match(f"{interface}@[0-9]+\\.[0-9]+-impl\\.so", file.name): 127 | return True 128 | 129 | # Interface libs (AIDL and HIDL) 130 | if (is_relative_to(file, "lib") or is_relative_to(file, "lib64")) and match(f"{interface}(@[0-9]+\\.[0-9]+|-).*\\.so", file.name): 131 | return True 132 | 133 | # Hardware modules 134 | if is_relative_to(file, "lib/hw") or is_relative_to(file, "lib64/hw"): 135 | for hardware_module in self.hardware_modules: 136 | if file.name.startswith(f"{hardware_module}.") and file.suffix == ".so": 137 | return True 138 | 139 | # APEXes 140 | if is_relative_to(file, "apex") and file.suffix == ".apex" and file.stem in self.apexes: 141 | return True 142 | 143 | # Apps 144 | if is_relative_to(file, "app") or is_relative_to(file, "priv-app"): 145 | if file.suffix == ".apk" and file.stem in self.apps: 146 | return True 147 | 148 | # Binaries 149 | if is_relative_to(file, "bin") and file.name in self.binaries: 150 | return True 151 | 152 | # Init scripts 153 | if is_relative_to(file, "etc/init"): 154 | for binary in self.binaries: 155 | if match(f"(init)?(.)?{binary}\\.rc", file.name): 156 | return True 157 | 158 | # Libraries 159 | if is_relative_to(file, "lib/") or is_relative_to(file, "lib64/"): 160 | if file.suffix == ".so" and file.stem in self.libraries: 161 | return True 162 | 163 | # Filenames 164 | if file.name in self.filenames: 165 | return True 166 | 167 | # Folders 168 | for folder in [str(folder) for folder in file.parents]: 169 | if folder in self.folders: 170 | return True 171 | 172 | # Patterns 173 | if [pattern for pattern in self.patterns if match(pattern, str(file))]: 174 | return True 175 | 176 | return False 177 | 178 | def property_match(self, prop: str): 179 | """Check if the property matches the prefixes.""" 180 | for prefix, exact_match in self.properties_prefixes.items(): 181 | if prop == prefix if exact_match else prop.startswith(prefix): 182 | return True 183 | 184 | return False 185 | 186 | sections: List[Section] = [] 187 | known_interfaces: List[str] = [] 188 | known_libraries: List[str] = [] 189 | 190 | def register_section(section: Type[Section]): 191 | sections.append(section()) 192 | 193 | for interface in section.interfaces: 194 | assert interface not in known_interfaces, f"Duplicate interface: {interface}" 195 | known_interfaces.append(interface) 196 | 197 | for library in section.libraries: 198 | assert library not in known_libraries, f"Duplicate shared library: {library}" 199 | known_libraries.append(library) 200 | 201 | def register_sections(sections_path: Path): 202 | """Import all the sections and let them execute register_section().""" 203 | for section_name in [name for _, name, _ in iter_modules([str(sections_path)])]: 204 | try: 205 | import_module(f'aospdtgen.proprietary_files.sections.{section_name}') 206 | except Exception as e: 207 | LOGE(f"Error importing section {section_name}:\n" 208 | f"{format_exception(e)}") 209 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/acdb.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class AcdbSection(Section): 10 | name = "ACDB" 11 | folders = [ 12 | "etc/acdbdata", 13 | ] 14 | 15 | register_section(AcdbSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/adsp.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class AdspSection(Section): 10 | name = "ADSP" 11 | interfaces = [ 12 | "vendor.qti.adsprpc", 13 | ] 14 | binaries = [ 15 | "adsprpcd", 16 | ] 17 | libraries = [ 18 | "libadsprpc", 19 | "libadsp_default_listener", 20 | ] 21 | 22 | class AdspModulesSection(Section): 23 | name = "ADSP modules" 24 | folders = [ 25 | "lib/rfs/dsp", 26 | "lib/rfsa/adsp", 27 | "lib64/rfs/dsp", 28 | "lib64/rfsa/adsp", 29 | ] 30 | 31 | register_section(AdspSection) 32 | register_section(AdspModulesSection) 33 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/alarm.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class AlarmSection(Section): 10 | name = "Alarm" 11 | interfaces = [ 12 | "vendor.qti.hardware.alarm", 13 | ] 14 | apps = [ 15 | "PowerOffAlarm", 16 | ] 17 | binaries = [ 18 | "power_off_alarm", 19 | "poweroffm64", 20 | ] 21 | 22 | register_section(AlarmSection) 23 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/ant.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class AntSection(Section): 10 | name = "ANT" 11 | interfaces = [ 12 | "com.dsi.ant", 13 | "com.qualcomm.qti.ant", 14 | "vendor.xiaomi.hardware.antdtx", 15 | ] 16 | 17 | class AntFirmwareSection(Section): 18 | name = "ANT firmware" 19 | patterns = [ 20 | "(.*/)?firmware/antdtx\..*", 21 | ] 22 | 23 | register_section(AntSection) 24 | register_section(AntFirmwareSection) 25 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/atrace.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class AtraceSection(Section): 10 | name = "Atrace" 11 | interfaces = [ 12 | "android.hardware.atrace", 13 | ] 14 | 15 | register_section(AtraceSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/audio.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class AudioSection(Section): 10 | name = "Audio" 11 | interfaces = [ 12 | "android.hardware.audio", 13 | "android.hardware.audio.common", 14 | "android.hardware.audio.effect", 15 | "vendor.oplus.hardware.binaural_record", 16 | "vendor.oplus.hardware.virtual_device.audio", 17 | "vendor.qti.hardware.audiohalext", 18 | ] 19 | hardware_modules = [ 20 | "audio.binaural_record", 21 | "audio.primary", 22 | "audio.r_submix", 23 | "audio.usb", 24 | "audio.virtual", 25 | ] 26 | properties_prefixes = { 27 | "aaudio.": False, 28 | "af.fast_track_multiplier": True, 29 | "audio.": False, 30 | "persist.audio.": False, 31 | "persist.vendor.audio.": False, 32 | "ro.audio.": False, 33 | "ro.qc.sdk.audio.": False, 34 | "ro.vendor.audio.": False, 35 | "tunnel.audio.": False, 36 | "use.voice.path.for.pcm.voip": True, 37 | "vendor.audio.": False, 38 | "vendor.audio_hal.": False, 39 | "vendor.voice.path.for.pcm.voip": True, 40 | } 41 | 42 | class AudioFxModulesSection(Section): 43 | name = "Audio (FX modules)" 44 | folders = [ 45 | "lib/soundfx", 46 | "lib64/soundfx", 47 | ] 48 | 49 | class AudioConfigsSection(Section): 50 | name = "Audio configs" 51 | filenames = [ 52 | "audio_io_policy.conf", 53 | "audio_tuning_mixer.txt", 54 | "default_volume_tables.xml", 55 | ] 56 | folders = [ 57 | "etc/audio", 58 | ] 59 | patterns = [ 60 | "etc/audio_configs.*\.xml", 61 | "etc/audio_effects.*\.(conf|xml)", 62 | "etc/audio_platform_info.*\.xml", 63 | "etc/.*audio_policy.*\.xml", 64 | "etc/mixer_paths.*\.xml", 65 | "etc/sound_trigger_.*\.xml", 66 | ] 67 | 68 | class AudioCalibrationSection(Section): 69 | name = "Audio calibration" 70 | folders = [ 71 | "etc/audio_param", 72 | "etc/lvacfs_params", 73 | "etc/smartpa_param", 74 | "etc/spatializer", 75 | ] 76 | patterns = [ 77 | "(.*/)?firmware/tfa98xx\..*", 78 | ] 79 | 80 | register_section(AudioSection) 81 | register_section(AudioFxModulesSection) 82 | register_section(AudioConfigsSection) 83 | register_section(AudioCalibrationSection) 84 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/authsecret.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class AuthsecretSection(Section): 10 | name = "Authsecret" 11 | interfaces = [ 12 | "android.hardware.authsecret", 13 | ] 14 | 15 | register_section(AuthsecretSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/automotive.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class AutomotiveSection(Section): 10 | name = "Automotive" 11 | interfaces = [ 12 | "android.hardware.automotive.audiocontrol", 13 | "android.hardware.automotive.can", 14 | "android.hardware.automotive.evs", 15 | "android.hardware.automotive.occupant_awareness", 16 | "android.hardware.automotive.sv", 17 | "android.hardware.automotive.vehicle", 18 | "vendor.qti.hardware.automotive.vehicle", 19 | ] 20 | 21 | register_section(AutomotiveSection) 22 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/bluetooth.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class BluetoothSection(Section): 10 | name = "Bluetooth" 11 | interfaces = [ 12 | "android.hardware.bluetooth", 13 | ] 14 | hardware_modules = [ 15 | "bluetooth", 16 | ] 17 | libraries = [ 18 | "libbt-vendor", 19 | ] 20 | properties_prefixes = { 21 | "bluetooth.": False, 22 | "persist.bluetooth.": False, 23 | "persist.sys.btsatck.": False, # Xiaomi... 24 | "persist.vendor.bt.": False, 25 | "persist.vendor.btsatck.": False, # Xiaomi... 26 | "persist.vendor.btstack.": False, 27 | "persist.vendor.qcom.bluetooth.": False, 28 | "ro.bluetooth.": False, 29 | "ro.vendor.bluetooth.": False, 30 | "vendor.bluetooth.": False, 31 | "vendor.qcom.bluetooth.": False, 32 | } 33 | 34 | class BluetoothA2dpSection(Section): 35 | name = "Bluetooth (A2DP)" 36 | interfaces = [ 37 | "android.hardware.bluetooth.a2dp", 38 | "android.hardware.bluetooth.audio", 39 | "com.qualcomm.qti.bluetooth_audio", 40 | "vendor.mediatek.hardware.bluetooth.audio", 41 | "vendor.qti.hardware.bluetooth.audio", 42 | "vendor.qti.hardware.bluetooth_audio", 43 | "vendor.qti.hardware.bluetooth_sar", 44 | "vendor.qti.hardware.btconfigstore", 45 | ] 46 | hardware_modules = [ 47 | "audio.bluetooth", 48 | "audio.bluetooth_qti", 49 | ] 50 | 51 | register_section(BluetoothSection) 52 | register_section(BluetoothA2dpSection) 53 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/boot.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class BootSection(Section): 10 | name = "Boot" 11 | interfaces = [ 12 | "android.hardware.boot", 13 | ] 14 | 15 | register_section(BootSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/broadcastradio.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class BroadcastRadioSection(Section): 10 | name = "Broadcast radio" 11 | interfaces = [ 12 | "android.hardware.broadcastradio", 13 | ] 14 | 15 | register_section(BroadcastRadioSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/camera.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class CameraSection(Section): 10 | name = "Camera" 11 | interfaces = [ 12 | "android.hardware.camera.common", 13 | "android.hardware.camera.device", 14 | "android.hardware.camera.metadata", 15 | "android.hardware.camera.provider", 16 | "camera.device", 17 | "motorola.hardware.camera.imgtuner", 18 | "vendor.mediatek.hardware.camera.atms", 19 | "vendor.mediatek.hardware.camera.bgservice", 20 | "vendor.mediatek.hardware.camera.frhandler", 21 | "vendor.mediatek.hardware.camera.isphal", 22 | "vendor.mediatek.hardware.camera.lomoeffect", 23 | "vendor.mediatek.hardware.camera.postproc", 24 | "vendor.mediatek.hardware.camera.security", 25 | "vendor.oplus.hardware.camera_rfi", 26 | "vendor.oplus.hardware.cammidasservice", 27 | "vendor.oplus.hardware.extcamera", 28 | "vendor.oplus.hardware.virtual_device.camera.hal", 29 | "vendor.oplus.hardware.virtual_device.camera.manager", 30 | "vendor.oplus.hardware.virtual_device.camera.provider", 31 | "vendor.qti.camera.provider", 32 | "vendor.qti.hardware.camera.device", 33 | "vendor.qti.hardware.camera.offlinecamera", 34 | "vendor.qti.hardware.camera.postproc", 35 | "vendor.qti.hardware.scve.objecttracker", 36 | "vendor.qti.hardware.scve.panorama", 37 | "vendor.qti.hardware.seccam", 38 | ] 39 | hardware_modules = [ 40 | "camera", 41 | "com.qti.chi", 42 | ] 43 | binaries = [ 44 | "camerahalserver", 45 | "mm-qcamera-daemon", 46 | "virtualcameraprovider", 47 | ] 48 | libraries = [ 49 | "libscveBlobDescriptor_stub", 50 | "libscveCommon", 51 | "libscveCommon_stub", 52 | "libscveObjectSegmentation", 53 | "libscveObjectSegmentation_stub", 54 | "libscveObjectTracker", 55 | "libscveObjectTracker_stub", 56 | "libscvePanorama", 57 | "libscvePanorama_lite", 58 | "libscvePanorama_stub", 59 | ] 60 | folders = [ 61 | "lib/camera", 62 | "lib64/camera", 63 | ] 64 | patterns = [ 65 | "lib(64)?/com.qti.feature2\..*\.so", 66 | "lib(64)?/libCamera_.*\.so", 67 | "lib(64)?/libactuator_.*\.so", 68 | "lib(64)?/libarcsoft_.*\.so", 69 | "lib(64)?/libcamx.*\.so", 70 | "lib(64)?/libchromatix_.*\.so", 71 | "lib(64)?/libmmcamera_.*\.so", 72 | "lib(64)?/libmmcamera2_.*\.so", 73 | "lib(64)?/libmtkcam_.*\.so", 74 | "lib(64)?/libois_.*\.so", 75 | ] 76 | properties_prefixes = { 77 | "camera.": False, 78 | "persist.vendor.camera.": False, 79 | "vendor.camera.": False, 80 | } 81 | 82 | class CameraConfigsSection(Section): 83 | name = "Camera configs" 84 | folders = [ 85 | "camera", 86 | "etc/camera", 87 | ] 88 | 89 | class CameraFirmwareSection(Section): 90 | name = "Camera firmware" 91 | patterns = [ 92 | "(.*/)?firmware/CAMERA_ICP.*", 93 | "bin/lib3a.*", 94 | "bin/libccu_.*", 95 | "firmware/lib3a.*", 96 | "firmware/libccu_.*", 97 | ] 98 | 99 | class CameraMotorSection(Section): 100 | name = "Camera motor" 101 | interfaces = [ 102 | "vendor.xiaomi.hardware.motor", 103 | ] 104 | libraries = [ 105 | "mi.motor.daemon", 106 | ] 107 | folders = [ 108 | "etc/step_motor", 109 | ] 110 | patterns = [ 111 | "lib(64)?/libmivendor_module_.*\.so", 112 | ] 113 | 114 | register_section(CameraSection) 115 | register_section(CameraConfigsSection) 116 | register_section(CameraFirmwareSection) 117 | register_section(CameraMotorSection) 118 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/cas.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class CasSection(Section): 10 | name = "CAS" 11 | interfaces = [ 12 | "android.hardware.cas", 13 | "android.hardware.cas.native", 14 | ] 15 | 16 | register_section(CasSection) 17 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/cdsp.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class CdspSection(Section): 10 | name = "CDSP" 11 | interfaces = [ 12 | "vendor.qti.cdsprpc", 13 | ] 14 | binaries = [ 15 | "cdsprpcd", 16 | ] 17 | libraries = [ 18 | "libcdsprpc", 19 | "libcdsp_default_listener", 20 | "libfastcvdsp_stub", 21 | "libfastcvopt", 22 | ] 23 | 24 | register_section(CdspSection) 25 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/cit.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class CitSection(Section): 10 | name = "CIT" 11 | interfaces = [ 12 | "vendor.xiaomi.cit.bluetooth", 13 | "vendor.xiaomi.cit.wifi", 14 | "vendor.xiaomi.hardware.citsensorservice", 15 | "vendor.xiaomi.hardware.citvendorservice", 16 | ] 17 | 18 | register_section(CitSection) 19 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/cne.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class CneSection(Section): 10 | name = "CNE" 11 | interfaces = [ 12 | "com.quicinc.cne.api", 13 | "com.quicinc.cne.constants", 14 | "com.quicinc.cne.server", 15 | "vendor.qti.data.factory", 16 | "vendor.qti.data.mwqem", 17 | "vendor.qti.data.slm", 18 | "vendor.qti.hardware.cacert", 19 | "vendor.qti.hardware.data.cne.internal.api", 20 | "vendor.qti.hardware.data.cne.internal.constants", 21 | "vendor.qti.hardware.data.cne.internal.server", 22 | "vendor.qti.hardware.data.connection", 23 | "vendor.qti.hardware.data.connectionaidl", 24 | "vendor.qti.hardware.data.connectionfactory", 25 | "vendor.qti.hardware.data.dataactivity", 26 | "vendor.qti.hardware.data.dynamicdds", 27 | "vendor.qti.hardware.data.flow", 28 | "vendor.qti.hardware.data.iwlan", 29 | "vendor.qti.hardware.data.iwlandata", 30 | "vendor.qti.hardware.data.ka", 31 | "vendor.qti.hardware.data.latency", 32 | "vendor.qti.hardware.data.lce", 33 | "vendor.qti.hardware.data.qmi", 34 | "vendor.qti.hardware.factory", 35 | "vendor.qti.hardware.mwqemadapter", 36 | "vendor.qti.hardware.slmadapter", 37 | "vendor.qti.latency", 38 | ] 39 | apps = [ 40 | "CneApp", 41 | ] 42 | binaries = [ 43 | "cnd", 44 | ] 45 | folders = [ 46 | "etc/cne", 47 | ] 48 | properties_prefixes = { 49 | "persist.vendor.cne.": False, 50 | } 51 | 52 | register_section(CneSection) 53 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/configstore.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class ConfigstoreSection(Section): 10 | name = "Configstore" 11 | interfaces = [ 12 | "android.hardware.configstore", 13 | "vendor.qti.hardware.capabilityconfigstore", 14 | ] 15 | folders = [ 16 | "etc/configstore", 17 | ] 18 | 19 | register_section(ConfigstoreSection) 20 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/confirmationui.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class ConfirmationUISection(Section): 10 | name = "Confirmation UI" 11 | interfaces = [ 12 | "android.hardware.confirmationui", 13 | ] 14 | 15 | register_section(ConfirmationUISection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/contexthub.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class ContextHubSection(Section): 10 | name = "Context hub" 11 | interfaces = [ 12 | "android.hardware.contexthub", 13 | ] 14 | 15 | register_section(ContextHubSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/cvp.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class CvpSection(Section): 10 | name = "CVP" 11 | interfaces = [ 12 | "vendor.qti.hardware.cvp", 13 | ] 14 | 15 | class CvpFirmwareSection(Section): 16 | name = "CVP firmware" 17 | patterns = [ 18 | "(.*/)?firmware/evass\..*", 19 | "(.*/)?firmware/evass-lt\..*", 20 | ] 21 | 22 | register_section(CvpSection) 23 | register_section(CvpFirmwareSection) 24 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/display.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class DisplaySection(Section): 10 | name = "Display" 11 | interfaces = [ 12 | "android.hardware.graphics.allocator", 13 | "android.hardware.graphics.bufferqueue", 14 | "android.hardware.graphics.common", 15 | "android.hardware.graphics.composer", 16 | "android.hardware.graphics.composer3", 17 | "android.hardware.graphics.mapper", 18 | "android.hardware.memtrack", 19 | "com.motorola.hardware.display.panel", 20 | "com.motorola.hardware.display.touch", 21 | "vendor.display.color", 22 | "vendor.display.config", 23 | "vendor.display.postproc", 24 | "vendor.mediatek.hardware.composer_ext", 25 | "vendor.mediatek.hardware.mms", 26 | "vendor.mediatek.hardware.pq", 27 | "vendor.oplus.hardware.displaycolorfeature", 28 | "vendor.oplus.hardware.displaypanelfeature", 29 | "vendor.qti.hardware.display.allocator", 30 | "vendor.qti.hardware.display.color", 31 | "vendor.qti.hardware.display.composer", 32 | "vendor.qti.hardware.display.config", 33 | "vendor.qti.hardware.display.mapper", 34 | "vendor.qti.hardware.display.mapperextensions", 35 | "vendor.qti.hardware.display.postproc", 36 | "vendor.qti.hardware.qdutils_disp", 37 | "vendor.xiaomi.hardware.displayfeature", 38 | ] 39 | hardware_modules = [ 40 | "copybit", 41 | "displayfeature", 42 | "displaypanel", 43 | "gralloc", 44 | "hwcomposer", 45 | "memtrack", 46 | "vulkan", 47 | ] 48 | libraries = [ 49 | "libsdedrm", 50 | "libsdm-color", 51 | "libsdm-diag", 52 | "libsdmextension", 53 | ] 54 | folders = [ 55 | "lib/egl", 56 | "lib64/egl", 57 | ] 58 | properties_prefixes = { 59 | "debug.egl.": False, 60 | "debug.sf.": False, 61 | "persist.displayfeature.": False, 62 | "persist.sys.sf.": False, 63 | "persist.vendor.dc_backlight.": False, 64 | "persist.vendor.dfps.": False, 65 | "ro.gfx.driver.": False, 66 | "ro.hardware.egl": True, 67 | "ro.hardware.vulkan": True, 68 | "ro.hwui.": False, 69 | "ro.opengles.": False, 70 | "ro.surface_flinger.": False, 71 | "ro.vendor.cabc.": False, 72 | "ro.vendor.colorpick_adjust": True, 73 | "ro.vendor.dfps.": False, 74 | "ro.vendor.display.": False, 75 | "ro.vendor.fps.": False, 76 | "ro.vendor.hbm_backlight.": False, 77 | "ro.vendor.histogram.": False, 78 | "ro.vendor.mi_sf.": False, 79 | "ro.vendor.whitepoint_calibration_enable": True, 80 | "vendor.display.": False, 81 | "vendor.gralloc.": False, 82 | } 83 | 84 | class DisplayPixelworksSection(Section): 85 | name = "Display (Pixelworks)" 86 | interfaces = [ 87 | "vendor.pixelworks.hardware.display", 88 | "vendor.pixelworks.hardware.display.iris", 89 | "vendor.pixelworks.hardware.feature", 90 | "vendor.pixelworks.hardware.feature.irisfeature", 91 | ] 92 | patterns = [ 93 | "(.*/)?firmware/pxlw_.*\..*", 94 | ] 95 | 96 | class DisplayConfigsSection(Section): 97 | name = "Display configs" 98 | folders = [ 99 | "etc/display", 100 | "etc/inparm", 101 | ] 102 | patterns = [ 103 | "etc/ltm_*", 104 | "etc/mdss_*", 105 | "etc/qdcm_*", 106 | ] 107 | 108 | class DisplayFirmwareSection(Section): 109 | name = "Display firmware" 110 | folders = [ 111 | "gpu/kbc", 112 | ] 113 | patterns = [ 114 | "(.*/)?firmware/a[0-9]+_.*\..*", 115 | "(.*/)?firmware/iris.*\..*", 116 | ] 117 | 118 | register_section(DisplaySection) 119 | register_section(DisplayPixelworksSection) 120 | register_section(DisplayConfigsSection) 121 | register_section(DisplayFirmwareSection) 122 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/dpm.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class DpmSection(Section): 10 | name = "DPM" 11 | interfaces = [ 12 | "com.qualcomm.qti.dpm.api", 13 | "vendor.qti.diaghal", 14 | "vendor.qti.hardware.dpmaidlservice", 15 | "vendor.qti.hardware.dpmservice", 16 | ] 17 | binaries = [ 18 | "dpmQmiMgr", 19 | "dpmd", 20 | ] 21 | folders = [ 22 | "etc/dpm", 23 | ] 24 | properties_prefixes = { 25 | "persist.vendor.dpm.": False, 26 | "persist.vendor.dpmhalservice.": False, 27 | } 28 | 29 | register_section(DpmSection) 30 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/drm.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class DrmSection(Section): 10 | name = "DRM" 11 | interfaces = [ 12 | "android.hardware.drm", 13 | ] 14 | apexes = [ 15 | "com.google.android.widevine.nonupdatable", 16 | ] 17 | libraries = [ 18 | "liboemcrypto", 19 | ] 20 | folders = [ 21 | "lib/mediacas", 22 | "lib/mediadrm", 23 | "lib64/mediacas", 24 | "lib64/mediadrm", 25 | ] 26 | properties_prefixes = { 27 | "drm.service.enabled": True, 28 | "ro.netflix.bsp_rev": True, 29 | } 30 | 31 | class DrmQseeSection(Section): 32 | name = "DRM (Qualcomm Secure Execution Environment)" 33 | interfaces = [ 34 | "vendor.qti.hardware.qseecom", 35 | ] 36 | binaries = [ 37 | "qseecomd", 38 | ] 39 | libraries = [ 40 | "libQSEEComAPI", 41 | ] 42 | 43 | class DrmQteeSection(Section): 44 | name = "DRM (Qualcomm Trusted Execution Environment)" 45 | interfaces = [ 46 | "vendor.qti.hardware.qteeconnector", 47 | ] 48 | libraries = [ 49 | "libGPQTEEC_vendor", 50 | "libGPTEE_vendor", 51 | "libQTEEConnector_vendor", 52 | ] 53 | 54 | class DrmFirmwareSection(Section): 55 | name = "DRM firmware" 56 | folders = [ 57 | "etc/firmware/drm", 58 | ] 59 | patterns = [ 60 | "(.*/)?firmware/widevine\..*", 61 | ] 62 | 63 | register_section(DrmSection) 64 | register_section(DrmQseeSection) 65 | register_section(DrmQteeSection) 66 | register_section(DrmFirmwareSection) 67 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/dsp.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class DspSection(Section): 10 | name = "DSP" 11 | interfaces = [ 12 | "vendor.qti.hardware.dsp", 13 | ] 14 | binaries = [ 15 | "dspservice", 16 | ] 17 | filenames = [ 18 | "vendor.qti.hardware.dsp.policy", 19 | ] 20 | 21 | register_section(DspSection) 22 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/dumpstate.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class DumpstateSection(Section): 10 | name = "Dumpstate" 11 | interfaces = [ 12 | "android.hardware.dumpstate", 13 | ] 14 | 15 | register_section(DumpstateSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/face.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class FaceSection(Section): 10 | name = "Face" 11 | interfaces = [ 12 | "android.hardware.biometrics.face", 13 | "vendor.oplus.hardware.biometrics.face", 14 | ] 15 | 16 | register_section(FaceSection) 17 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/fastboot.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class FastbootSection(Section): 10 | name = "Fastboot" 11 | interfaces = [ 12 | "android.hardware.fastboot", 13 | ] 14 | 15 | register_section(FastbootSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/fingerprint.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class FingerprintSection(Section): 10 | name = "Fingerprint" 11 | interfaces = [ 12 | "android.hardware.biometrics.fingerprint", 13 | "vendor.goodix.hardware.biometrics.fingerprint", 14 | "vendor.oplus.hardware.biometrics.fingerprint", 15 | "vendor.qti.hardware.fingerprint", 16 | "vendor.xiaomi.hardware.fingerprintextension", 17 | ] 18 | hardware_modules = [ 19 | "fingerprint", 20 | "gf_fingerprint", 21 | ] 22 | binaries = [ 23 | "qfp-daemon", 24 | ] 25 | properties_prefixes = { 26 | "persist.vendor.qfp": True, 27 | } 28 | 29 | register_section(FingerprintSection) 30 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/fm.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class FmSection(Section): 10 | name = "FM" 11 | interfaces = [ 12 | "vendor.qti.hardware.fm", 13 | ] 14 | 15 | register_section(FmSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/gatekeeper.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class GatekeeperSection(Section): 10 | name = "Gatekeeper" 11 | interfaces = [ 12 | "android.hardware.gatekeeper", 13 | "vendor.microtrust.hardware.thh", 14 | "vendor.qti.hardware.secureprocessor", 15 | "vendor.qti.spu", 16 | "vendor.trustonic.tee", 17 | ] 18 | binaries = [ 19 | "teei_daemon", 20 | ] 21 | hardware_modules = [ 22 | "gatekeeper", 23 | "libSoftGatekeeper", 24 | ] 25 | patterns = [ 26 | "etc/init/microtrust.*\.rc", 27 | ] 28 | properties_prefixes = { 29 | "vendor.gatekeeper.": False, 30 | } 31 | 32 | class GatekeeperConfigsSection(Section): 33 | name = "Gatekeeper configs" 34 | folders = [ 35 | "thh", 36 | ] 37 | 38 | register_section(GatekeeperSection) 39 | register_section(GatekeeperConfigsSection) 40 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/gnss.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class GnssSection(Section): 10 | name = "GNSS" 11 | interfaces = [ 12 | "android.hardware.gnss", 13 | "android.hardware.gnss.measurement_corrections", 14 | "android.hardware.gnss.visibility_control", 15 | "vendor.qti.gnss", 16 | ] 17 | hardware_modules = [ 18 | "gps", 19 | ] 20 | binaries = [ 21 | "loc_launcher", 22 | "lowi-server", 23 | "mnld", 24 | "mtk_agpsd", 25 | "slim_daemon", 26 | "xtra-daemon", 27 | "xtwifi-client", 28 | "xtwifi-inet-agent", 29 | ] 30 | patterns = [ 31 | "etc/init/mtk_agps.*\.rc", 32 | ] 33 | properties_prefixes = { 34 | "persist.sys.gps.": False, 35 | "persist.vendor.overlay.izat.": False, 36 | } 37 | 38 | class GnssConfigsSection(Section): 39 | name = "GNSS configs" 40 | filenames = [ 41 | "apdr.conf", 42 | "flp.conf", 43 | "gps.conf", 44 | "izat.conf", 45 | "lowi.conf", 46 | "sap.conf", 47 | "xtwifi.conf", 48 | ] 49 | folders = [ 50 | "etc/gnss", 51 | ] 52 | 53 | register_section(GnssSection) 54 | register_section(GnssConfigsSection) 55 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/health.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class HealthSection(Section): 10 | name = "Health" 11 | interfaces = [ 12 | "android.hardware.health", 13 | "android.hardware.health.storage", 14 | "motorola.hardware.health", 15 | "motorola.hardware.health.storage", 16 | "motorola.hardware.wireless.wlc", 17 | "vendor.oplus.hardware.charger", 18 | "vendor-oplus-hardware-charger", 19 | "vendor.qti.hardware.charger_monitor", 20 | "vendor.xiaomi.hardware.micharge", 21 | ] 22 | binaries = [ 23 | "batterysecret", 24 | "fuelgauged", 25 | "hvdcp_opti", 26 | "init.qti.chg_policy.sh", 27 | "wlschgd", 28 | ] 29 | filenames = [ 30 | "charger_fstab.qti", 31 | "fuelgauged_init.rc", 32 | ] 33 | properties_prefixes = { 34 | "ro.charger.": False, 35 | } 36 | 37 | class HealthFirmwareSection(Section): 38 | name = "Health firmware" 39 | folders = [ 40 | "firmware/fastchg", 41 | ] 42 | 43 | register_section(HealthSection) 44 | register_section(HealthFirmwareSection) 45 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/identity.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class IdentitySection(Section): 10 | name = "Identity" 11 | interfaces = [ 12 | "android.hardware.identity", 13 | ] 14 | 15 | register_section(IdentitySection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/input.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class InputSection(Section): 10 | name = "Input" 11 | interfaces = [ 12 | "android.hardware.input.classifier", 13 | "android.hardware.input.common", 14 | "android.hardware.input.processor", 15 | ] 16 | 17 | class InputMotorolaSection(Section): 18 | name = "Input (Motorola)" 19 | interfaces = [ 20 | "motorola.hardware.input", 21 | ] 22 | 23 | register_section(InputSection) 24 | register_section(InputMotorolaSection) 25 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/ipa.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class IpaSection(Section): 10 | name = "IPA" 11 | binaries = [ 12 | "ipacm", 13 | "ipacm-diag", 14 | ] 15 | libraries = [ 16 | "libipanat", 17 | "liboffloadhal", 18 | ] 19 | filenames = [ 20 | "IPACM_cfg.xml", 21 | ] 22 | 23 | class IpaFirmwareSection(Section): 24 | name = "IPA firmware" 25 | filenames = [ 26 | "ipa_fws.rc", 27 | ] 28 | patterns = [ 29 | "(.*/)?firmware/.*ipa_(fws|uc)*.", 30 | ] 31 | 32 | register_section(IpaSection) 33 | register_section(IpaFirmwareSection) 34 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/ir.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class IrSection(Section): 10 | name = "IR" 11 | interfaces = [ 12 | "android.hardware.ir", 13 | ] 14 | hardware_modules = [ 15 | "consumerir", 16 | ] 17 | 18 | register_section(IrSection) 19 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/keymaster.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class KeymasterSection(Section): 10 | name = "Keymaster" 11 | interfaces = [ 12 | "android.hardware.keymaster", 13 | "vendor.mediatek.hardware.keymaster_attestation", 14 | ] 15 | binaries = [ 16 | "bp_kmsetkey_ca", 17 | ] 18 | hardware_modules = [ 19 | "keystore", 20 | "kmsetkey", 21 | ] 22 | 23 | register_section(KeymasterSection) 24 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/light.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class LightSection(Section): 10 | name = "Light" 11 | interfaces = [ 12 | "android.hardware.light", 13 | ] 14 | hardware_modules = [ 15 | "lights", 16 | ] 17 | 18 | register_section(LightSection) 19 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/local_time.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class LocalTimeSection(Section): 10 | name = "Local time" 11 | hardware_modules = [ 12 | "local_time", 13 | ] 14 | 15 | register_section(LocalTimeSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/media.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class MediaSection(Section): 10 | name = "Media" 11 | interfaces = [ 12 | "android.hardware.media", 13 | "android.hardware.media.bufferpool", 14 | "android.hardware.media.c2", 15 | "android.hardware.media.omx", 16 | "vendor.qti.hardware.qconfig", 17 | "vendor.qti.hardware.vpp", 18 | "vendor.qti.media.c2", 19 | ] 20 | binaries = [ 21 | "qconfigservice", 22 | "vppservice", 23 | "vpud", 24 | ] 25 | filenames = [ 26 | "c2_manifest_vendor.xml", 27 | "mediacodec.policy", 28 | ] 29 | patterns = [ 30 | "etc/seccomp_policy/codec2.vendor.*.-arm\.policy", 31 | "lib(64)?/libMtkOmx.*\.so", 32 | "lib(64)?/libOmx.*\.so", 33 | "lib(64)?/libstagefright.*\.so", 34 | ] 35 | properties_prefixes = { 36 | "debug.stagefright.": False, 37 | "media.": False, 38 | } 39 | 40 | class MediaDolbySection(Section): 41 | name = "Media (Dolby)" 42 | interfaces = [ 43 | "vendor.dolby.dms", 44 | "vendor.dolby.hardware.dms", 45 | "vendor.dolby.media.c2", 46 | "vendor.dolby_sp.hardware.dmssp", 47 | "vendor.dolby_sp.media.c2", 48 | ] 49 | libraries = [ 50 | "libdapparamstorage", 51 | "libdeccfg", 52 | ] 53 | filenames = [ 54 | "dolby_vision.cfg", 55 | ] 56 | folders = [ 57 | "etc/dolby", 58 | ] 59 | patterns = [ 60 | "lib(64)?/libdolby.*\.so", 61 | ] 62 | properties_prefixes = { 63 | "ro.vendor.dolby.": False, 64 | } 65 | 66 | class MediaOZOAudioSection(Section): 67 | name = "Media (OZO Audio)" 68 | interfaces = [ 69 | "vendor.ozoaudio.media.c2", 70 | ] 71 | 72 | class MediaConfigsSection(Section): 73 | name = "Media configs" 74 | patterns = [ 75 | "etc/media_codecs.*\.xml", 76 | "etc/media_profiles.*\.xml", 77 | ] 78 | 79 | register_section(MediaSection) 80 | register_section(MediaDolbySection) 81 | register_section(MediaOZOAudioSection) 82 | register_section(MediaConfigsSection) 83 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/neuralnetworks.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class NeuralNetworksSection(Section): 10 | name = "Neural networks" 11 | interfaces = [ 12 | "android.hardware.neuralnetworks", 13 | "vendor.mediatek.hardware.mmagent", 14 | ] 15 | binaries = [ 16 | "nn_device_test", 17 | "npu_launcher", 18 | ] 19 | libraries = [ 20 | "libhexagon_nn_stub", 21 | ] 22 | patterns = [ 23 | "lib(64)?/libhta(_.*.)?\.so", 24 | "lib(64)?/unnhal.*.\.so", 25 | ] 26 | 27 | register_section(NeuralNetworksSection) 28 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/nfc.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class NfcSection(Section): 10 | name = "NFC" 11 | interfaces = [ 12 | "android.hardware.nfc", 13 | "vendor.nxp.hardware.nfc", 14 | "vendor.oplus.hardware.nfcExtns", 15 | "vendor.oplus.hardware.nfc_aidl", 16 | ] 17 | hardware_modules = [ 18 | "nfc", 19 | ] 20 | properties_prefixes = { 21 | "ro.nfc.": False, 22 | } 23 | 24 | class NfcConfigsSection(Section): 25 | name = "NFC configs" 26 | folders = [ 27 | "etc/nfc", 28 | ] 29 | patterns = [ 30 | "etc/libnfc-.*\.conf", 31 | "etc/sn100u_.*\.pnscr", 32 | ] 33 | 34 | register_section(NfcSection) 35 | register_section(NfcConfigsSection) 36 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/nvram.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class NVRAMSection(Section): 10 | name = "NVRAM" 11 | interfaces = [ 12 | "vendor.mediatek.hardware.nvram", 13 | ] 14 | binaries = [ 15 | "fuelgauged_nvram", 16 | "nvram_daemon", 17 | ] 18 | filenames = [ 19 | "fuelgauged_nvram_init.rc", 20 | ] 21 | 22 | register_section(NVRAMSection) 23 | 24 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/oemlock.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class OemLockSection(Section): 10 | name = "OEM lock" 11 | interfaces = [ 12 | "android.hardware.oemlock", 13 | ] 14 | 15 | register_section(OemLockSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/pasr.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class PasrSection(Section): 10 | name = "PASR" 11 | interfaces = [ 12 | "vendor.qti.memory.pasrmanager", 13 | "vendor.qti.power.pasrmanager", 14 | ] 15 | apps = [ 16 | "pasrservice", 17 | ] 18 | 19 | register_section(PasrSection) 20 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/payment.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class PaymentEIDSection(Section): 10 | name = "Payment (eID)" 11 | interfaces = [ 12 | "vendor.qti.hardware.eid", 13 | ] 14 | 15 | class PaymentIFAASection(Section): 16 | name = "Payment (IFAA)" 17 | interfaces = [ 18 | "vendor.qti.hardware.ifaa", 19 | ] 20 | apps = [ 21 | "IFAAService", 22 | ] 23 | 24 | class PaymentOplusSection(Section): 25 | name = "Payment (oplus)" 26 | interfaces = [ 27 | "vendor.oplus.hardware.biometrics.fingerprintpay", 28 | "vendor.oplus.hardware.fido.fido2ca", 29 | "vendor.oplus.hardware.fido.fidoca", 30 | ] 31 | 32 | class PaymentXiaomiSection(Section): 33 | name = "Payment (Xiaomi)" 34 | interfaces = [ 35 | "vendor.fido.fidoca", 36 | "vendor.xiaomi.hardware.mfidoca", 37 | "vendor.xiaomi.hardware.mlipay", 38 | "vendor.xiaomi.hardware.mtdservice", 39 | "vendor.xiaomi.hardware.tidaservice", 40 | ] 41 | patterns = [ 42 | "bin/fidoca(@[0-9]+\.[0-9]+)?$", 43 | "bin/mlipayd(@[0-9]+\.[0-9]+)?$", 44 | "bin/mtd(@[0-9]+\.[0-9]+)?$", 45 | "bin/tidad(@[0-9]+\.[0-9]+)?$", 46 | ] 47 | 48 | 49 | class PaymentFirmwareSection(Section): 50 | name = "Payment firmware" 51 | patterns = [ 52 | "(.*/)?firmware/alipay\..*", 53 | "(.*/)?firmware/fidoctap\..*", 54 | "(.*/)?firmware/fidotap\..*", 55 | ] 56 | 57 | register_section(PaymentEIDSection) 58 | register_section(PaymentIFAASection) 59 | register_section(PaymentOplusSection) 60 | register_section(PaymentXiaomiSection) 61 | register_section(PaymentFirmwareSection) 62 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/perf.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class PerfSection(Section): 10 | name = "Perf" 11 | interfaces = [ 12 | "vendor.qti.hardware.perf", 13 | ] 14 | libraries = [ 15 | "libqti-perfd-client", 16 | ] 17 | filenames = [ 18 | "powerhint.xml", 19 | ] 20 | folders = [ 21 | "etc/perf", 22 | ] 23 | properties_prefixes = { 24 | "ro.vendor.extension_library": True, 25 | } 26 | 27 | class PerfIopSection(Section): 28 | name = "Perf IOP" 29 | interfaces = [ 30 | "vendor.qti.hardware.iop", 31 | ] 32 | libraries = [ 33 | "libqti-iopd-client", 34 | ] 35 | 36 | register_section(PerfSection) 37 | register_section(PerfIopSection) 38 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/power.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class PowerSection(Section): 10 | name = "Power" 11 | interfaces = [ 12 | "android.hardware.power", 13 | "vendor-oplus-hardware-power-powermonitor", 14 | "vendor.qti.hardware.power.powermodule", 15 | "vendor.mediatek.hardware.mtkpower", 16 | ] 17 | hardware_modules = [ 18 | "power", 19 | ] 20 | properties_prefixes = { 21 | "vendor.power.": False, 22 | } 23 | 24 | class PowerConfigsSection(Section): 25 | name = "Power configs" 26 | folders = [ 27 | "etc/pwr", 28 | ] 29 | 30 | register_section(PowerSection) 31 | register_section(PowerConfigsSection) 32 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/qcc.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class QccSection(Section): 10 | name = "QCC" 11 | interfaces = [ 12 | "vendor.qti.hardware.qccsyshal", 13 | "vendor.qti.hardware.qccvndhal", 14 | "vendor.qti.qccvndhal_aidl", 15 | ] 16 | binaries = [ 17 | "qcc-vendor", 18 | ] 19 | 20 | register_section(QccSection) 21 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/qesd.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class QesdSection(Section): 10 | name = "QESD" 11 | interfaces = [ 12 | "vendor.qti.qesdhal", 13 | "vendor.qti.qesdhalaidl", 14 | "vendor.qti.qesdsys", 15 | ] 16 | binaries = [ 17 | "perf_qesdk_client", 18 | "qesdk-manager", 19 | "sensors-qesdk", 20 | ] 21 | 22 | register_section(QesdSection) 23 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/qspm.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class QspmSection(Section): 10 | name = "QSPM" 11 | interfaces = [ 12 | "vendor.qti.qspmhal", 13 | ] 14 | filenames = [ 15 | "qspm.policy", 16 | ] 17 | 18 | register_section(QspmSection) 19 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/qvr.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class QvrSection(Section): 10 | name = "QVR" 11 | interfaces = [ 12 | "vendor.qti.hardware.qvr", 13 | ] 14 | binaries = [ 15 | "qvrdatalogger", 16 | "qvrservice", 17 | "qvrservicetest", 18 | "qvrservicetest64", 19 | ] 20 | folders = [ 21 | "etc/qvr", 22 | ] 23 | 24 | register_section(QvrSection) 25 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/qxr.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class QxrSection(Section): 10 | name = "QXR" 11 | interfaces = [ 12 | "vendor.qti.hardware.qxr", 13 | ] 14 | 15 | register_section(QxrSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/radio.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class RadioSection(Section): 10 | name = "Radio" 11 | interfaces = [ 12 | "android.hardware.radio", 13 | "mtkfusionrild", 14 | "qcrild", 15 | "qcrilNrd", 16 | "rild", 17 | "vendor.mediatek.hardware.mtkradioex", 18 | "vendor.mediatek.hardware.nwk_opt", 19 | "vendor.mediatek.hardware.radio", 20 | "vendor.oplus.hardware.appradioaidl", 21 | "vendor.oplus.hardware.esim", 22 | "vendor.oplus.hardware.radio", 23 | "vendor.qti.hardware.embmssl", 24 | "vendor.qti.hardware.embmsslaidl", 25 | "vendor.qti.hardware.radio.am", 26 | "vendor.qti.hardware.radio.atcmdfwd", 27 | "vendor.qti.hardware.radio.common", 28 | "vendor.qti.hardware.radio.internal.deviceinfo", 29 | "vendor.qti.hardware.radio.lpa", 30 | "vendor.qti.hardware.radio.qcrilhook", 31 | "vendor.qti.hardware.radio.qtiradio", 32 | "vendor.qti.hardware.radio.qtiradioconfig", 33 | "vendor.qti.hardware.radio.uim", 34 | "vendor.qti.hardware.radio.uim_remote_client", 35 | "vendor.qti.hardware.radio.uim_remote_server", 36 | "vendor.qti.rmt_storage", 37 | "vendor.qti.tftp", 38 | ] 39 | hardware_modules = [ 40 | "radio", 41 | ] 42 | apps = [ 43 | "IWlanService", 44 | "QtiTelephonyService", 45 | "qcrilmsgtunnel", 46 | ] 47 | binaries = [ 48 | "ATFWD-daemon", 49 | "adpl", 50 | "ccci_mdinit", 51 | "ccci_rpcd", 52 | "gsm0710muxd", 53 | "ks", 54 | "mdm_helper", 55 | "netmgrd", 56 | "pd-mapper", 57 | "port-bridge", 58 | "qrtr-cfg", 59 | "qrtr-lookup", 60 | "qrtr-ns", 61 | "qti", 62 | "rmt_storage", 63 | "ssgtzd", 64 | "tftp_server", 65 | "xcap", 66 | ] 67 | filenames = [ 68 | "init-qcril-data.rc", 69 | "init.md_apps.rc", 70 | ] 71 | folders = [ 72 | "etc/qcril_database", 73 | "radio/qcril_database", 74 | ] 75 | patterns = [ 76 | "etc/init/init.ccci.*\.rc", 77 | "etc/init/data.*.\.rc", 78 | "etc/seccomp_policy/atfwd(@[0-9]+\.[0-9]+)?.policy", 79 | ] 80 | properties_prefixes = { 81 | "persist.radio.": False, 82 | "persist.rild.": False, 83 | "persist.vendor.mdm_helper.": False, 84 | "persist.vendor.radio.": False, 85 | "ril.": False, 86 | "rild.": False, 87 | "ro.radio.": False, 88 | "ro.telephony.": False, 89 | "telephony.": False, 90 | } 91 | 92 | class RadioImsSection(Section): 93 | name = "Radio (IMS)" 94 | interfaces = [ 95 | "com.qualcomm.qti.imscmservice", 96 | "com.qualcomm.qti.uceservice", 97 | "vendor.mediatek.hardware.rcs", 98 | "vendor.mediatek.hardware.videotelephony", 99 | "vendor.oplus.hardware.ims", 100 | "vendor.qti.hardware.radio.ims", 101 | "vendor.qti.ims.callcapability", 102 | "vendor.qti.ims.callinfo", 103 | "vendor.qti.ims.factory", 104 | "vendor.qti.ims.rcsconfig", 105 | "vendor.qti.imsrtpservice", 106 | ] 107 | apps = [ 108 | "ims", 109 | ] 110 | binaries = [ 111 | "bip", 112 | "charon", 113 | "epdg_wod", 114 | "ims_rtp_daemon", 115 | "imsdatadaemon", 116 | "imsqmidaemon", 117 | "imsrcsd", 118 | "ipsec_mon", 119 | "rcs_volte_stack", 120 | "starter", 121 | "stroke", 122 | "volte_clientapi_ua", 123 | "volte_imcb", 124 | "volte_imsm_93", 125 | "volte_md_status", 126 | "volte_rcs_ua", 127 | "volte_stack", 128 | "volte_ua", 129 | "vtservice_hidl", 130 | ] 131 | libraries = [ 132 | "lib-rcsconfig", 133 | "lib-siputility", 134 | "lib-uceservice", 135 | ] 136 | filenames = [ 137 | "imsrtp.policy", 138 | "init.wod.rc", 139 | ] 140 | patterns = [ 141 | "lib(64)?/lib-ims.*.\.so", 142 | ] 143 | properties_prefixes = { 144 | "persist.vendor.ims.": False, 145 | } 146 | 147 | register_section(RadioSection) 148 | register_section(RadioImsSection) 149 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/rebootescrow.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class RebootEscrowSection(Section): 10 | name = "Reboot escrow" 11 | interfaces = [ 12 | "android.hardware.rebootescrow", 13 | ] 14 | 15 | register_section(RebootEscrowSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/renderscript.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class RenderscriptSection(Section): 10 | name = "RenderScript" 11 | interfaces = [ 12 | "android.hardware.renderscript", 13 | ] 14 | libraries = [ 15 | "libRSDriver_adreno", 16 | "librs_adreno", 17 | "librs_adreno_sha1", 18 | ] 19 | 20 | register_section(RenderscriptSection) 21 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/secure_element.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class SecureElementSection(Section): 10 | name = "Secure element" 11 | interfaces = [ 12 | "android.hardware.secure_element", 13 | "vendor.qti.secure_element", 14 | ] 15 | 16 | class SecureElementPowerManagerSection(Section): 17 | name = "Secure element (power manager)" 18 | interfaces = [ 19 | "vendor.qti.esepowermanager", 20 | ] 21 | 22 | register_section(SecureElementSection) 23 | register_section(SecureElementPowerManagerSection) 24 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/security.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class SecuritySection(Section): 10 | name = "Security" 11 | interfaces = [ 12 | "android.hardware.security.keymint", 13 | "android.hardware.security.rkp", 14 | "android.hardware.security.secureclock", 15 | "android.hardware.security.sharedsecret", 16 | ] 17 | 18 | register_section(SecuritySection) 19 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/sensors.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class SensorsSection(Section): 10 | name = "Sensors" 11 | interfaces = [ 12 | "android.hardware.sensors", 13 | "motorola.hardware.sensorscalibrate", 14 | "vendor-oplus-hardware-oplusSensor", 15 | "vendor.qti.hardware.sensorscalibrate", 16 | ] 17 | hardware_modules = [ 18 | "sensors", 19 | ] 20 | binaries = [ 21 | "init.qcom.sensors.sh", 22 | "sensors.qti", 23 | "sscrpcd", 24 | ] 25 | patterns = [ 26 | "lib(64)?/sensors\..*\.so", 27 | ] 28 | properties_prefixes = { 29 | "persist.vendor.sensor.": False, 30 | "persist.vendor.sensors.": False, 31 | } 32 | 33 | class SensorsConfigsSection(Section): 34 | name = "Sensors configs" 35 | folders = [ 36 | "etc/motorola/sensors", 37 | "etc/sensor", 38 | "etc/sensors", 39 | ] 40 | 41 | register_section(SensorsSection) 42 | register_section(SensorsConfigsSection) 43 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/servicetracker.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class ServicetrackerSection(Section): 10 | name = "Service tracker" 11 | interfaces = [ 12 | "vendor.qti.hardware.servicetracker", 13 | ] 14 | 15 | register_section(ServicetrackerSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/sla.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class SlaSection(Section): 10 | name = "SLA" 11 | interfaces = [ 12 | "vendor.qti.sla.service", 13 | ] 14 | 15 | register_section(SlaSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/soter.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class SoterSection(Section): 10 | name = "Soter" 11 | interfaces = [ 12 | "vendor.microtrust.hardware.soter", 13 | "vendor.qti.hardware.soter", 14 | ] 15 | apps = [ 16 | "SoterService", 17 | ] 18 | 19 | register_section(SoterSection) 20 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/soundtrigger.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class SoundtriggerSection(Section): 10 | name = "Soundtrigger" 11 | interfaces = [ 12 | "android.hardware.soundtrigger", 13 | "android.hardware.soundtrigger3", 14 | "vendor.qti.voiceprint", 15 | ] 16 | hardware_modules = [ 17 | "sound_trigger", 18 | ] 19 | properties_prefixes = { 20 | "ro.vendor.audio.soundtrigger": False, 21 | } 22 | 23 | register_section(SoundtriggerSection) 24 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/storage.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class StorageFirmwareSection(Section): 10 | name = "Storage firmware" 11 | folders = [ 12 | "firmware/ufs", 13 | ] 14 | 15 | register_section(StorageFirmwareSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/tetheroffload.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class TetherOffloadSection(Section): 10 | name = "Tether offload" 11 | interfaces = [ 12 | "android.hardware.tetheroffload", 13 | "android.hardware.tetheroffload.config", 14 | "android.hardware.tetheroffload.control", 15 | ] 16 | binaries = [ 17 | "tetheroffloadservice", 18 | ] 19 | 20 | register_section(TetherOffloadSection) 21 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/thermal.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class ThermalSection(Section): 10 | name = "Thermal" 11 | interfaces = [ 12 | "android.hardware.thermal", 13 | ] 14 | hardware_modules = [ 15 | "thermal", 16 | ] 17 | properties_prefixes = { 18 | "vendor.sys.thermal.": False, 19 | } 20 | 21 | class ThermalQcomSection(Section): 22 | name = "Thermal (Qualcomm)" 23 | interfaces = [ 24 | "vendor.qti.hardware.limits", 25 | ] 26 | binaries = [ 27 | "thermal-engine", 28 | ] 29 | libraries = [ 30 | "libthermalclient", 31 | ] 32 | 33 | class ThermalXiaomiSection(Section): 34 | name = "Thermal (Xiaomi)" 35 | binaries = [ 36 | "mi_thermald", 37 | ] 38 | 39 | class ThermalConfigsSection(Section): 40 | name = "Thermal configs" 41 | folders = [ 42 | "etc/temperature_profile" 43 | ] 44 | patterns = [ 45 | "etc/thermal.*.\.conf", 46 | ] 47 | 48 | register_section(ThermalSection) 49 | register_section(ThermalQcomSection) 50 | register_section(ThermalXiaomiSection) 51 | register_section(ThermalConfigsSection) 52 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/time.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class TimeSection(Section): 10 | name = "Time services" 11 | apps = [ 12 | "TimeService", 13 | ] 14 | binaries = [ 15 | "time_daemon", 16 | ] 17 | libraries = [ 18 | "libtime_genoff", 19 | ] 20 | 21 | register_section(TimeSection) 22 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/touch.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class TouchHbtpSection(Section): 10 | name = "Touch (HBTP)" 11 | interfaces = [ 12 | "vendor.qti.hardware.improvetouch.touchcompanion", 13 | ] 14 | binaries = [ 15 | "hbtp_daemon", 16 | ] 17 | folders = [ 18 | "etc/hbtp", 19 | ] 20 | 21 | class TouchOplusSection(Section): 22 | name = "Touch (oplus)" 23 | interfaces = [ 24 | "vendor-oplus-hardware-touch", 25 | ] 26 | 27 | class TouchXiaomiSection(Section): 28 | name = "Touch (Xiaomi)" 29 | interfaces = [ 30 | "vendor.xiaomi.hardware.touchfeature", 31 | ] 32 | properties_prefixes = { 33 | "ro.vendor.touchfeature.": False, 34 | } 35 | 36 | class TouchFirmwareSection(Section): 37 | name = "Touch firmware" 38 | folders = [ 39 | "firmware/tp", 40 | ] 41 | 42 | register_section(TouchHbtpSection) 43 | register_section(TouchOplusSection) 44 | register_section(TouchXiaomiSection) 45 | register_section(TouchFirmwareSection) 46 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/trusted_ui.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class TrustedUiSection(Section): 10 | name = "Trusted UI" 11 | interfaces = [ 12 | "vendor.qti.hardware.trustedui", 13 | "vendor.qti.hardware.tui_comm", 14 | "vendor.trustonic.tee.tui", 15 | ] 16 | binaries = [ 17 | "TrustedUISampleTest", 18 | ] 19 | libraries = [ 20 | "libTrustedUI", 21 | "libTrustedUIAIDL", 22 | "libTrustedUITZ", 23 | "libTrustedUIVM", 24 | ] 25 | 26 | register_section(TrustedUiSection) 27 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/tv.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class TvSection(Section): 10 | name = "TV" 11 | interfaces = [ 12 | "android.hardware.tv.cec", 13 | "android.hardware.tv.input", 14 | "android.hardware.tv.tuner", 15 | ] 16 | hardware_modules = [ 17 | "tv_input", 18 | ] 19 | 20 | register_section(TvSection) 21 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/usb.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class UsbSection(Section): 10 | name = "USB" 11 | interfaces = [ 12 | "android.hardware.usb", 13 | ] 14 | properties_prefixes = { 15 | "vendor.usb.": False, 16 | } 17 | 18 | register_section(UsbSection) 19 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/uwb.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class UwbSection(Section): 10 | name = "UWB" 11 | interfaces = [ 12 | "android.hardware.uwb", 13 | "android.hardware.uwb.fira_android", 14 | ] 15 | 16 | register_section(UwbSection) 17 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/vibrator.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class VibratorSection(Section): 10 | name = "Vibrator" 11 | interfaces = [ 12 | "android.hardware.vibrator", 13 | "motorola.hardware.vibrator", 14 | "vendor.asus.vibrator.vibratorgovern", 15 | "vendor.oplus.hardware.vibrator", 16 | "vendor.qti.hardware.vibrator", 17 | "vendor.xiaomi.hardware.vibratorfeature", 18 | ] 19 | hardware_modules = [ 20 | "vibrator", 21 | ] 22 | 23 | class VibratorFirmwareSection(Section): 24 | name = "Vibrator firmware" 25 | folders = [ 26 | "etc/vibrator", 27 | ] 28 | patterns = [ 29 | "(.*/)?firmware/.*(rtp|RTP)\.bin", 30 | "(.*/)?firmware/aw8622x.*\.bin", 31 | "(.*/)?firmware/aw8697.*\.bin", 32 | ] 33 | 34 | register_section(VibratorSection) 35 | register_section(VibratorFirmwareSection) 36 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/vr.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class VrSection(Section): 10 | name = "VR" 11 | interfaces = [ 12 | "android.hardware.vr", 13 | ] 14 | hardware_modules = [ 15 | "vr", 16 | ] 17 | 18 | register_section(VrSection) 19 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/weaver.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class WeaverSection(Section): 10 | name = "Weaver" 11 | interfaces = [ 12 | "android.hardware.weaver", 13 | ] 14 | 15 | register_section(WeaverSection) 16 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/wifi.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class WifiSection(Section): 10 | name = "Wi-Fi" 11 | interfaces = [ 12 | "android.hardware.wifi", 13 | "vendor.asus.wifi.netutil", 14 | "vendor.asus.wifi.rttutil", 15 | "vendor.ims.wifiantennamode", 16 | "vendor.mediatek.hardware.wifi.hostapd", 17 | "vendor.mediatek.hardware.wifi.supplicant", 18 | "vendor.oplus.hardware.wifi", 19 | "vendor.oplus.hardware.wifi-aidl", 20 | "vendor.qti.hardware.fstman", 21 | "vendor.qti.hardware.wifi.hostapd", 22 | "vendor.qti.hardware.wifi.keystore", 23 | "vendor.qti.hardware.wifi.supplicant", 24 | "vendor.qti.hardware.wifi.wifilearner", 25 | "vendor.qti.hardware.wigig.netperftuner", 26 | "vendor.qti.hardware.wigig.supptunnel", 27 | ] 28 | binaries = [ 29 | "cnss-daemon", 30 | "hostapd", 31 | "hostapd_cli", 32 | "wcnss_service", 33 | "wlan_assistant", 34 | "wmt_launcher", 35 | "wmt_loader", 36 | "wpa_cli", 37 | "wpa_supplicant", 38 | ] 39 | filenames = [ 40 | "init.wlan_drv.rc", 41 | ] 42 | libraries = [ 43 | "libwifi-hal-qcom", 44 | ] 45 | properties_prefixes = { 46 | "ro.hardware.wlan.": False, 47 | "ro.wifi.": False, 48 | "ro.wlan.": False, 49 | "wifi.": False, 50 | } 51 | 52 | class WifiConfigsSection(Section): 53 | name = "Wi-Fi configs" 54 | folders = [ 55 | "etc/wifi", 56 | ] 57 | 58 | class WifiFirmwareSection(Section): 59 | name = "Wi-Fi firmware" 60 | folders = [ 61 | "firmware/wigig", 62 | "firmware/wlan", 63 | ] 64 | 65 | register_section(WifiSection) 66 | register_section(WifiConfigsSection) 67 | register_section(WifiFirmwareSection) 68 | -------------------------------------------------------------------------------- /aospdtgen/proprietary_files/sections/wifidisplay.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from aospdtgen.proprietary_files.section import Section, register_section 8 | 9 | class WifiDisplaySection(Section): 10 | name = "Wi-Fi Display" 11 | interfaces = [ 12 | "com.qualcomm.qti.wifidisplayhal", 13 | "vendor.qti.hardware.sigma_miracast", 14 | "vendor.qti.hardware.wifidisplaysession", 15 | ] 16 | apps = [ 17 | "WfdService", 18 | ] 19 | binaries = [ 20 | "wfdhdcphalservice", 21 | "wfdservice", 22 | "wfdvndservice", 23 | "wifidisplayhalservice", 24 | ] 25 | libraries = [ 26 | "libmiracast", 27 | ] 28 | filenames = [ 29 | "wfdconfig.xml", 30 | "wifidisplayhalservice.policy", 31 | ] 32 | patterns = [ 33 | "etc/seccomp_policy/wfd.*.service\.policy", 34 | ] 35 | properties_prefixes = { 36 | "persist.debug.wfd.": False, 37 | "persist.sys.wfd.": False, 38 | } 39 | 40 | register_section(WifiDisplaySection) 41 | -------------------------------------------------------------------------------- /aospdtgen/templates/Android.bp.jinja2: -------------------------------------------------------------------------------- 1 | {% include 'LICENSE.jinja2' %} 2 | 3 | soong_namespace { 4 | } 5 | 6 | -------------------------------------------------------------------------------- /aospdtgen/templates/Android.mk.jinja2: -------------------------------------------------------------------------------- 1 | {% include 'LICENSE.jinja2' %} 2 | 3 | LOCAL_PATH := $(call my-dir) 4 | 5 | ifeq ($(TARGET_DEVICE),{{ device_info.codename }}) 6 | include $(call all-subdir-makefiles,$(LOCAL_PATH)) 7 | endif 8 | 9 | -------------------------------------------------------------------------------- /aospdtgen/templates/AndroidProducts.mk.jinja2: -------------------------------------------------------------------------------- 1 | {% include 'LICENSE.jinja2' %} 2 | 3 | PRODUCT_MAKEFILES := \ 4 | $(LOCAL_DIR)/lineage_{{ device_info.codename }}.mk 5 | 6 | COMMON_LUNCH_CHOICES := \ 7 | lineage_{{ device_info.codename }}-user \ 8 | lineage_{{ device_info.codename }}-userdebug \ 9 | lineage_{{ device_info.codename }}-eng 10 | 11 | -------------------------------------------------------------------------------- /aospdtgen/templates/BoardConfig.mk.jinja2: -------------------------------------------------------------------------------- 1 | {% include 'LICENSE.jinja2' %} 2 | 3 | DEVICE_PATH := device/{{ device_info.manufacturer }}/{{ device_info.codename }} 4 | 5 | {% if device_info.device_is_ab %} 6 | # A/B 7 | AB_OTA_UPDATER := true 8 | AB_OTA_PARTITIONS += 9 | {%- for partition in fstab.get_ab_partitions_models() %} \ 10 | {{ partition.name }} 11 | {%- endfor %} 12 | 13 | BOARD_USES_RECOVERY_AS_BOOT := true 14 | 15 | {% endif %} 16 | # Architecture 17 | TARGET_ARCH := {{ device_info.arch.arch }} 18 | TARGET_ARCH_VARIANT := {{ device_info.arch.arch_variant }} 19 | TARGET_CPU_ABI := {{ device_info.arch.cpu_abi }} 20 | TARGET_CPU_ABI2 := {{ device_info.arch.cpu_abi2 }} 21 | TARGET_CPU_VARIANT := generic 22 | TARGET_CPU_VARIANT_RUNTIME := {{ device_info.cpu_variant }} 23 | 24 | {% if device_info.second_arch %} 25 | TARGET_2ND_ARCH := {{ device_info.second_arch.arch }} 26 | TARGET_2ND_ARCH_VARIANT := {{ device_info.second_arch.arch_variant }} 27 | TARGET_2ND_CPU_ABI := {{ device_info.second_arch.cpu_abi }} 28 | TARGET_2ND_CPU_ABI2 := {{ device_info.second_arch.cpu_abi2 }} 29 | TARGET_2ND_CPU_VARIANT := generic 30 | TARGET_2ND_CPU_VARIANT_RUNTIME := {{ device_info.second_cpu_variant }} 31 | 32 | {% endif %} 33 | {% if device_info.arch.bitness != 64 %} 34 | TARGET_USES_64_BIT_BINDER := true 35 | 36 | {% endif %} 37 | {% if not device_info.device_uses_updatable_apex %} 38 | # APEX 39 | OVERRIDE_TARGET_FLATTEN_APEX := true 40 | 41 | {% endif %} 42 | # Bootloader 43 | {% if device_info.bootloader_board_name %} 44 | TARGET_BOOTLOADER_BOARD_NAME := {{ device_info.bootloader_board_name }} 45 | {% endif %} 46 | TARGET_NO_BOOTLOADER := true 47 | 48 | {% if device_info.screen_density or device_info.use_vulkan %} 49 | # Display 50 | {% if device_info.screen_density %} 51 | TARGET_SCREEN_DENSITY := {{ device_info.screen_density }} 52 | {% endif %} 53 | {% if device_info.use_vulkan %} 54 | TARGET_USES_VULKAN := true 55 | {% endif %} 56 | 57 | {% endif %} 58 | # Kernel 59 | {% if boot_configuration.boot_image_info.header_version != "0" %} 60 | BOARD_BOOTIMG_HEADER_VERSION := {{ boot_configuration.boot_image_info.header_version }} 61 | {% endif %} 62 | {% if boot_configuration.base_address %} 63 | BOARD_KERNEL_BASE := {{ boot_configuration.base_address }} 64 | {% endif %} 65 | {% if boot_configuration.cmdline %} 66 | BOARD_KERNEL_CMDLINE := {{ boot_configuration.cmdline }} 67 | {% endif %} 68 | {% if boot_configuration.pagesize %} 69 | BOARD_KERNEL_PAGESIZE := {{ boot_configuration.pagesize }} 70 | {% endif %} 71 | {% if boot_configuration.boot_image_info.header_version != "0" %} 72 | BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION) 73 | {% endif %} 74 | BOARD_KERNEL_IMAGE_NAME := Image 75 | {% if boot_configuration.dt %} 76 | BOARD_KERNEL_SEPARATED_DT := true 77 | {% endif %} 78 | {% if boot_configuration.dtb %} 79 | BOARD_INCLUDE_DTB_IN_BOOTIMG := true 80 | {% endif %} 81 | {% if boot_configuration.dtbo %} 82 | BOARD_KERNEL_SEPARATED_DTBO := true 83 | {% endif %} 84 | TARGET_KERNEL_CONFIG := {{ device_info.codename }}_defconfig 85 | TARGET_KERNEL_SOURCE := kernel/{{ device_info.manufacturer }}/{{ device_info.codename }} 86 | 87 | # Kernel - prebuilt 88 | TARGET_FORCE_PREBUILT_KERNEL := true 89 | ifeq ($(TARGET_FORCE_PREBUILT_KERNEL),true) 90 | TARGET_PREBUILT_KERNEL := $(DEVICE_PATH)/prebuilts/kernel 91 | {% if boot_configuration.dt %} 92 | TARGET_PREBUILT_DT := $(DEVICE_PATH)/prebuilts/dt.img 93 | BOARD_MKBOOTIMG_ARGS += --dt $(TARGET_PREBUILT_DT) 94 | BOARD_KERNEL_SEPARATED_DT := 95 | {% endif %} 96 | {% if boot_configuration.dtb %} 97 | TARGET_PREBUILT_DTB := $(DEVICE_PATH)/prebuilts/dtb.img 98 | BOARD_MKBOOTIMG_ARGS += --dtb $(TARGET_PREBUILT_DTB) 99 | BOARD_INCLUDE_DTB_IN_BOOTIMG := 100 | {% endif %} 101 | {% if boot_configuration.dtbo %} 102 | BOARD_PREBUILT_DTBOIMAGE := $(DEVICE_PATH)/prebuilts/dtbo.img 103 | BOARD_KERNEL_SEPARATED_DTBO := 104 | {% endif %} 105 | endif 106 | 107 | # Partitions 108 | {% if device_info.device_uses_system_as_root %} 109 | BOARD_BUILD_SYSTEM_ROOT_IMAGE := true 110 | {% endif %} 111 | {% if boot_configuration.pagesize %} 112 | BOARD_FLASH_BLOCK_SIZE := {{ boot_configuration.pagesize|int * 64 }} # (BOARD_KERNEL_PAGESIZE * 64) 113 | {% endif %} 114 | BOARD_BOOTIMAGE_PARTITION_SIZE := {{ boot_configuration.boot_image_info.origsize }} 115 | {% if boot_configuration.dtbo %} 116 | BOARD_DTBOIMG_PARTITION_SIZE := {{ boot_configuration.dtbo.stat().st_size }} 117 | {% endif %} 118 | {% if boot_configuration.recovery_image_info %} 119 | BOARD_RECOVERYIMAGE_PARTITION_SIZE := {{ boot_configuration.recovery_image_info.origsize }} 120 | {% endif %} 121 | {% if boot_configuration.init_boot_image_info %} 122 | BOARD_INIT_BOOT_IMAGE_PARTITION_SIZE := {{ boot_configuration.init_boot_image_info.origsize }} 123 | {% endif %} 124 | {% if boot_configuration.vendor_boot_image_info %} 125 | BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := {{ boot_configuration.vendor_boot_image_info.origsize }} 126 | {% endif %} 127 | {% if boot_configuration.vendor_kernel_boot_image_info %} 128 | BOARD_VENDOR_KERNEL_BOOTIMAGE_PARTITION_SIZE := {{ boot_configuration.vendor_kernel_boot_image_info.origsize }} 129 | {% endif %} 130 | {% if device_info.device_uses_dynamic_partitions %} 131 | BOARD_SUPER_PARTITION_SIZE := 9126805504 # TODO: Fix hardcoded value 132 | BOARD_SUPER_PARTITION_GROUPS := {{ device_info.manufacturer }}_dynamic_partitions 133 | BOARD_{{ device_info.manufacturer|upper }}_DYNAMIC_PARTITIONS_PARTITION_LIST := 134 | {%- for partition in fstab.get_logical_partitions_models() %} \ 135 | {{ partition.name }} 136 | {%- endfor %} 137 | 138 | BOARD_{{ device_info.manufacturer|upper }}_DYNAMIC_PARTITIONS_SIZE := 9122611200 # TODO: Fix hardcoded value 139 | {% endif %} 140 | 141 | # Platform 142 | TARGET_BOARD_PLATFORM := {{ device_info.platform }} 143 | 144 | # Properties{{ '\n' }} 145 | {%- for partition in partitions.get_all_partitions() %} 146 | {% if partition.build_prop %} 147 | TARGET_{{ partition.model.name|upper }}_PROP += $(DEVICE_PATH)/{{ partition.model.name }}.prop 148 | {% endif %} 149 | {% endfor %} 150 | 151 | # Recovery 152 | TARGET_RECOVERY_FSTAB := $(DEVICE_PATH)/rootdir/etc/{{ fstab.fstab.name }} 153 | {% if boot_configuration.dtbo and not device_info.device_is_ab %} 154 | BOARD_INCLUDE_RECOVERY_DTBO := true 155 | {% endif %} 156 | {% if device_info.device_pixel_format %} 157 | TARGET_RECOVERY_PIXEL_FORMAT := {{ device_info.device_pixel_format }} 158 | {% endif %} 159 | TARGET_USERIMAGES_USE_EXT4 := true 160 | TARGET_USERIMAGES_USE_F2FS := true 161 | 162 | {% if device_info.vendor_build_security_patch %} 163 | # Security patch level 164 | VENDOR_SECURITY_PATCH := {{ device_info.vendor_build_security_patch }} 165 | 166 | {% endif %} 167 | {% if boot_configuration.boot_image_info.sigtype == "AVBv2" %} 168 | # Verified Boot 169 | BOARD_AVB_ENABLE := true 170 | BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flags 3 171 | {% if boot_configuration.recovery_image_info 172 | and boot_configuration.recovery_image_info.sigtype == "AVBv2" %} 173 | BOARD_AVB_RECOVERY_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem 174 | BOARD_AVB_RECOVERY_ALGORITHM := SHA256_RSA4096 175 | BOARD_AVB_RECOVERY_ROLLBACK_INDEX := 1 176 | BOARD_AVB_RECOVERY_ROLLBACK_INDEX_LOCATION := 1 177 | {% endif %} 178 | {% if boot_configuration.vendor_boot_image_info 179 | and boot_configuration.vendor_boot_image_info.sigtype == "AVBv2" %} 180 | BOARD_AVB_VENDOR_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem 181 | BOARD_AVB_VENDOR_BOOT_ALGORITHM := SHA256_RSA4096 182 | BOARD_AVB_VENDOR_BOOT_ROLLBACK_INDEX := 1 183 | BOARD_AVB_VENDOR_BOOT_ROLLBACK_INDEX_LOCATION := 1 184 | {% endif %} 185 | {% if boot_configuration.vendor_kernel_boot_image_info 186 | and boot_configuration.vendor_kernel_boot_image_info.sigtype == "AVBv2" %} 187 | BOARD_AVB_VENDOR_KERNEL_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem 188 | BOARD_AVB_VENDOR_KERNEL_BOOT_ALGORITHM := SHA256_RSA4096 189 | BOARD_AVB_VENDOR_KERNEL_BOOT_ROLLBACK_INDEX := 1 190 | BOARD_AVB_VENDOR_KERNEL_BOOT_ROLLBACK_INDEX_LOCATION := 1 191 | {% endif %} 192 | 193 | {% endif %} 194 | # VINTF 195 | DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/manifest.xml 196 | 197 | # Inherit the proprietary files 198 | include vendor/{{ device_info.manufacturer }}/{{ device_info.codename }}/BoardConfigVendor.mk 199 | 200 | -------------------------------------------------------------------------------- /aospdtgen/templates/LICENSE.jinja2: -------------------------------------------------------------------------------- 1 | {{ comment_prefix }} 2 | {{ comment_prefix }} Copyright (C) {{ current_year }} The LineageOS Project 3 | {{ comment_prefix }} 4 | {{ comment_prefix }} SPDX-License-Identifier: Apache-2.0 5 | {{ comment_prefix }} 6 | 7 | -------------------------------------------------------------------------------- /aospdtgen/templates/README.md.jinja2: -------------------------------------------------------------------------------- 1 | # Android device tree for {{ device_info.brand }} {{ device_info.model }} ({{ device_info.codename }}) 2 | 3 | ``` 4 | {% include 'LICENSE.jinja2' %} 5 | ``` 6 | 7 | -------------------------------------------------------------------------------- /aospdtgen/templates/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | """aospdtgen templates utils.""" 7 | 8 | from jinja2 import Environment, FileSystemLoader 9 | from pathlib import Path 10 | from typing import Optional 11 | 12 | from aospdtgen import module_path 13 | 14 | jinja_env = Environment(loader=FileSystemLoader(module_path / 'templates'), 15 | autoescape=True, trim_blocks=True, lstrip_blocks=True) 16 | 17 | def render_template(path: Optional[Path], template_file: str, 18 | out_file: str = '', to_file=True, **kwargs): 19 | template = jinja_env.get_template(f"{template_file}.jinja2") 20 | rendered_template = template.render(**kwargs) 21 | 22 | if to_file: 23 | if not out_file: 24 | out_file = template_file 25 | 26 | with open(f"{path}/{out_file}", 'w', encoding="utf-8") as out: 27 | out.write(rendered_template) 28 | 29 | return rendered_template 30 | -------------------------------------------------------------------------------- /aospdtgen/templates/device.mk.jinja2: -------------------------------------------------------------------------------- 1 | {% include 'LICENSE.jinja2' %} 2 | 3 | {% if device_info.device_uses_updatable_apex %} 4 | # Enable updating of APEXes 5 | $(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk) 6 | 7 | {% endif %} 8 | {% if device_info.device_is_ab %} 9 | # A/B 10 | {% if device_info.device_uses_virtual_ab %} 11 | $(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk) 12 | 13 | {% endif %} 14 | PRODUCT_PACKAGES += \ 15 | android.hardware.boot@1.2-impl \ 16 | android.hardware.boot@1.2-impl.recovery \ 17 | android.hardware.boot@1.2-service 18 | 19 | PRODUCT_PACKAGES += \ 20 | update_engine \ 21 | update_engine_sideload \ 22 | update_verifier 23 | 24 | {% if partitions.system.fstab_entry and partitions.system.fstab_entry.is_slotselect() %} 25 | AB_OTA_POSTINSTALL_CONFIG += \ 26 | RUN_POSTINSTALL_system=true \ 27 | POSTINSTALL_PATH_system=system/bin/otapreopt_script \ 28 | FILESYSTEM_TYPE_system={{ partitions.system.fstab_entry.fs_type }} \ 29 | POSTINSTALL_OPTIONAL_system=true 30 | 31 | {% endif %} 32 | {% if partitions.vendor.fstab_entry and partitions.vendor.fstab_entry.is_slotselect() %} 33 | AB_OTA_POSTINSTALL_CONFIG += \ 34 | RUN_POSTINSTALL_vendor=true \ 35 | POSTINSTALL_PATH_vendor=bin/checkpoint_gc \ 36 | FILESYSTEM_TYPE_vendor={{ partitions.vendor.fstab_entry.fs_type }} \ 37 | POSTINSTALL_OPTIONAL_vendor=true 38 | 39 | {% endif %} 40 | PRODUCT_PACKAGES += \ 41 | checkpoint_gc \ 42 | otapreopt_script 43 | 44 | {% endif %} 45 | {% if device_info.board_api_level 46 | or device_info.board_shipping_api_level 47 | or device_info.first_api_level %} 48 | # API levels 49 | {% if device_info.board_shipping_api_level %} 50 | BOARD_SHIPPING_API_LEVEL := {{ device_info.board_shipping_api_level }} 51 | {% endif %} 52 | {% if device_info.board_api_level %} 53 | BOARD_API_LEVEL := {{ device_info.board_api_level }} 54 | {% endif %} 55 | {% if device_info.first_api_level %} 56 | PRODUCT_SHIPPING_API_LEVEL := {{ device_info.first_api_level }} 57 | {% endif %} 58 | 59 | {% endif %} 60 | {% if device_info.device_uses_dynamic_partitions %} 61 | # fastbootd 62 | PRODUCT_PACKAGES += \ 63 | android.hardware.fastboot@1.1-impl-mock \ 64 | fastbootd 65 | 66 | {% endif %} 67 | # Health 68 | PRODUCT_PACKAGES += \ 69 | android.hardware.health@2.1-impl \ 70 | {% if not device_info.device_is_ab %} 71 | android.hardware.health@2.1-impl.recovery \ 72 | {% endif %} 73 | android.hardware.health@2.1-service 74 | 75 | # Overlays 76 | PRODUCT_ENFORCE_RRO_TARGETS := * 77 | 78 | {% if device_info.device_uses_dynamic_partitions %} 79 | # Partitions 80 | PRODUCT_USE_DYNAMIC_PARTITIONS := true 81 | 82 | {% endif %} 83 | {% if device_info.product_characteristics %} 84 | # Product characteristics 85 | PRODUCT_CHARACTERISTICS := {{ device_info.product_characteristics }} 86 | 87 | {% endif %} 88 | # Rootdir 89 | PRODUCT_PACKAGES += \{{ '\n' }} 90 | {%- for file in rootdir_bin_files %} 91 | {{ file.name }} \ 92 | {% endfor %} 93 | 94 | PRODUCT_PACKAGES += \ 95 | {{ fstab.fstab.name }} \{{ '\n' }} 96 | {%- for file in rootdir_etc_files %} 97 | {{ file.name }} \ 98 | {% endfor %} 99 | {%- for file in rootdir_recovery_etc_files %} 100 | {{ file.name }} \ 101 | {% endfor %} 102 | 103 | {% if device_info.device_uses_dynamic_partitions %} 104 | PRODUCT_COPY_FILES += \ 105 | {% if device_info.device_uses_virtual_ab %} 106 | $(LOCAL_PATH)/rootdir/etc/{{ fstab.fstab.name }}:$(TARGET_VENDOR_RAMDISK_OUT)/first_stage_ramdisk/{{ fstab.fstab.name }} 107 | {% else %} 108 | $(LOCAL_PATH)/rootdir/etc/{{ fstab.fstab.name }}:$(TARGET_COPY_OUT_RAMDISK)/{{ fstab.fstab.name }} 109 | {% endif %} 110 | 111 | {% endif %} 112 | # Soong namespaces 113 | PRODUCT_SOONG_NAMESPACES += \ 114 | $(LOCAL_PATH) 115 | 116 | # Inherit the proprietary files 117 | $(call inherit-product, vendor/{{ device_info.manufacturer }}/{{ device_info.codename }}/{{ device_info.codename }}-vendor.mk) 118 | 119 | -------------------------------------------------------------------------------- /aospdtgen/templates/extract-files.sh.jinja2: -------------------------------------------------------------------------------- 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={{ device_info.codename }} 12 | VENDOR={{ device_info.manufacturer }} 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 | 63 | -------------------------------------------------------------------------------- /aospdtgen/templates/lineage_device.mk.jinja2: -------------------------------------------------------------------------------- 1 | {% include 'LICENSE.jinja2' %} 2 | 3 | # Inherit from those products. Most specific first. 4 | {% if device_info.arch.bitness == 64 %} 5 | $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) 6 | {% endif %} 7 | $(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk) 8 | 9 | # Inherit some common Lineage stuff. 10 | $(call inherit-product, vendor/lineage/config/common_full_phone.mk) 11 | 12 | # Inherit from {{ device_info.codename }} device 13 | $(call inherit-product, device/{{ device_info.manufacturer }}/{{ device_info.codename }}/device.mk) 14 | 15 | PRODUCT_DEVICE := {{ device_info.codename }} 16 | PRODUCT_NAME := lineage_{{ device_info.codename }} 17 | {% if device_info.brand %} 18 | PRODUCT_BRAND := {{ device_info.brand }} 19 | {% endif %} 20 | {% if device_info.model %} 21 | PRODUCT_MODEL := {{ device_info.model }} 22 | {% endif %} 23 | PRODUCT_MANUFACTURER := {{ device_info.manufacturer }} 24 | 25 | PRODUCT_GMS_CLIENTID_BASE := {{ device_info.gms_clientid_base }} 26 | {% if device_info.build_description %} 27 | 28 | PRODUCT_BUILD_PROP_OVERRIDES += \ 29 | PRIVATE_BUILD_DESC="{{ device_info.build_description }}" 30 | {% endif %} 31 | {% if device_info.build_fingerprint %} 32 | 33 | BUILD_FINGERPRINT := {{ device_info.build_fingerprint }} 34 | {% endif %} 35 | 36 | -------------------------------------------------------------------------------- /aospdtgen/templates/rootdir_Android.bp.jinja2: -------------------------------------------------------------------------------- 1 | {% include 'LICENSE.jinja2' %} 2 | 3 | // Init scripts{{ '\n' }} 4 | {%- for file in rootdir_bin_files %} 5 | sh_binary { 6 | name: "{{ file.name }}", 7 | src: "bin/{{ file.name }}", 8 | vendor: true, 9 | } 10 | 11 | {% endfor %} 12 | // Init configuration files{{ '\n' }} 13 | {%- for file in rootdir_etc_files %} 14 | {% if not file.name.startswith('fstab.') %} 15 | prebuilt_etc { 16 | name: "{{ file.name }}", 17 | src: "etc/{{ file.name }}", 18 | sub_dir: "init/hw", 19 | vendor: true, 20 | } 21 | 22 | {% endif %} 23 | {% endfor %} 24 | // fstab 25 | prebuilt_etc { 26 | name: "{{ fstab.fstab.name }}", 27 | src: "etc/{{ fstab.fstab.name }}", 28 | vendor: true, 29 | } 30 | 31 | -------------------------------------------------------------------------------- /aospdtgen/templates/rootdir_Android.mk.jinja2: -------------------------------------------------------------------------------- 1 | {% include 'LICENSE.jinja2' %} 2 | 3 | LOCAL_PATH := $(call my-dir) 4 | 5 | # Recovery init configuration files{{ '\n' }} 6 | {%- for file in rootdir_recovery_etc_files %} 7 | include $(CLEAR_VARS) 8 | LOCAL_MODULE := {{ file.name }} 9 | LOCAL_MODULE_TAGS := optional 10 | LOCAL_MODULE_CLASS := ETC 11 | LOCAL_SRC_FILES := etc/{{ file.name }} 12 | LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) 13 | include $(BUILD_PREBUILT) 14 | 15 | {% endfor %} 16 | 17 | -------------------------------------------------------------------------------- /aospdtgen/templates/setup-makefiles.sh.jinja2: -------------------------------------------------------------------------------- 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={{ device_info.codename }} 12 | VENDOR={{ device_info.manufacturer }} 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 | # Initialize the helper 28 | setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" 29 | 30 | # Warning headers and guards 31 | write_headers 32 | 33 | write_makefiles "${MY_DIR}/proprietary-files.txt" true 34 | 35 | # Finish 36 | write_footers 37 | 38 | -------------------------------------------------------------------------------- /aospdtgen/utils/boot_configuration.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from pathlib import Path 8 | from sebaubuntu_libs.libaik import AIKImageInfo, AIKManager 9 | from typing import Optional, Tuple, Union 10 | 11 | class BootConfiguration: 12 | """Class representing a device's boot configuration.""" 13 | def __init__(self, dump_path: Path): 14 | """ 15 | Given the path to a dump, parse all the images 16 | and generate a boot configuration. 17 | """ 18 | self.dump_path = dump_path 19 | 20 | self.boot = self._get_image_path("boot") 21 | self.dtbo = self._get_image_path("dtbo") 22 | self.init_boot = self._get_image_path("init_boot") 23 | self.recovery = self._get_image_path("recovery") 24 | self.vendor_boot = self._get_image_path("vendor_boot") 25 | self.vendor_kernel_boot = self._get_image_path("vendor_kernel_boot") 26 | 27 | assert self.boot, "No boot image found" 28 | 29 | self.boot_aik_manager = AIKManager() 30 | self.boot_image_info = self.boot_aik_manager.unpackimg(self.boot) 31 | 32 | self.init_boot_aik_manager, self.init_boot_image_info = self._extract_if_exists( 33 | self.init_boot 34 | ) 35 | 36 | self.recovery_aik_manager, self.recovery_image_info = self._extract_if_exists( 37 | self.recovery 38 | ) 39 | 40 | self.vendor_boot_aik_manager, self.vendor_boot_image_info = self._extract_if_exists( 41 | self.vendor_boot 42 | ) 43 | 44 | self.vendor_kernel_boot_aik_manager, self.vendor_kernel_boot_image_info = self._extract_if_exists( 45 | self.vendor_kernel_boot 46 | ) 47 | 48 | self.kernel = self.boot_image_info.kernel 49 | self.dt = self.boot_image_info.dt 50 | self.dtb = self.boot_image_info.dtb 51 | 52 | self.base_address = self.boot_image_info.base_address 53 | self.cmdline = self.boot_image_info.cmdline 54 | self.pagesize = self.boot_image_info.pagesize 55 | 56 | if self.vendor_boot_image_info: 57 | self.kernel = self.vendor_boot_image_info.kernel or self.kernel 58 | self.dt = self.vendor_boot_image_info.dt or self.dt 59 | self.dtb = self.vendor_boot_image_info.dtb or self.dtb 60 | self.dtbo = self.vendor_boot_image_info.dtbo or self.dtbo 61 | 62 | self.base_address = self.vendor_boot_image_info.base_address or self.base_address 63 | self.cmdline = self.vendor_boot_image_info.cmdline or self.cmdline 64 | self.pagesize = self.vendor_boot_image_info.pagesize or self.pagesize 65 | 66 | if self.init_boot_image_info: 67 | self.base_address = self.init_boot_image_info.base_address or self.base_address 68 | self.cmdline = self.init_boot_image_info.cmdline or self.cmdline 69 | self.pagesize = self.init_boot_image_info.pagesize or self.pagesize 70 | 71 | if self.vendor_kernel_boot_image_info: 72 | self.kernel = self.vendor_kernel_boot_image_info.kernel or self.kernel 73 | self.dt = self.vendor_kernel_boot_image_info.dt or self.dt 74 | self.dtb = self.vendor_kernel_boot_image_info.dtb or self.dtb 75 | self.dtbo = self.vendor_kernel_boot_image_info.dtbo or self.dtbo 76 | 77 | self.base_address = self.vendor_kernel_boot_image_info.base_address or self.base_address 78 | self.cmdline = self.vendor_kernel_boot_image_info.cmdline or self.cmdline 79 | self.pagesize = self.vendor_kernel_boot_image_info.pagesize or self.pagesize 80 | 81 | def _get_image_path(self, partition: str) -> Union[Path, None]: 82 | path = self.dump_path / f"{partition}.img" 83 | return path if path.is_file() else None 84 | 85 | @staticmethod 86 | def _extract_if_exists( 87 | image: Optional[Path] 88 | ) -> Tuple[Optional[AIKManager], Optional[AIKImageInfo]]: 89 | if not image: 90 | return None, None 91 | 92 | aik_manager = AIKManager() 93 | image_info = aik_manager.unpackimg(image, ignore_ramdisk_errors=True) 94 | 95 | return aik_manager, image_info 96 | 97 | def copy_files_to_folder(self, folder: Path) -> None: 98 | """Copy all prebuilts to a folder.""" 99 | if self.kernel: 100 | (folder / "kernel").write_bytes(self.kernel.read_bytes()) 101 | 102 | if self.dt: 103 | (folder / "dt.img").write_bytes(self.dt.read_bytes()) 104 | 105 | if self.dtb: 106 | (folder / "dtb.img").write_bytes(self.dtb.read_bytes()) 107 | 108 | if self.dtbo: 109 | (folder / "dtbo.img").write_bytes(self.dtbo.read_bytes()) 110 | 111 | def cleanup(self): 112 | """Cleanup all the temporary files. Do not use this object anymore after calling this.""" 113 | self.boot_aik_manager.cleanup() 114 | 115 | if self.init_boot_aik_manager: 116 | self.init_boot_aik_manager.cleanup() 117 | 118 | if self.recovery_aik_manager: 119 | self.recovery_aik_manager.cleanup() 120 | 121 | if self.vendor_boot_aik_manager: 122 | self.vendor_boot_aik_manager.cleanup() 123 | 124 | if self.vendor_kernel_boot_aik_manager: 125 | self.vendor_kernel_boot_aik_manager.cleanup() 126 | -------------------------------------------------------------------------------- /aospdtgen/utils/format_props.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2024 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from pathlib import Path 8 | from typing import Dict 9 | from sebaubuntu_libs.libandroid.props import BuildProp 10 | 11 | from aospdtgen.proprietary_files.section import sections 12 | from aospdtgen.utils.ignored_props import IGNORED_PROPS 13 | 14 | def dump_partition_build_prop(build_prop: BuildProp, destination_file_path: Path): 15 | """Filter, order and format the build properties and write to file.""" 16 | filtered_build_props = BuildProp() 17 | filtered_build_props.import_props(build_prop) 18 | 19 | # Remove ignored properties 20 | for ignored_prop in IGNORED_PROPS: 21 | filtered_build_props.pop(ignored_prop, None) 22 | 23 | # Don't write the file if there are no properties 24 | if not filtered_build_props: 25 | return 26 | 27 | section_to_props: Dict[str, BuildProp] = {} 28 | 29 | for section in sections: 30 | section_props = BuildProp() 31 | 32 | # Check if the prop belongs to the section 33 | for key, value in filtered_build_props.items(): 34 | if section.property_match(key): 35 | section_props.set_prop(key, value) 36 | 37 | # Remove the matched properties from the filtered build props 38 | for prop in section_props.keys(): 39 | filtered_build_props.pop(prop, None) 40 | 41 | if section_props: 42 | section_to_props[section.name] = section_props 43 | 44 | # Add the non matched props to a "Miscellaneous" section 45 | if filtered_build_props: 46 | section_to_props["Miscellaneous"] = filtered_build_props 47 | 48 | # Write the properties to the file 49 | with destination_file_path.open("w") as f: 50 | for section, props in section_to_props.items(): 51 | f.write(f"# {section}\n") 52 | for prop in sorted(props.keys()): 53 | f.write(f"{prop}={build_prop.get_prop(prop)}\n") 54 | f.write("\n") 55 | -------------------------------------------------------------------------------- /aospdtgen/utils/ignored_props.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2022 The LineageOS Project 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | from sebaubuntu_libs.libandroid.props.utils import get_partition_props 8 | from typing import List 9 | 10 | IGNORED_PROPS: List[str] = [] 11 | """A list of build props that should be ignored because automatically generated.""" 12 | 13 | # Build info 14 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.date", add_empty=True)) 15 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.date.utc", add_empty=True)) 16 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.description", add_empty=True)) 17 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.display.id", add_empty=True)) 18 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.fingerprint", add_empty=True)) 19 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.flavor", add_empty=True)) 20 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.host", add_empty=True)) 21 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.id", add_empty=True)) 22 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.keys", add_empty=True)) 23 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.product", add_empty=True)) 24 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.security_patch", add_empty=True)) 25 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.tags", add_empty=True)) 26 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.type", add_empty=True)) 27 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.user", add_empty=True)) 28 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.all_codenames", add_empty=True)) 29 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.base_os", add_empty=True)) 30 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.codename", add_empty=True)) 31 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.incremental", add_empty=True)) 32 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.min_supported_target_sdk", add_empty=True)) 33 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.preview_sdk", add_empty=True)) 34 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.preview_sdk_fingerprint", add_empty=True)) 35 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.known_codenames", add_empty=True)) 36 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.release", add_empty=True)) 37 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.release_or_codename", add_empty=True)) 38 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.release_or_preview_display", add_empty=True)) 39 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.sdk", add_empty=True)) 40 | IGNORED_PROPS.extend(get_partition_props("ro.{}build.version.security_patch", add_empty=True)) 41 | 42 | # Product info 43 | IGNORED_PROPS.extend(get_partition_props("ro.product.{}brand", add_empty=True)) 44 | IGNORED_PROPS.extend(get_partition_props("ro.product.{}brand_for_attestation", add_empty=True)) 45 | IGNORED_PROPS.extend(get_partition_props("ro.product.{}device", add_empty=True)) 46 | IGNORED_PROPS.extend(get_partition_props("ro.product.{}manufacturer", add_empty=True)) 47 | IGNORED_PROPS.extend(get_partition_props("ro.product.{}model", add_empty=True)) 48 | IGNORED_PROPS.extend(get_partition_props("ro.product.{}model_for_attestation", add_empty=True)) 49 | IGNORED_PROPS.extend(get_partition_props("ro.product.{}name", add_empty=True)) 50 | IGNORED_PROPS.extend(get_partition_props("ro.product.{}name_for_attestation", add_empty=True)) 51 | 52 | # ABI list 53 | IGNORED_PROPS.extend(get_partition_props("ro.{}product.cpu.abi", add_empty=True)) 54 | IGNORED_PROPS.extend(get_partition_props("ro.{}product.cpu.abilist", add_empty=True)) 55 | IGNORED_PROPS.extend(get_partition_props("ro.{}product.cpu.abilist32", add_empty=True)) 56 | IGNORED_PROPS.extend(get_partition_props("ro.{}product.cpu.abilist64", add_empty=True)) 57 | 58 | # Screen density 59 | IGNORED_PROPS.append("ro.sf.lcd_density") 60 | 61 | # Treble/VNDK 62 | IGNORED_PROPS.extend(get_partition_props("ro.{}vndk.version", add_empty=True)) 63 | IGNORED_PROPS.append("ro.treble.enabled") 64 | IGNORED_PROPS.append("ro.vndk.lite") 65 | 66 | # Bionic 67 | IGNORED_PROPS.append("ro.bionic.arch") 68 | IGNORED_PROPS.append("ro.bionic.cpu_variant") 69 | IGNORED_PROPS.append("ro.bionic.2nd_arch") 70 | IGNORED_PROPS.append("ro.bionic.2nd_cpu_variant") 71 | 72 | # Platform 73 | IGNORED_PROPS.append("ro.board.platform") 74 | 75 | # Partitions 76 | IGNORED_PROPS.append("ro.boot.dynamic_partitions") 77 | IGNORED_PROPS.append("ro.build.ab_update") 78 | IGNORED_PROPS.append("ro.build.system_root_image") 79 | IGNORED_PROPS.append("ro.virtual_ab.enabled") 80 | 81 | # Pixel format 82 | IGNORED_PROPS.append("ro.minui.pixel_format") 83 | 84 | # API levels 85 | IGNORED_PROPS.append("ro.board.api_level") 86 | IGNORED_PROPS.append("ro.board.first_api_level") 87 | IGNORED_PROPS.append("ro.product.first_api_level") 88 | 89 | # Zygote 90 | IGNORED_PROPS.append("ro.zygote") 91 | 92 | # Dalvik 93 | IGNORED_PROPS.append("dalvik.vm.isa.arm.features") 94 | IGNORED_PROPS.append("dalvik.vm.isa.arm.variant") 95 | IGNORED_PROPS.append("dalvik.vm.isa.arm64.features") 96 | IGNORED_PROPS.append("dalvik.vm.isa.arm64.variant") 97 | IGNORED_PROPS.append("dalvik.vm.isa.x86.features") 98 | IGNORED_PROPS.append("dalvik.vm.isa.x86.variant") 99 | IGNORED_PROPS.append("dalvik.vm.isa.x86_64.features") 100 | IGNORED_PROPS.append("dalvik.vm.isa.x86_64.variant") 101 | 102 | # Characteristics 103 | IGNORED_PROPS.append("ro.build.characteristics") 104 | 105 | # Board 106 | IGNORED_PROPS.append("ro.product.board") 107 | 108 | # Locale 109 | IGNORED_PROPS.append("ro.product.locale") 110 | 111 | # APEX 112 | IGNORED_PROPS.append("ro.apex.updatable") 113 | 114 | # Vulkan 115 | IGNORED_PROPS.append("ro.hwui.use_vulkan") 116 | 117 | # ADB 118 | IGNORED_PROPS.append("persist.sys.usb.config") 119 | IGNORED_PROPS.append("ro.adb.secure") 120 | IGNORED_PROPS.append("ro.debuggable") 121 | IGNORED_PROPS.append("ro.force.debuggable") 122 | IGNORED_PROPS.append("ro.secure") 123 | -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. 2 | 3 | [[package]] 4 | name = "certifi" 5 | version = "2024.7.4" 6 | description = "Python package for providing Mozilla's CA Bundle." 7 | optional = false 8 | python-versions = ">=3.6" 9 | groups = ["main"] 10 | files = [ 11 | {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, 12 | {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, 13 | ] 14 | 15 | [[package]] 16 | name = "charset-normalizer" 17 | version = "3.3.2" 18 | description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." 19 | optional = false 20 | python-versions = ">=3.7.0" 21 | groups = ["main"] 22 | files = [ 23 | {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, 24 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, 25 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, 26 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, 27 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, 28 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, 29 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, 30 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, 31 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, 32 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, 33 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, 34 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, 35 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, 36 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, 37 | {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, 38 | {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, 39 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, 40 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, 41 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, 42 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, 43 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, 44 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, 45 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, 46 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, 47 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, 48 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, 49 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, 50 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, 51 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, 52 | {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, 53 | {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, 54 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, 55 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, 56 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, 57 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, 58 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, 59 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, 60 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, 61 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, 62 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, 63 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, 64 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, 65 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, 66 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, 67 | {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, 68 | {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, 69 | {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, 70 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, 71 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, 72 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, 73 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, 74 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, 75 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, 76 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, 77 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, 78 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, 79 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, 80 | {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, 81 | {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, 82 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, 83 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, 84 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, 85 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, 86 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, 87 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, 88 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, 89 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, 90 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, 91 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, 92 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, 93 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, 94 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, 95 | {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, 96 | {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, 97 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, 98 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, 99 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, 100 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, 101 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, 102 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, 103 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, 104 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, 105 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, 106 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, 107 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, 108 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, 109 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, 110 | {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, 111 | {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, 112 | {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, 113 | ] 114 | 115 | [[package]] 116 | name = "gitdb" 117 | version = "4.0.11" 118 | description = "Git Object Database" 119 | optional = false 120 | python-versions = ">=3.7" 121 | groups = ["main"] 122 | files = [ 123 | {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, 124 | {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, 125 | ] 126 | 127 | [package.dependencies] 128 | smmap = ">=3.0.1,<6" 129 | 130 | [[package]] 131 | name = "gitpython" 132 | version = "3.1.44" 133 | description = "GitPython is a Python library used to interact with Git repositories" 134 | optional = false 135 | python-versions = ">=3.7" 136 | groups = ["main"] 137 | files = [ 138 | {file = "GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110"}, 139 | {file = "gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269"}, 140 | ] 141 | 142 | [package.dependencies] 143 | gitdb = ">=4.0.1,<5" 144 | 145 | [package.extras] 146 | doc = ["sphinx (>=7.1.2,<7.2)", "sphinx-autodoc-typehints", "sphinx_rtd_theme"] 147 | test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock ; python_version < \"3.8\"", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions ; python_version < \"3.11\""] 148 | 149 | [[package]] 150 | name = "idna" 151 | version = "3.7" 152 | description = "Internationalized Domain Names in Applications (IDNA)" 153 | optional = false 154 | python-versions = ">=3.5" 155 | groups = ["main"] 156 | files = [ 157 | {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, 158 | {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, 159 | ] 160 | 161 | [[package]] 162 | name = "jinja2" 163 | version = "3.1.6" 164 | description = "A very fast and expressive template engine." 165 | optional = false 166 | python-versions = ">=3.7" 167 | groups = ["main"] 168 | files = [ 169 | {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, 170 | {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, 171 | ] 172 | 173 | [package.dependencies] 174 | MarkupSafe = ">=2.0" 175 | 176 | [package.extras] 177 | i18n = ["Babel (>=2.7)"] 178 | 179 | [[package]] 180 | name = "markupsafe" 181 | version = "2.1.5" 182 | description = "Safely add untrusted strings to HTML/XML markup." 183 | optional = false 184 | python-versions = ">=3.7" 185 | groups = ["main"] 186 | files = [ 187 | {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, 188 | {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, 189 | {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, 190 | {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, 191 | {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, 192 | {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, 193 | {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, 194 | {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, 195 | {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, 196 | {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, 197 | {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, 198 | {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, 199 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, 200 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, 201 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, 202 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, 203 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, 204 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, 205 | {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, 206 | {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, 207 | {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, 208 | {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, 209 | {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, 210 | {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, 211 | {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, 212 | {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, 213 | {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, 214 | {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, 215 | {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, 216 | {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, 217 | {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, 218 | {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, 219 | {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, 220 | {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, 221 | {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, 222 | {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, 223 | {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, 224 | {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, 225 | {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, 226 | {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, 227 | {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, 228 | {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, 229 | {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, 230 | {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, 231 | {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, 232 | {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, 233 | {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, 234 | {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, 235 | {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, 236 | {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, 237 | {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, 238 | {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, 239 | {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, 240 | {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, 241 | {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, 242 | {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, 243 | {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, 244 | {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, 245 | {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, 246 | {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, 247 | ] 248 | 249 | [[package]] 250 | name = "pyelftools" 251 | version = "0.31" 252 | description = "Library for analyzing ELF files and DWARF debugging information" 253 | optional = false 254 | python-versions = "*" 255 | groups = ["main"] 256 | files = [ 257 | {file = "pyelftools-0.31-py3-none-any.whl", hash = "sha256:f52de7b3c7e8c64c8abc04a79a1cf37ac5fb0b8a49809827130b858944840607"}, 258 | {file = "pyelftools-0.31.tar.gz", hash = "sha256:c774416b10310156879443b81187d182d8d9ee499660380e645918b50bc88f99"}, 259 | ] 260 | 261 | [[package]] 262 | name = "requests" 263 | version = "2.32.0" 264 | description = "Python HTTP for Humans." 265 | optional = false 266 | python-versions = ">=3.8" 267 | groups = ["main"] 268 | files = [ 269 | {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, 270 | {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, 271 | ] 272 | 273 | [package.dependencies] 274 | certifi = ">=2017.4.17" 275 | charset-normalizer = ">=2,<4" 276 | idna = ">=2.5,<4" 277 | urllib3 = ">=1.21.1,<3" 278 | 279 | [package.extras] 280 | socks = ["PySocks (>=1.5.6,!=1.5.7)"] 281 | use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] 282 | 283 | [[package]] 284 | name = "sebaubuntu-libs" 285 | version = "1.5.0" 286 | description = "SebaUbuntu's shared libs" 287 | optional = false 288 | python-versions = "<4.0,>=3.8" 289 | groups = ["main"] 290 | files = [ 291 | {file = "sebaubuntu_libs-1.5.0-py3-none-any.whl", hash = "sha256:3edb3197fc68e768119a653ccbb4ce021b1e1251e0cdfc0bf6a178cbf61cf9ed"}, 292 | {file = "sebaubuntu_libs-1.5.0.tar.gz", hash = "sha256:bc9836e4192d1682bdcef6de70e91ad8c6a7292b05554918950dbfd03c451e4f"}, 293 | ] 294 | 295 | [package.dependencies] 296 | GitPython = ">=3.1.27,<4.0.0" 297 | pyelftools = ">=0.29,<0.32" 298 | requests = ">=2.28.1,<3.0.0" 299 | 300 | [package.extras] 301 | docs = ["sphinx (>=5.0.1,<8.0.0)", "sphinx-rtd-theme (>=1,<4)"] 302 | 303 | [[package]] 304 | name = "smmap" 305 | version = "5.0.1" 306 | description = "A pure Python implementation of a sliding window memory map manager" 307 | optional = false 308 | python-versions = ">=3.7" 309 | groups = ["main"] 310 | files = [ 311 | {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, 312 | {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, 313 | ] 314 | 315 | [[package]] 316 | name = "urllib3" 317 | version = "2.2.2" 318 | description = "HTTP library with thread-safe connection pooling, file post, and more." 319 | optional = false 320 | python-versions = ">=3.8" 321 | groups = ["main"] 322 | files = [ 323 | {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, 324 | {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, 325 | ] 326 | 327 | [package.extras] 328 | brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] 329 | h2 = ["h2 (>=4,<5)"] 330 | socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] 331 | zstd = ["zstandard (>=0.18.0)"] 332 | 333 | [metadata] 334 | lock-version = "2.1" 335 | python-versions = "^3.8" 336 | content-hash = "41592a6e2d8ea7d6f4126d85cd3dfa106620ac4fe6b20997c39fcd90f689b553" 337 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "aospdtgen" 3 | version = "1.1.1" 4 | description = "Create an Android device tree from a device dump" 5 | authors = ["Sebastiano Barezzi "] 6 | license = "Apache-2.0" 7 | readme = "README.md" 8 | repository = "https://github.com/sebaubuntu-python/aospdtgen" 9 | 10 | [tool.poetry.scripts] 11 | aospdtgen = 'aospdtgen.main:main' 12 | 13 | [tool.poetry.dependencies] 14 | python = "^3.8" 15 | Jinja2 = "^3.1.2" 16 | GitPython = "^3.1.31" 17 | sebaubuntu-libs = "^1.4.4" 18 | 19 | [tool.poetry.dev-dependencies] 20 | 21 | [build-system] 22 | requires = ["poetry-core>=1.0.0"] 23 | build-backend = "poetry.core.masonry.api" 24 | --------------------------------------------------------------------------------