mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-11-11 11:01:07 +00:00
fix(build): preserve local builds without Rust
This commit is contained in:
1 parent
1e23bb6d8d
commit
d80e4485ac
4 files changed
+29
-8
No files matched your search
@@ -83,7 +83,11 @@ pack tracking "$work/tracking" hand_landmarker.task hand_landmarker_lite.task po
|
||||
libopencv_java4.so libmediapipe_tasks_jni.so
|
||||
pack xbox "$linuxfs/droiddeck-xbox" version xodus-cli xodus-service
|
||||
pack comet "$linuxfs/droiddeck-comet" version comet
|
||||
bash "$repo/tools/stores/build-amazon.sh"
|
||||
mkdir "$work/amazon"
|
||||
cp "$repo/app/build/amazon-engine/engine.json" "$repo/app/build/amazon-engine/libdroiddeckamazon.so" "$work/amazon/"
|
||||
pack amazon "$work/amazon" engine.json libdroiddeckamazon.so
|
||||
if [[ "${DROIDDECK_SKIP_RUST:-0}" == 1 && "${CI:-false}" != true ]]; then
|
||||
rm -f "$out/amazon.tar.zst"
|
||||
else
|
||||
bash "$repo/tools/stores/build-amazon.sh"
|
||||
mkdir "$work/amazon"
|
||||
cp "$repo/app/build/amazon-engine/engine.json" "$repo/app/build/amazon-engine/libdroiddeckamazon.so" "$work/amazon/"
|
||||
pack amazon "$work/amazon" engine.json libdroiddeckamazon.so
|
||||
fi
|
||||
@@ -2,6 +2,7 @@
|
||||
import hashlib
|
||||
import gzip
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
import sys
|
||||
@@ -65,8 +66,9 @@ def outputs(root):
|
||||
result['assets/' + tree + '/' + path.relative_to(base).as_posix()] = path.relative_to(root).as_posix()
|
||||
for library in ['libproot.so', 'libproot-loader.so', 'libdirectaudiorelay.so']:
|
||||
result['lib/arm64-v8a/' + library] = 'app/src/main/jniLibs/arm64-v8a/' + library
|
||||
result['lib/arm64-v8a/libdroiddeckamazon.so'] = 'app/build/amazon-engine/libdroiddeckamazon.so'
|
||||
result['assets/store-engines/amazon/engine.json'] = 'app/build/amazon-engine/engine.json'
|
||||
if amazon_enabled():
|
||||
result['lib/arm64-v8a/libdroiddeckamazon.so'] = 'app/build/amazon-engine/libdroiddeckamazon.so'
|
||||
result['assets/store-engines/amazon/engine.json'] = 'app/build/amazon-engine/engine.json'
|
||||
result['assets/pulseaudio.tzst'] = 'app/build/prepared-assets/pulseaudio.tzst'
|
||||
result['assets/graphics_driver/adrenotools-turnip25.1.0-quest1.tzst'] = \
|
||||
'app/build/prepared-assets/graphics_driver/adrenotools-turnip25.1.0-quest1.tzst'
|
||||
@@ -76,8 +78,12 @@ def outputs(root):
|
||||
return result
|
||||
|
||||
|
||||
def amazon_enabled():
|
||||
return os.environ.get('CI') == 'true' or os.environ.get('DROIDDECK_SKIP_RUST') != '1'
|
||||
|
||||
|
||||
def required():
|
||||
paths = ['lib/arm64-v8a/libdroiddeckamazon.so', 'assets/store-engines/amazon/engine.json']
|
||||
paths = ['lib/arm64-v8a/libdroiddeckamazon.so', 'assets/store-engines/amazon/engine.json'] if amazon_enabled() else []
|
||||
paths += ['assets/graphics_driver/adrenotools-turnip25.1.0-quest1.tzst']
|
||||
paths += [f'assets/graphics_driver/adrenotools-{name}.tzst'
|
||||
for name in ['turnip26.3.0-a6xx', 'turnip26.3.0-quest2']]
|
||||
@@ -194,7 +200,7 @@ def pack_digests(root, name):
|
||||
|
||||
def check_apk(apk, root=ROOT):
|
||||
data = verify(root)
|
||||
packs = {name: pack_digests(root, name) for name in PACK_NAMES}
|
||||
packs = {name: pack_digests(root, name) for name in PACK_NAMES if name != 'amazon' or amazon_enabled()}
|
||||
with ZipFile(apk) as package:
|
||||
names = set(package.namelist())
|
||||
for library in PACKED_LIBRARIES:
|
||||
|
||||
@@ -28,6 +28,8 @@ New APKs reuse an existing pack when its digest is unchanged; changed pins downl
|
||||
their exact version rather than loading an arbitrary older engine. Loading verifies
|
||||
the manifest/library and JNI interface before configuring the engine. Unpinned local
|
||||
builds intentionally cannot borrow an arbitrary prior Amazon pack.
|
||||
The existing local `DROIDDECK_SKIP_RUST=1` mode omits Amazon too. CI always requires
|
||||
the engine and pack even when that local flag is present.
|
||||
|
||||
Device validation still needs a fresh Amazon sign-in, existing-account upgrade, failed
|
||||
download/retry, offline relaunch, and cancel/resume installation. Robolectric integrity
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import importlib.util
|
||||
import gzip
|
||||
import io
|
||||
import os
|
||||
from pathlib import Path, PureWindowsPath
|
||||
import subprocess
|
||||
import tarfile
|
||||
@@ -72,6 +73,14 @@ class RuntimeInputsTest(unittest.TestCase):
|
||||
with self.assertRaisesRegex(ValueError, 'proot pack provides'):
|
||||
runtime.check_apk(apk, self.root)
|
||||
|
||||
def test_local_rust_skip_cannot_disable_the_amazon_pack_in_ci(self):
|
||||
with mock.patch.dict(os.environ, {'DROIDDECK_SKIP_RUST': '1', 'CI': 'false'}):
|
||||
self.assertFalse(runtime.amazon_enabled())
|
||||
self.assertNotIn('lib/arm64-v8a/libdroiddeckamazon.so', runtime.outputs(self.root))
|
||||
with mock.patch.dict(os.environ, {'DROIDDECK_SKIP_RUST': '1', 'CI': 'true'}):
|
||||
self.assertTrue(runtime.amazon_enabled())
|
||||
self.assertIn('lib/arm64-v8a/libdroiddeckamazon.so', runtime.required())
|
||||
|
||||
def test_missing_proot_cannot_be_attested(self):
|
||||
(self.root / 'app/src/main/jniLibs/arm64-v8a/libproot.so').unlink()
|
||||
with self.assertRaisesRegex(ValueError, 'libproot.so'):
|
||||
|
||||
Reference in new issue
Block a user