Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,54 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: MPL-2.0
"""Inspect the embedded configuration of our pinned sargo kernel, without a phone."""
import json
from pathlib import Path
import subprocess
import zlib
from tundra import ROOT, digest, now, save
def inspect(path):
# The AOSP artifact appends device trees to an LZ4 stream. lz4 reports trailing
# data, so validate the embedded gzip/config payload rather than its exit code.
result = subprocess.run(['lz4','-dc',str(path)],capture_output=True,check=False)
start=result.stdout.find(b'IKCFG_ST')
if start<0: raise ValueError('Kernel has no embedded IKCONFIG signature')
stream=zlib.decompressobj(31)
raw=stream.decompress(result.stdout[start+8:])
if not stream.eof or not stream.unused_data.startswith(b'IKCFG_ED'):
raise ValueError('Invalid compressed kernel config or terminator')
config=raw.decode()
if not config.startswith('#\n# Automatically generated file; DO NOT EDIT.'):
raise ValueError('Unexpected kernel config format')
values={}
for line in config.splitlines():
if line.startswith('CONFIG_'):
key,value=line.split('=',1);values[key]=value
elif line.startswith('# CONFIG_') and line.endswith(' is not set'):
values[line.split()[1]]='n'
keys=['CONFIG_ARM64','CONFIG_DEVTMPFS','CONFIG_CONFIGFS_FS','CONFIG_USB_DWC3',
'CONFIG_USB_DWC3_MSM','CONFIG_USB_CONFIGFS','CONFIG_USB_CONFIGFS_ACM',
'CONFIG_USB_CONFIGFS_F_FS','CONFIG_PSTORE','CONFIG_PSTORE_RAM','CONFIG_PSTORE_CONSOLE']
return config,{key:values.get(key,'absent') for key in keys}
def main():
# Source layout is owned by the common tooling.
from tundra import locked
commit=locked('aosp-sargo-kernel')['commit']
path=ROOT/'downloads/aosp-sargo-kernel'/commit/'Image.lz4-dtb'
config,features=inspect(path)
folder=ROOT/'out/sargo';folder.mkdir(parents=True,exist_ok=True)
(folder/'kernel.config').write_text(config)
report={'recordedAt':now(),'kernelSha256':digest(path),'sourceCommit':commit,
'features':features,'hardwareTested':False,
'usbDiagnosticReady':False,
'conclusions':['USB FunctionFS is compiled in; an actual userspace service is still needed.',
'USB ACM is not compiled in; a generic ttyGS0 console will not work with this prebuilt.',
'devtmpfs is not compiled in; Android uevent/device-node handling must be provided.',
'pstore support does not prove reserved RAM works on this phone.']}
save(folder/'kernel-audit.json',report)
print(json.dumps(report,indent=2))
if __name__=='__main__': main()