Release Vulpes OS 2.7-preview.24

This commit is contained in:
OverSu 2026-11-04 12:52:20 +01:00
commit 97ef99f827
135 changed files with 7717 additions and 2524 deletions

View file

@ -0,0 +1,64 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: MPL-2.0
"""Build the Nokia CameraService worker and its fixed-command broker."""
import hashlib
import json
from pathlib import Path
import subprocess
ROOT = Path(__file__).resolve().parents[2]
ENGINE = ROOT / 'tundra/out/beatles/gecko-156.0.1'
BUILD = ENGINE / 'camera-broker-build'
NDK = BUILD / 'android-ndk-r27d'
HEADERS = BUILD / 'android-headers-api23/android-headers-23/23'
AOSP = BUILD / 'aosp/include'
LIBS = ENGINE / 'camera-probe-runtime'
OUT = BUILD
def digest(path):
return hashlib.sha256(path.read_bytes()).hexdigest()
def build(name, source, command):
target = OUT / name
stamp = target.with_suffix('.build.json')
record = {'source': digest(source), 'command': command}
if target.is_file() and stamp.is_file():
try:
if json.loads(stamp.read_text()) == record:
print('Using cached camera tool:', name)
return target
except (OSError, ValueError):
pass
subprocess.run(command, check=True)
target.chmod(0o755)
stamp.write_text(json.dumps(record, sort_keys=True) + '\n')
return target
def main():
required = [NDK / 'toolchains/llvm/prebuilt/linux-x86_64/bin/clang++',
NDK / 'toolchains/llvm/prebuilt/linux-x86_64/bin/clang',
HEADERS / 'linux/binder.h', AOSP / 'camera/Camera.h',
LIBS / 'libc++_shared.so', LIBS / 'beatles-camera-permission-bridge']
missing = [str(path) for path in required if not path.exists()]
if missing:
raise SystemExit('Private API-23 Camera1 build inputs missing:\n ' + '\n '.join(missing))
sysroot = NDK / 'toolchains/llvm/prebuilt/linux-x86_64/sysroot'
cxx = str(NDK / 'toolchains/llvm/prebuilt/linux-x86_64/bin/clang++')
cc = str(NDK / 'toolchains/llvm/prebuilt/linux-x86_64/bin/clang')
common = ['--target=armv7a-linux-androideabi23', '--sysroot=' + str(sysroot)]
worker_source = ROOT / 'tundra/probes/beatles-camera-worker.cpp'
worker_command = [cxx, *common, '-fno-rtti', '-I', str(HEADERS), '-I', str(AOSP),
str(worker_source), '-L', str(LIBS), '-Wl,-rpath,/data/local/tmp',
'-Wl,--allow-shlib-undefined', '-lcamera_client', '-lbinder', '-lgui',
'-lutils', '-lcutils', '-llog', '-lui', '-lhardware', '-lmedia',
'-lcamera_metadata', '-lsync', '-lbase', '-lc++_shared', '-o']
build('beatles-camera-worker', worker_source,
worker_command + [str(OUT / 'beatles-camera-worker')])
broker_source = ROOT / 'tundra/probes/beatles-camera-broker.c'
broker_command = [cc, *common, '-Wall', '-Wextra', '-Werror', str(broker_source), '-o']
build('beatles-camera-broker', broker_source,
broker_command + [str(OUT / 'beatles-camera-broker')])
print('Android Camera1 worker and broker are ready.')
if __name__ == '__main__':
main()