* fix(ci): size the onnx resource budget for aarch64 page alignment libyams_onnx_resource.so is 67,624 bytes on aarch64 against a 64,000-byte budget, which failed the v0.20.4 linux-arm64 release job. It holds 23 KB of sections; aarch64 links with 64 KiB segment alignment (LOAD align 0x10000), which pads the file. The budget was measured on x86_64. 81,000 is the aarch64 size plus 20% headroom. Every other aarch64 payload is within 86% of its budget. Signed-off-by: trvon <me@trevon.dev> * fix(plugins): declare the S3 legacy factory with the plugin export macro93f24394marked the S3 plugin's yams_plugin_create/destroy_object_storage definitions YAMS_PLUGIN_API so they stay exported under hidden visibility, but include/yams/plugins/object_storage.h still declared them without it. MSVC rejects a definition whose linkage differs from the first declaration (C2375), so the v0.20.4 Windows release job failed to compile s3_plugin.cpp. GCC and Clang accept the mismatch, which is why the Linux and macOS lanes passed. The header now includes yams/plugins/abi.h and declares both functions YAMS_PLUGIN_API, matching how abi.h declares the rest of the plugin C ABI. Checked with MSVC 14.51 (x64 target): a translation unit with the s3_plugin.cpp definitions fails with C2375 against the old header and compiles against the new one. Signed-off-by: trvon <me@trevon.dev> * fix(build): drop install_tag from the mobile install_headers call324be33apassed install_tag: 'devel' to install_headers(), which accepts no such keyword. Meson 1.12 fails the configure with "install_headers got unknown keyword arguments install_tag" whenever -Denable-mobile-bindings=true, which broke the Tests linux-x86_64-mobile lane on experimental. Meson tags installed headers 'devel' by itself, so the header still ships only with the devel set (checked with meson introspect --install-plan and meson install --tags devel|runtime --dry-run on grim). Signed-off-by: trvon <me@trevon.dev> * fix(packaging): install the Windows onnx resource DLL next to the executables yams-cli.exe, yams-daemon.exe and yams-mcp-server.exe import yams_onnx_resource-0.dll at load time, but Meson installed it to lib\ and yams.wxs never packaged it. The shipped v0.20.3 MSI therefore installs a yams.exe that cannot start: extracting it (msiexec /a) and running `yams.exe --version` exits 0xC00004BC with no output, and dumpbin /dependents lists yams_onnx_resource-0.dll. The release job never runs the staged CLI on Windows, so CI stayed green. Drop the explicit Windows install_dir so Meson installs the DLL to bindir (the import library stays in libdir) and add it to the MSI. With the change `meson install` stages bin\yams_onnx_resource-0.dll and the staged `yams.exe --version` prints the version. Signed-off-by: trvon <me@trevon.dev> * ci(release): smoke-test the staged Windows CLI before building the MSI The v0.20.3 MSI shipped a yams.exe that exits 0xC00004BC because a load-time DLL was not packaged, and nothing in the release job ran the staged binary. Run the staged yams.exe --version with a 60 s timeout after meson install and fail the job on a non-zero exit. Checked on a Windows host against the old stage layout (exits 0xC00004BC, step fails) and the fixed one (prints 0.20.5, step passes). Signed-off-by: trvon <me@trevon.dev> --------- Signed-off-by: trvon <me@trevon.dev>
155 lines
3.3 KiB
JSON
155 lines
3.3 KiB
JSON
{
|
|
"_comment": "Runtime install surface contract for scripts/ci/check_install_surface.py. Paths are relative to the install prefix; {libdir} is the Meson libdir relative to the prefix. Size budgets apply to ELF payloads and carry ~20% headroom over the measured Linux x86_64 release payload (grim, clang 21, 2026-10); the onnx/glint budgets come from the v0.20.3 packages. Raise a budget only with a measured reason in the commit message.",
|
|
"paths": {
|
|
"allowed": [
|
|
"bin/yams",
|
|
"bin/yams-cli",
|
|
"bin/yams-daemon",
|
|
"bin/yams-mcp-server",
|
|
"{libdir}/yams/plugins/*.so",
|
|
"{libdir}/yams/plugins/*.dylib",
|
|
"{libdir}/yams/*.so",
|
|
"{libdir}/yams/*.so.*",
|
|
"{libdir}/yams/*.dylib",
|
|
"{libdir}/yams/onnxruntime/*",
|
|
"share/yams/**",
|
|
"share/licenses/yams/*",
|
|
"share/doc/yams/**",
|
|
"lib/systemd/user/yams-daemon.service",
|
|
"lib/systemd/user-preset/80-yams.preset"
|
|
],
|
|
"forbidden": [
|
|
"include/**",
|
|
"**/*.h",
|
|
"**/*.hpp",
|
|
"**/*.a",
|
|
"**/*.la",
|
|
"**/*.pc",
|
|
"**/pkgconfig/**",
|
|
"**/cmake/**"
|
|
],
|
|
"required": [
|
|
"bin/yams",
|
|
"bin/yams-cli",
|
|
"bin/yams-daemon",
|
|
"share/yams/sql/reference_schema.sql",
|
|
"{libdir}/yams/plugins/*"
|
|
]
|
|
},
|
|
"third_party_exempt": [
|
|
"{libdir}/yams/plugins/libzpdf.*",
|
|
"{libdir}/yams/onnxruntime/*"
|
|
],
|
|
"size_budgets": [
|
|
{
|
|
"pattern": "bin/yams-cli",
|
|
"max_bytes": 40600000,
|
|
"kinds": [
|
|
"elf"
|
|
]
|
|
},
|
|
{
|
|
"pattern": "bin/yams-daemon",
|
|
"max_bytes": 34200000,
|
|
"kinds": [
|
|
"elf"
|
|
]
|
|
},
|
|
{
|
|
"pattern": "bin/yams-mcp-server",
|
|
"max_bytes": 20100000,
|
|
"kinds": [
|
|
"elf"
|
|
]
|
|
},
|
|
{
|
|
"pattern": "{libdir}/yams/plugins/libyams_object_storage_s3.*",
|
|
"max_bytes": 7500000,
|
|
"kinds": [
|
|
"elf"
|
|
]
|
|
},
|
|
{
|
|
"pattern": "{libdir}/yams/plugins/libyams_onnx_plugin.*",
|
|
"max_bytes": 2000000,
|
|
"kinds": [
|
|
"elf"
|
|
]
|
|
},
|
|
{
|
|
"pattern": "{libdir}/yams/plugins/yams_glint.*",
|
|
"max_bytes": 850000,
|
|
"kinds": [
|
|
"elf"
|
|
]
|
|
},
|
|
{
|
|
"pattern": "{libdir}/yams/plugins/yams_zyp.*",
|
|
"max_bytes": 77000,
|
|
"kinds": [
|
|
"elf"
|
|
]
|
|
},
|
|
{
|
|
"pattern": "{libdir}/yams/libyams_onnx_resource.*",
|
|
"max_bytes": 81000,
|
|
"kinds": [
|
|
"elf"
|
|
]
|
|
}
|
|
],
|
|
"export_budgets": [
|
|
{
|
|
"pattern": "{libdir}/yams/plugins/libzpdf.*",
|
|
"max": 256
|
|
},
|
|
{
|
|
"pattern": "{libdir}/yams/onnxruntime/*",
|
|
"max": 100000
|
|
},
|
|
{
|
|
"pattern": "{libdir}/yams/plugins/*",
|
|
"max": 16
|
|
},
|
|
{
|
|
"pattern": "{libdir}/yams/libyams_onnx_resource.*",
|
|
"max": 32
|
|
},
|
|
{
|
|
"pattern": "bin/*",
|
|
"max": 64
|
|
}
|
|
],
|
|
"forbidden_exports": [
|
|
"^sqlite3_",
|
|
"^libsql_",
|
|
"^SSL_",
|
|
"^EVP_",
|
|
"^OPENSSL_",
|
|
"^CRYPTO_",
|
|
"^curl_",
|
|
"^Curl_",
|
|
"^deflate",
|
|
"^inflate",
|
|
"^ZSTD_",
|
|
"^LZ4",
|
|
"boost::",
|
|
"google::protobuf",
|
|
"spdlog::",
|
|
"fmt::",
|
|
"nlohmann::",
|
|
"^Ort"
|
|
],
|
|
"hardening": {
|
|
"pie": true,
|
|
"bind_now": true,
|
|
"relro": true,
|
|
"nx": true,
|
|
"cet_x86_64": "warn",
|
|
"fortify_imports": "warn"
|
|
},
|
|
"stripped": {
|
|
"no_debug_sections": true,
|
|
"no_symtab": true
|
|
}
|
|
}
|