Commit graph

14 commits

Author SHA1 Message Date
trvon
e895fe2f94
build(packaging): bundle ONNX Runtime privately in <libdir>/yams/onnxruntime
No package carried ONNX Runtime: tools/yams-cli tried to install_subdir()
the runtime's libdir, but read it with get_variable('libdir') from the
dependency meson.build had already normalized into a declare_dependency,
which has no variables, so it installed nothing. Packaged ONNX and Glint
plugins therefore only worked where the user had installed a compatible
runtime themselves.

meson.build now records the directories it resolved ONNX Runtime from,
and the runtime install bundles the shared library from the first that
holds one into <libdir>/yams/onnxruntime/ (install tag runtime). A small
configure-time helper (scripts/list-onnxruntime-libs.py) lists the real
files and the soname symlinks, so the chain libonnxruntime.so ->
.so.1 -> .so.1.23.0 is recreated instead of tripled, and only the core
library and providers_shared are taken (no static archives, CMake or
pkg-config files). The plugins use this copy only when no compatible
system copy exists. Windows is unchanged: onnxruntime.dll already ships
next to the executables in the MSI and is found by the loader search.

- scripts/split-debug-symbols.sh leaves the bundled runtime
  byte-identical: it is an upstream release build, already stripped, and
  re-stripping would void a macOS code signature.
- install_surface_policy: <libdir>/yams/onnxruntime/* is allowed and
  exempt from first-party export/hardening checks; the Glint size budget
  grows to 850,000 bytes (711,352 measured with real ONNX Runtime code).
- Homebrew formulas depend on Homebrew's onnxruntime, which the plugins
  prefer, so they drop the archive's private copy (rm_rf
  lib/yams/onnxruntime).
- Arch: optdepends now reads 'onnxruntime: use the system ONNX Runtime
  instead of the bundled copy' (PKGBUILD and the CI .PKGINFO).

Measured on grim (Linux x86_64 release, --with-onnx, stripped staged
payload): 87,883,247 -> 110,236,706 bytes (+22.4 MB: the 22,207,288-byte
libonnxruntime.so.1.23.0, 14,632-byte providers_shared, and +111 KB of
real GLiNER code in yams_glint.so).

Signed-off-by: trvon <me@trevon.dev>
2026-10-01 22:42:15 -06:00
trvon
324be33abb
build: install only the runtime set from meson install
`meson install` of a Release tree staged 2.4 GiB: all 28 internal static
libraries (1.3 GiB), the whole include/ tree (459 files), 22 pkg-config
files for libraries that were never meant to be linked from outside, and
the ONNX resource library in the system libdir. Packages hid this by
deleting include/, *.a and pkgconfig/ after the fact.

- Internal static libraries are `install: false` and their pkg.generate()
  calls are gone, as is the top-level yams.pc (it required yams-api, which
  is not installable). Benchmarks are no longer installed either.
- Headers are not installed: no installable C++ library exists to link
  them against. The one SDK surface, the mobile C ABI, installs
  mobile_bindings.h and its .pc under the 'devel' install tag.
- Runtime installs carry explicit install_tag: 'runtime' where Meson
  cannot infer one (data, systemd unit/preset, the yams alias symlink,
  Windows DLL copies, the libzpdf install script), so
  `meson install --tags runtime` stages the same set as a plain install.
- libyams_onnx_resource moves from <libdir> to the private <libdir>/yams
  on Linux/macOS, without a soname version since nothing outside this
  build links it. yams-cli/yams-daemon RUNPATH becomes $ORIGIN/../lib/yams
  (@executable_path on macOS) and the ONNX/Glint plugins use $ORIGIN/..
  so they resolve it and the bundled ONNX Runtime, which also moves to
  <libdir>/yams (the ONNX plugin's runtime loader already searches its
  parent directory). Windows keeps its existing DLL layout.
- Homebrew templates and the macOS install smoke follow the new layout.
- scripts/prune-runtime-install.sh only strips now.

Measured on grim (Linux x86_64 Release, prefix /usr/local):
  staged paths  522 -> 11, staged bytes 2.4 GiB -> 1.0 GiB (unstripped)
  check_install_surface path violations: 6 -> 0
  `--tags devel` stages nothing; ldd resolves libyams_onnx_resource from
  bin/../lib/yams and the staged `yams --version` runs.

Signed-off-by: trvon <me@trevon.dev>
2026-10-01 14:22:10 -06:00
trvon
902f75c379
feat: further homebrew bug fixes and improvements 2026-04-17 10:43:55 -04:00
trvon
3cccde2902
feat: improving packaging logic for homebrew and addressing pip install regression in tests 2026-04-17 10:10:30 -04:00
trvon
58cba447a4
feat: auto complete improvements and topology refactor to improve graph rebuilding on ingestion 2026-04-14 11:40:29 -04:00
trvon
f4fffd73a0
feat: instrumentation improvements for benchmarks, shell completition improvements, packaging updates for completions and docs updates 2026-04-13 21:34:18 -04:00
trvon
58a8cf8efe
feat: homebrew fixes for nightly formula install 2026-03-24 09:29:16 -04:00
trvon
7a55178e7b
fix: macos homebrew packaging fixes 2026-03-21 10:58:24 -04:00
trvon
8e6c52c663
feat: post installation fix for homebrew to enable packaged plugins 2026-02-27 22:34:24 -05:00
trvon
5a764ac2cc
feat: updating brew install guide 2026-02-27 22:02:35 -05:00
trvon
4edc40a561
feat: updating homebrew formulas to correctly link nightly builds 2026-02-27 21:46:56 -05:00
trvon
2a14a75aa6
staging v0.8.3 for brew formula update 2026-02-02 11:05:11 -05:00
trvon
73b7d1eabb
fix: compiler issues addressed and homebrew updates 2026-01-31 21:52:13 -05:00
trvon
d6d926801b
fix: nightly fixes for homebrew, daemon fixes and install logic improvements 2026-01-31 13:46:37 -05:00