Package portable Linux runtime and verify Google CPU search

This commit is contained in:
karl committed 2026-10-13 00:43:20 +02:00
1 parent e3558a0104
commit 0b56ab553c
22 files changed
+1585 -16

No files matched your search

+45
View File
@@ -97,6 +97,11 @@ These are the current script and CLI interfaces, not evidence of an executed
Linux release. On a native Linux build host with Vulkan development libraries
and `glslc`, run from the repository root:
On Ubuntu 24.04, the native worker build prerequisites are `build-essential`,
`cmake`, `git`, `pkg-config`, `libvulkan-dev`, `glslc`, and `spirv-headers`.
The last package supplies the SPIR-V CMake configuration required by the pinned
Vulkan backend. These build tools do not enable GPU execution in tests.
```sh
python3 tools/embeddinggemma2/build_runtime.py --backend auto --jobs 2
python3 tools/embeddinggemma2/download.py
@@ -114,6 +119,46 @@ This normal worker detects usable acceleration and falls back to CPU. Internal
CPU-only model tests may use `--backend cpu` and `SEARCHI_FORCE_CPU=1`; those
test artifacts are not a separate distribution edition.
### Linux headless archive validation
The Linux x86-64 normal worker layout includes baseline and optimized CPU
modules, an optional Vulkan module and adjacent core libraries. The builder
audits ELF dependencies and origin-relative lookup before writing a hashed
runtime inventory. ARM and other distribution/ABI combinations remain separate
release gates.
After building the normal worker, release CLI and pinned media helpers, prepare
an unsigned headless development candidate:
```sh
python3 tools/package_linux.py
python3 tools/embeddinggemma2/linux_smoke.py --worker .searchi/runtime/auto/searchi-gemma-worker --models .searchi/models/embeddinggemma2 --output .searchi/packages/linux-worker-smoke.json
python3 tools/embeddinggemma2/linux_smoke.py --worker .searchi/runtime/auto/searchi-gemma-worker --models .searchi/models/embeddinggemma2 --output .searchi/packages/linux-baseline-smoke.json --baseline
```
The packager accepts explicit `--executable`, `--runtime`, `--media` and
`--llama-license` paths when builds use separate target/cache directories.
It packages only approved runtime files, pinned decoders and notices, with
normalized archive metadata, executable modes and per-file checksums. It
excludes model caches and user indexes/settings. The smoke checks copy the
runtime outside its build tree and run genuine Google code inference on CPU;
the baseline check omits optimized CPU modules from its temporary extraction.
They do not exercise GPU providers or certify older physical CPUs, installers
or desktop behavior. Archive extraction and installed CLI search must also
be verified before a release gate is closed.
The optional Linux missing-loader check requires explicit root execution and
util-linux mount namespaces/chroot. It never escalates privileges and verifies
a private namespace before creating an isolated filesystem:
```sh
sudo python3 tools/embeddinggemma2/linux_loader_smoke.py --worker .searchi/runtime/auto/searchi-gemma-worker --models .searchi/models/embeddinggemma2 --output .searchi/packages/linux-missing-loader.json
```
It runs automatic device selection with no forced-CPU override, but contains no
Vulkan loader, driver configuration or GPU devices, so only CPU inference can
execute. This is distinct from testing an actual GPU or recovering device loss.
`searchi setup --model-dir PATH` is an alternative verified model-provisioning
command. It provisions model assets, not the native worker. Package the worker
separately and pass its path to headless embedding/search. Each short-lived CLI