@openmixer/plugin-qualify 0.17.5 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -13
- package/bin/plugin-qualify-sync.mjs +3 -1
- package/dist/clap-qualify.d.ts +3 -1
- package/dist/clap-qualify.js +7 -1
- package/dist/clap-qualify.js.map +1 -1
- package/dist/direct-limit.d.ts +27 -0
- package/dist/direct-limit.js +52 -0
- package/dist/direct-limit.js.map +1 -0
- package/dist/distributed-records.d.ts +4 -2
- package/dist/distributed-records.js +1 -1
- package/dist/distributed-records.js.map +1 -1
- package/dist/host-admission.d.ts +12 -2
- package/dist/host-admission.js +24 -4
- package/dist/host-admission.js.map +1 -1
- package/dist/host-profiles.d.ts +8 -0
- package/dist/host-profiles.js +16 -1
- package/dist/host-profiles.js.map +1 -1
- package/dist/hosting-codes.generated.d.ts +10 -0
- package/dist/hosting-codes.generated.js +10 -0
- package/dist/hosting-codes.generated.js.map +1 -1
- package/dist/hosting-suitability.d.ts +34 -8
- package/dist/hosting-suitability.js +92 -7
- package/dist/hosting-suitability.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/measurement/format.d.ts +54 -8
- package/dist/measurement/format.js +54 -3
- package/dist/measurement/format.js.map +1 -1
- package/dist/measurement/plan.d.ts +3 -3
- package/dist/measurement/plan.js +1 -1
- package/dist/measurement-grid.d.ts +8 -0
- package/dist/measurement-grid.js +4 -0
- package/dist/measurement-grid.js.map +1 -1
- package/dist/memory-bound.d.ts +6 -0
- package/dist/memory-bound.js +8 -0
- package/dist/memory-bound.js.map +1 -1
- package/dist/memory-budget.d.ts +39 -0
- package/dist/memory-budget.js +32 -0
- package/dist/memory-budget.js.map +1 -0
- package/dist/probe-judge.d.ts +11 -0
- package/dist/probe-judge.js +26 -10
- package/dist/probe-judge.js.map +1 -1
- package/dist/probe-merge.js +6 -5
- package/dist/probe-merge.js.map +1 -1
- package/dist/probe-output-fixtures.d.ts +6 -0
- package/dist/probe-output-fixtures.js +8 -0
- package/dist/probe-output-fixtures.js.map +1 -1
- package/dist/probe-output.d.ts +4 -2
- package/dist/probe-output.js +2 -1
- package/dist/probe-output.js.map +1 -1
- package/dist/probe-runner.js +7 -3
- package/dist/probe-runner.js.map +1 -1
- package/dist/qualification-record.d.ts +116 -10
- package/dist/qualification-record.js +34 -30
- package/dist/qualification-record.js.map +1 -1
- package/dist/qualify-adapter-pass.d.ts +67 -0
- package/dist/qualify-adapter-pass.js +255 -0
- package/dist/qualify-adapter-pass.js.map +1 -0
- package/dist/qualify-declarations.d.ts +53 -9
- package/dist/qualify-declarations.js +54 -2
- package/dist/qualify-declarations.js.map +1 -1
- package/dist/qualify-rejudge.d.ts +81 -0
- package/dist/qualify-rejudge.js +421 -0
- package/dist/qualify-rejudge.js.map +1 -0
- package/dist/qualify-sync.d.ts +72 -1
- package/dist/qualify-sync.js +194 -21
- package/dist/qualify-sync.js.map +1 -1
- package/fixtures/records-0.16.1/http___example.org_raffo@unversioned-2060c09ff626.default.probe.json +46 -0
- package/fixtures/records-0.16.1/http___example.org_raffo@unversioned-2060c09ff626.default.qualification.json +185 -0
- package/fixtures/records-0.16.1/http___lv2plug.in_plugins_eg-amp@unversioned-f046a60efd45.default.probe.json +51 -0
- package/fixtures/records-0.16.1/http___lv2plug.in_plugins_eg-amp@unversioned-f046a60efd45.default.qualification.json +232 -0
- package/fixtures/records-0.16.1/https___github.com_lucianodato_noise-repellent@unversioned-c3b5e21dd9a7.default.probe.json +51 -0
- package/fixtures/records-0.16.1/https___github.com_lucianodato_noise-repellent@unversioned-c3b5e21dd9a7.default.qualification.json +245 -0
- package/fixtures/records-0.16.1/in.lsp-plug.impulse_responses_mono@unversioned-d5235d2f5f53.custom.probe.json +52 -0
- package/fixtures/records-0.16.1/in.lsp-plug.impulse_responses_mono@unversioned-d5235d2f5f53.custom.qualification.json +145 -0
- package/fixtures/records-0.16.1/in.lsp-plug.trigger_midi_mono@unversioned-d5235d2f5f53.custom.probe.json +52 -0
- package/fixtures/records-0.16.1/in.lsp-plug.trigger_midi_mono@unversioned-d5235d2f5f53.custom.qualification.json +155 -0
- package/package.json +1 -1
- package/src/clap-qualify.ts +8 -1
- package/src/direct-limit.ts +68 -0
- package/src/distributed-records.ts +1 -1
- package/src/host-admission.ts +27 -4
- package/src/host-profiles.ts +17 -1
- package/src/hosting-codes.generated.ts +10 -0
- package/src/hosting-suitability.ts +105 -11
- package/src/index.ts +3 -0
- package/src/measurement/format.ts +97 -3
- package/src/measurement/plan.ts +3 -3
- package/src/measurement-grid.ts +5 -0
- package/src/memory-bound.ts +10 -0
- package/src/memory-budget.ts +55 -0
- package/src/probe-judge.ts +29 -9
- package/src/probe-merge.ts +6 -5
- package/src/probe-output-fixtures.ts +10 -1
- package/src/probe-output.ts +5 -2
- package/src/probe-runner.ts +5 -3
- package/src/qualification-record.ts +121 -18
- package/src/qualify-adapter-pass.ts +278 -0
- package/src/qualify-declarations.ts +67 -3
- package/src/qualify-rejudge.ts +452 -0
- package/src/qualify-sync.ts +210 -20
- package/tools/_declarations.py +1 -0
- package/tools/benchmark.py +25 -2
- package/tools/gen-python-declarations.mjs +1 -0
- package/tools/lv2-measure.mjs +7 -4
- package/tools/lv2_presets.py +1 -1
- package/tools/lv2_resolve.py +49 -0
- package/tools/mod-host-admit.mjs +23 -6
package/README.md
CHANGED
|
@@ -119,6 +119,28 @@ judged as usual. A plugin whose every run ended `probe.oom` is `unknown` under e
|
|
|
119
119
|
A host whose own cell ended `probe.oom` is `unknown` there as well (`memory`, `probe.oom`): the plugin did not
|
|
120
120
|
run within the bound at that host's rate and quantum.
|
|
121
121
|
|
|
122
|
+
Where the machine delegates the memory controller, the runner sets the bound as `memory.max` of a cgroup instead: a run the
|
|
123
|
+
kernel kills at it is `probe.memory-limit`, read the same way, and the document's `limits` says which it was. A process
|
|
124
|
+
plugin-qualify spawns itself, with no runner (`tools/lv2-measure.mjs`, `tools/benchmark.py`), runs under `RLIMIT_AS` at the
|
|
125
|
+
machine's RAM, off for a sanitizer build; hitting it is `memory-limit-exceeded`, with the limit.
|
|
126
|
+
|
|
127
|
+
### Memory
|
|
128
|
+
|
|
129
|
+
Each cell carries a footprint: how far the resident set of a process of its own grew, in KB, after instantiate, after
|
|
130
|
+
activate, at rest after processing, with notes held for an instrument, and what a second instance added. A record adds what
|
|
131
|
+
they come to: `firstInstanceKb`, the most one instance held with everything its instances share, and `perInstanceKb`, what
|
|
132
|
+
one more costs.
|
|
133
|
+
|
|
134
|
+
A host with a memory budget reads them, at every cell it runs, and the verdict follows:
|
|
135
|
+
`hosting.memory.within-ceiling`, `hosting.memory.above-ceiling` (`unsuitable`), or `hosting.memory.unmeasured` (`unknown`,
|
|
136
|
+
since a missing figure never reads as fitting). `openmixer-console` has one, sized for the desk, and the Raspberry Pi hosts
|
|
137
|
+
`openmixer-pi-4gb` and `openmixer-pi-8gb`, at 48000/128 and 48000/256, have one each. The Pi budgets are not measured on a Pi
|
|
138
|
+
yet, so a plugin under them is `conditional`, `hosting.memory.within-provisional-ceiling`: that gives the figure and the
|
|
139
|
+
ceiling and does not say the plugin fits. The other hosts have no budget, and read nothing.
|
|
140
|
+
|
|
141
|
+
A soak (LV2; the CLAP prober has no continuous render yet) also reads the growth: past 10 MB per minute of audio over its
|
|
142
|
+
second half, provisional, the rate fails as `leaks`.
|
|
143
|
+
|
|
122
144
|
### How long a run takes
|
|
123
145
|
|
|
124
146
|
The default grid is the full one, so the expected time of a run with no grid option is the `full` row: about 65 hours on a Raspberry Pi 5 for the vangelis set (1823 records). `--grid-hosts` is the fast option, about 30 hours there.
|
|
@@ -180,13 +202,13 @@ be read (permissions, a symlink loop) also refuses with exit 2, naming it.
|
|
|
180
202
|
The prober runs each plugin headless at every cell of the grid (see "The measurement grid"), under an interposer that counts the
|
|
181
203
|
allocations, locks and syscalls its `process()` makes while every parameter is swept, and prints
|
|
182
204
|
the file's SHA-256 beside what it measured. The verdict is the real-time-safety one: **suitable**
|
|
183
|
-
only on a clean count, **
|
|
184
|
-
`process()
|
|
205
|
+
only on a clean count, **conditional** (isolated in the pin: it runs in a worker of its own, never refused) on any
|
|
206
|
+
allocation, lock, syscall or main-thread host call from `process()`, **unsuitable** on `CLAP_PROCESS_ERROR`, **unknown** when it could not be counted. An instrument is
|
|
185
207
|
quiet until it is played, so a plugin with a note input is also played, at every rate and under a
|
|
186
208
|
count of its own: a chord, the pitch bent and a controller moved, pressure, the chord let go, a
|
|
187
209
|
burst of 32 note ons in one block and their offs, all notes off, in the dialect its note input
|
|
188
|
-
reads (CLAP's, else MIDI's). An allocation, lock or syscall while it plays is **
|
|
189
|
-
(`hosting.rt-safety.violations-under-notes`); an instrument that could not be played under the
|
|
210
|
+
reads (CLAP's, else MIDI's). An allocation, lock or syscall while it plays is **conditional**, isolated in the pin like the same
|
|
211
|
+
violation in the run (`hosting.rt-safety.violations-under-notes`); an instrument that could not be played under the
|
|
190
212
|
interposer is **unknown** (`hosting.rt-safety.notes-unmeasured`). `--out` writes the qualification records and the probe outputs they judged (see
|
|
191
213
|
"Judging a probe output" below), one pair per plugin binary and offered host extensions. Each plugin's pin is
|
|
192
214
|
an `integrity` block in the probe output: the `.clap`'s SHA-256 by its file name and the parameter-layout
|
|
@@ -360,12 +382,12 @@ writer needs Python's `jsonschema` (`python3-jsonschema`).
|
|
|
360
382
|
|
|
361
383
|
- **suitable**: every dimension was measured and passed. Safe to run inside the engine's own
|
|
362
384
|
process. This is the only verdict that counts as qualified.
|
|
363
|
-
- **conditional**: it works, with a caution (for example a high cost at small quanta
|
|
364
|
-
run isolated, and the deciding reason names the caution.
|
|
385
|
+
- **conditional**: it works, with a caution (for example a high cost at small quanta, or an
|
|
386
|
+
allocation, lock or syscall in `run()`). It is run isolated, and the deciding reason names the caution.
|
|
365
387
|
- **unknown**: something was not measured. An unmeasured plugin is never a pass.
|
|
366
|
-
- **unsuitable**: a measured failure: a crash, a memory error in the plugin's own binary, a
|
|
367
|
-
|
|
368
|
-
|
|
388
|
+
- **unsuitable**: a measured failure: a crash, a memory error in the plugin's own binary, or a
|
|
389
|
+
required feature the host does not provide. An allocation, lock or syscall in `run()` is not
|
|
390
|
+
one: that plugin is **conditional**, and runs isolated.
|
|
369
391
|
|
|
370
392
|
The worst dimension decides. The text output prints the plugin, its verdict and the reason that
|
|
371
393
|
decided it.
|
|
@@ -417,9 +439,13 @@ death on mod-host the next admission starts a fresh host. `plugin-qualify judge`
|
|
|
417
439
|
that holds no run, so its `jalv` and `mod-host` entries stay `arm: "declaration"`.
|
|
418
440
|
|
|
419
441
|
**The console's two tiers.** Every record carries `tiers`: the *in-process* verdict (`openmixer-console`) and the
|
|
420
|
-
*isolated* verdict (`
|
|
421
|
-
and, when neither
|
|
422
|
-
|
|
442
|
+
*isolated* verdict (`omx-clap-host`, an LV2 plugin through plugin-hostd's LV2 adapter), `offeredOn` (`in-process` when its
|
|
443
|
+
verdict qualified, `isolated` when its verdict qualified or is `conditional`) and, when neither, `dimmed` with the reason. A
|
|
444
|
+
`conditional` plugin, RT-unsafe for instance, is offered on the isolated tier with `runsAlone: true`: it runs in a worker of
|
|
445
|
+
its own, never grouped, and its pin says `isolated`. An LV2 plugin is run once under the adapter, and
|
|
446
|
+
that run decides its `omx-clap-host` verdict as a mod-host run decides mod-host's. A plugin that kills the isolated
|
|
447
|
+
host and qualifies in-process is offered in-process only. The tiers are judged for every plugin whether or not
|
|
448
|
+
`--host-profile` names them; mod-host and jalv are run only when `--host-profile` asks for them.
|
|
423
449
|
|
|
424
450
|
`omx-clap-host` offers a CLAP plugin the console's six host extensions and three more,
|
|
425
451
|
`clap.preset-load/2`, `clap.track-info/1` and `clap.remote-controls/2`. A CLAP plugin judged
|
|
@@ -460,7 +486,7 @@ With several profiles, the exit code is `0` only if every plugin qualifies under
|
|
|
460
486
|
|
|
461
487
|
### The JSON document
|
|
462
488
|
|
|
463
|
-
`--out <dir>` writes one interchange document per run (`lv2-plugin-measurements`, format 1.
|
|
489
|
+
`--out <dir>` writes one interchange document per run (`lv2-plugin-measurements`, format 1.6,
|
|
464
490
|
the same format the OpenMixer console reads). The
|
|
465
491
|
`plugins` array holds the raw, host-free measurements. Beside it, `hostProfiles` holds each
|
|
466
492
|
profile the run judged against, in full, and `verdicts` holds one entry per plugin per profile:
|
|
@@ -523,6 +549,8 @@ qualified 2, skipped 0, refused 0, crashed 1, hung 1, unmeasured 0, distributed
|
|
|
523
549
|
A plugin that is no longer found, or whose bytes changed, leaves nothing behind: its pin, its qualification
|
|
524
550
|
record (with the probe output copied beside it) and its descriptor are removed. Records the sync did not write
|
|
525
551
|
stay, and nothing is removed in a run that could not read a bundle, so a half-written install is no uninstall.
|
|
552
|
+
A run looks only where its settings point: a plugin outside every directory of its format that the run scans is
|
|
553
|
+
kept as it is (a run scoped to LV2 keeps every CLAP pin), and only one missing from a directory it scans is gone.
|
|
526
554
|
A running plugin-hostd is told with `pin_clear`.
|
|
527
555
|
|
|
528
556
|
When plugin-hostd answers on `hostd_port`, the changed pins are also sent to it with `pin_set` and apply at
|
|
@@ -545,6 +573,7 @@ The settings are `/etc/omx/qualify.conf`, one `key value` per line, and each is
|
|
|
545
573
|
| `grid` | `full`: every rate at every block size, 16 cells (`hosts`, or `--grid-hosts`: the cells of `host_profile` and of the console's two tiers, then 512 at every rate; or `<rate>/<quantum>,...`) |
|
|
546
574
|
| `cells_per_plugin_budget` | `0`, every cell of the grid |
|
|
547
575
|
| `memory_limit` | half of the machine's RAM (`off` for none) |
|
|
576
|
+
| `memory_notes` | `16`: the notes an instrument with no declared capacity holds in a `--memory-only` run |
|
|
548
577
|
| `hostd_port`, `hostd_feedback_port` | `5555`, the next port |
|
|
549
578
|
| `host_class` | the board's own, from the device tree (`rpi5`); none elsewhere |
|
|
550
579
|
| `distributed_dir` | `/usr/share/omx/qualification` |
|
|
@@ -564,6 +593,91 @@ The path unit names the standard folders (`/usr/lib/lv2`, `/usr/lib64/lv2`, `/us
|
|
|
564
593
|
`clap_extra`) are written into a drop-in of the unit by a systemd generator at boot and at every
|
|
565
594
|
`systemctl daemon-reload`, so the file is the one place a machine's extra folders are written.
|
|
566
595
|
|
|
596
|
+
The path unit watches a folder, not the bundles inside it: a new bundle appearing in a watched folder is
|
|
597
|
+
seen at once, but a package's own files being replaced in place (an upgrade) is not a change of the folder
|
|
598
|
+
itself. A packaged plugin is still caught at once, by the distribution's install triggers over the standard
|
|
599
|
+
folders. An unpackaged bundle replaced in place in an extra folder is caught at the next run of
|
|
600
|
+
plugin-qualify-sync.timer, at most about 15 minutes after the change.
|
|
601
|
+
|
|
602
|
+
### Keeping the records through an upgrade
|
|
603
|
+
|
|
604
|
+
An upgrade of plugin-qualify, of the plugins' libraries or of the judge's rules does not call for measuring every plugin
|
|
605
|
+
again. The figures in the records are carried across and judged again:
|
|
606
|
+
|
|
607
|
+
```bash
|
|
608
|
+
plugin-qualify-sync --system --rejudge
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
`--rejudge` measures nothing and needs no measuring tool. It reads every record in `qualification_dir` with the probe
|
|
612
|
+
output it names, and passes them through the same judge a measurement goes through, under the rules of the running
|
|
613
|
+
version: a real-time violation under `run()` or under notes is `conditional` and pinned `isolated`, each host's budget is
|
|
614
|
+
read, and a plugin with no footprint is `unknown` on a host with a memory budget, never read as fitting. It also judges
|
|
615
|
+
each record for `omx-clap-host`, `openmixer-console` and the Pi boards `openmixer-pi-4gb` and `openmixer-pi-8gb`. The
|
|
616
|
+
verdicts, the tiers and the plugin's pin word are replaced; the figures, the probe output and who took them stay as they
|
|
617
|
+
were. The record gains a `rejudged` block with `at`, `by` (the version that judged) and `figures` (`tool`, `measuredAt`
|
|
618
|
+
and `runId`, as measured). A run that finds nothing to change writes nothing.
|
|
619
|
+
|
|
620
|
+
A verdict never says more than the figures do. An LV2 plugin's `omx-clap-host` verdict is decided by its run under the LV2
|
|
621
|
+
adapter (the record's `adapter` block). A record with no measured adapter run reads `unknown`
|
|
622
|
+
(`qualify.sync.adapter-run-owed`), is not offered on the isolated tier, and its pin has no verdict word: plugin-hostd loads
|
|
623
|
+
such a plugin without grouping it. The same goes for a `mod-host` or `jalv` verdict with no run under that host. A record
|
|
624
|
+
whose plugin's bytes changed, or whose probe output is not the copy it names, is left as it is. Everything left owing
|
|
625
|
+
is listed under `owes` in the record and in `qualify-owed.json` beside the state file (`--rejudge` prints each line too),
|
|
626
|
+
with the measurement it needs:
|
|
627
|
+
|
|
628
|
+
| `measurement` | code | what pays it |
|
|
629
|
+
|---|---|---|
|
|
630
|
+
| `adapter-run` | `qualify.sync.adapter-run-owed` | `--adapter-only`, then `--rejudge` |
|
|
631
|
+
| `host-run` | `qualify.sync.host-run-owed` | a run under that host; today, qualifying the plugin again with `--host-profile` |
|
|
632
|
+
| `qualification` | `qualify.sync.bytes-changed`, `qualify.sync.figures-unreadable`, `qualify.sync.no-figures` | qualifying the plugin again; the next run does so for changed bytes |
|
|
633
|
+
|
|
634
|
+
A probe that crashed took no figures: its record stays `unknown` with `probe.crashed`, no pin word and the state's
|
|
635
|
+
outcome `crashed`. A crash under a host's run stays `unsuitable` and `refused`.
|
|
636
|
+
|
|
637
|
+
Footprints older records lack are taken apart from everything else:
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
plugin-qualify-sync --system --memory-only # the footprints, at the cells a Pi runs
|
|
641
|
+
plugin-qualify-sync --system --rejudge # the verdicts that read them
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
`--memory-only` takes the footprint of each plugin the state holds (after instantiate, after activate, at rest, a second
|
|
645
|
+
instance, and notes held for an instrument) at 48 kHz in blocks of 128 and 256 frames, and nothing else: no sweep, no
|
|
646
|
+
cost, no latency, no lifecycle, no soak. It goes through the probe runner under the limits of an ordinary run (`budget_s`,
|
|
647
|
+
`memory_limit`), each plugin in processes of its own, an LV2 plugin in a world of its own bundle. An instrument that
|
|
648
|
+
declares its voice capacity holds that many notes; one that does not holds `memory_notes`, with basis `probe`. Only the
|
|
649
|
+
`memory` of those cells changes in the record, a cell it lacked joins with no other figure, and a `memoryRun` block says
|
|
650
|
+
which runner took them and when. A cell whose run failed holds a reason and no figure. A plugin whose footprints are
|
|
651
|
+
already merged is skipped, so a pass cut short can be run again; `--force` takes them again. The pass judges nothing:
|
|
652
|
+
`--rejudge` afterwards does.
|
|
653
|
+
|
|
654
|
+
The adapter runs a record owes are taken apart as well:
|
|
655
|
+
|
|
656
|
+
```bash
|
|
657
|
+
plugin-qualify-sync --system --adapter-only # the runs, at the cells a Pi runs
|
|
658
|
+
plugin-qualify-sync --system --rejudge # the verdicts they decide
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
`--adapter-only` starts each LV2 plugin the state holds under a fresh omx-clap-host, `add` then `remove` through the LV2
|
|
662
|
+
adapter, once per cell: 48 kHz in blocks of 128 and 256 frames. Each cell has a private JACK server (`jackd -d dummy`, so
|
|
663
|
+
`jackd` must be installed), so the device's live server is never touched. A command has `budget_s` seconds, the host's
|
|
664
|
+
address space is limited as a direct spawn's is, and it is killed with whatever it started. Only the record's `adapter`
|
|
665
|
+
block changes: `versions` (omx-clap-host and plugin-hostd, read from `--version`), `measuredAt`, `cells`, and at its top
|
|
666
|
+
what the judge reads. A crash or a command that gets no answer in time is the plugin's recorded outcome, at the cell it
|
|
667
|
+
happened, and reads `unsuitable` at the next `--rejudge`. A host that could not be run decides nothing: the block says
|
|
668
|
+
`measured: false`, and the run stays owed and is tried again. The pass refuses to start, writing nothing, when a host does
|
|
669
|
+
not say its version or there is no `jackd`. A plugin whose block was taken at these host versions is skipped, so a pass
|
|
670
|
+
cut short can be run again; a host upgrade or `--force` takes them again. A plugin whose probe failed is skipped: it has
|
|
671
|
+
no verdict a run could decide.
|
|
672
|
+
|
|
673
|
+
**A leak is not measured.** Growth over time takes a soak, which this pass does not run: every record it writes names
|
|
674
|
+
`memoryGrowth` under `notMeasured`, and the last line says `leaks not measured`.
|
|
675
|
+
|
|
676
|
+
On a Raspberry Pi 5 a plugin takes under 0.6 s at the median, 5 s at the 90th percentile and 22 s at the 99th; about an
|
|
677
|
+
hour at most for the 1,542 plugins of the Zynthian set. Those are upper bounds: twice the time the 2026-10-28 records say a
|
|
678
|
+
whole pass at one cell took, which also ran 30 lifecycles, the sweep, the latency and the cost. A plugin that hangs
|
|
679
|
+
takes `budget_s` a cell. The test fixtures take 0.1 s each, both cells, on an x86-64 desktop.
|
|
680
|
+
|
|
567
681
|
### Distributed records
|
|
568
682
|
|
|
569
683
|
A device that ships with a known plugin set need not measure it again at first start. The qualification records
|
|
@@ -51,10 +51,12 @@ log(
|
|
|
51
51
|
`memory ${s.memory === undefined ? "unbounded" : `${String(s.memory.bytes)} bytes`}`,
|
|
52
52
|
);
|
|
53
53
|
try {
|
|
54
|
-
const summary = await runSync(s, { force: parsed.args.force, wait: !parsed.args.noWait, refreshOnly: parsed.args.refreshPins, log });
|
|
54
|
+
const summary = await runSync(s, { force: parsed.args.force, wait: !parsed.args.noWait, refreshOnly: parsed.args.refreshPins, rejudge: parsed.args.rejudge, memoryOnly: parsed.args.memoryOnly, adapterOnly: parsed.args.adapterOnly, log });
|
|
55
55
|
if (summary !== undefined) {
|
|
56
56
|
process.stdout.write(`${summaryLine(summary)}\n`);
|
|
57
57
|
log(`pins in ${s.pinFile}${summary.sent ? `, ${String(summary.sent)} sent to plugin-hostd` : ""}`);
|
|
58
|
+
// every plugin left unmeasured by one reason of the machine: the run failed, and the unit says so (#192)
|
|
59
|
+
if (summary.machineFailure !== undefined) process.exit(1);
|
|
58
60
|
}
|
|
59
61
|
} catch (e) {
|
|
60
62
|
log(`the run stopped: ${e.message}`);
|
package/dist/clap-qualify.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type HostingReason, type PluginClapMeasurement, type PluginNoteSweepMea
|
|
|
2
2
|
import { type HostProfile } from "./host-profiles.js";
|
|
3
3
|
import type { QualifyVerdict } from "./qualify-cli.js";
|
|
4
4
|
import { type SuitabilityRating } from "./rating.js";
|
|
5
|
-
import { type IntegrityMeasurement, type VoicesHeld } from "./measurement/format.js";
|
|
5
|
+
import { type IntegrityMeasurement, type MemoryFootprint, type VoicesHeld } from "./measurement/format.js";
|
|
6
6
|
export declare class ClapQualifyError extends Error {
|
|
7
7
|
constructor(message: string);
|
|
8
8
|
}
|
|
@@ -53,6 +53,8 @@ export interface ClapCostReading {
|
|
|
53
53
|
/** The percentile `nsPerSampleP95` is taken at. */
|
|
54
54
|
readonly percentile: number;
|
|
55
55
|
readonly perRate: Readonly<Record<string, ClapCostAtRate>>;
|
|
56
|
+
/** What one instance held at each rate (`memory` on the prober's per-rate object), read apart from the timing. */
|
|
57
|
+
readonly memory?: Readonly<Record<string, MemoryFootprint>>;
|
|
56
58
|
}
|
|
57
59
|
/** One plugin's line from `clap-qualify`. */
|
|
58
60
|
export interface ClapQualifyLine {
|
package/dist/clap-qualify.js
CHANGED
|
@@ -16,7 +16,7 @@ import { HOSTING_CODE, clapRtReasons, contributedHostingRating, noteSweepReasons
|
|
|
16
16
|
import { OMX_CLAP_HOST_CONFIGURED_EXTENSIONS, OMX_CLAP_HOST_EXTENSIONS, OPENMIXER_CONSOLE_PROFILE, } from "./host-profiles.js";
|
|
17
17
|
import { RATING_SEVERITY, worstRating } from "./rating.js";
|
|
18
18
|
import { halfPopulatedRefusal, locateNativeTools } from "./tool-paths.js";
|
|
19
|
-
import { readIntegrity } from "./measurement/format.js";
|
|
19
|
+
import { readIntegrity, readMemoryFootprint } from "./measurement/format.js";
|
|
20
20
|
import { isVoiceBasis } from "./measurement/vocabulary.js";
|
|
21
21
|
import { coreFraction } from "./cost-fields.js";
|
|
22
22
|
export class ClapQualifyError extends Error {
|
|
@@ -198,10 +198,14 @@ function readCost(v) {
|
|
|
198
198
|
if (!isRecord(perRateIn))
|
|
199
199
|
return bad("cost has no perRate map");
|
|
200
200
|
const perRate = {};
|
|
201
|
+
const memory = {};
|
|
201
202
|
for (const [rate, at] of Object.entries(perRateIn)) {
|
|
202
203
|
if (!/^[1-9]\d*$/.test(rate))
|
|
203
204
|
return bad(`cost rate ${rate}`);
|
|
204
205
|
perRate[rate] = readCostAtRate(at, `cost at ${rate}`, stimulus === "notes-held");
|
|
206
|
+
const footprint = isRecord(at) ? readMemoryFootprint(at["memory"]) : undefined;
|
|
207
|
+
if (footprint !== undefined)
|
|
208
|
+
memory[rate] = footprint;
|
|
205
209
|
}
|
|
206
210
|
return {
|
|
207
211
|
stimulus,
|
|
@@ -209,6 +213,7 @@ function readCost(v) {
|
|
|
209
213
|
warmupBlocks: count(v, "warmupBlocks", "cost"),
|
|
210
214
|
percentile: figure(v, "percentile", "cost"),
|
|
211
215
|
perRate,
|
|
216
|
+
...(Object.keys(memory).length === 0 ? {} : { memory }),
|
|
212
217
|
};
|
|
213
218
|
}
|
|
214
219
|
/**
|
|
@@ -250,6 +255,7 @@ export function qualifiedPluginOfClapLine(line, stability) {
|
|
|
250
255
|
clap,
|
|
251
256
|
rtSafety: { ...rtSafety, noteSweep },
|
|
252
257
|
cpuCost: { perRate: clapCostPerRate(line.cost) },
|
|
258
|
+
...(line.cost?.memory === undefined ? {} : { memory: { perRate: line.cost.memory } }),
|
|
253
259
|
...(stability === undefined ? {} : { stability }),
|
|
254
260
|
};
|
|
255
261
|
}
|
package/dist/clap-qualify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clap-qualify.js","sourceRoot":"","sources":["../src/clap-qualify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clap-qualify.js","sourceRoot":"","sources":["../src/clap-qualify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** The outcome of a direct spawn that hit its limit. */
|
|
2
|
+
export declare const MEMORY_LIMIT_EXCEEDED = "memory-limit-exceeded";
|
|
3
|
+
export declare const ADDRESS_SPACE_MECHANISM = "rlimit-as";
|
|
4
|
+
/** Whether the program is built with a sanitizer that reserves address space: its own init symbol is in the binary. */
|
|
5
|
+
export declare function isSanitizerBuild(tool: string, read?: (path: string) => Buffer): boolean;
|
|
6
|
+
export interface DirectSpawn {
|
|
7
|
+
readonly command: string;
|
|
8
|
+
readonly args: readonly string[];
|
|
9
|
+
readonly env: Readonly<Record<string, string>>;
|
|
10
|
+
/** The limit it runs under, in bytes; absent for a sanitizer build. */
|
|
11
|
+
readonly limitBytes?: number;
|
|
12
|
+
}
|
|
13
|
+
/** The limit a direct spawn takes by default: `ADDRESS_SPACE_LIMIT_RAM_FRACTION` of the machine's RAM. */
|
|
14
|
+
export declare const defaultAddressSpaceLimit: (ramBytes?: number) => number;
|
|
15
|
+
/**
|
|
16
|
+
* How to spawn `tool` under the limit: the shell sets it and execs the program, since node has no way to set a child's
|
|
17
|
+
* rlimit. The program's own process stays the one spawned, so a signal or a timeout reaches it as before.
|
|
18
|
+
*/
|
|
19
|
+
export declare function addressSpaceLimited(tool: string, args: readonly string[], limitBytes?: number, sanitizer?: boolean): DirectSpawn;
|
|
20
|
+
/** What the end of a direct spawn under a limit comes to: the outcome and the limit when it hit it, else nothing. */
|
|
21
|
+
export declare function directOutcome(status: number | null, spawn: DirectSpawn): {
|
|
22
|
+
readonly outcome: string;
|
|
23
|
+
readonly memoryLimit: {
|
|
24
|
+
readonly bytes: number;
|
|
25
|
+
readonly mechanism: string;
|
|
26
|
+
};
|
|
27
|
+
} | undefined;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
// Copyright (C) 2026 Pau Aliagas <linuxnow@gmail.com>
|
|
3
|
+
/**
|
|
4
|
+
* The hard limit of a process plugin-qualify spawns directly. Through plugin-hostd's runner a measured child has `memory.max`;
|
|
5
|
+
* a direct spawn has no runner, so it gets `RLIMIT_AS`, which needs no privilege. It is off for a sanitizer build, which
|
|
6
|
+
* reserves far more address space than it uses and would fail at start under any limit worth having.
|
|
7
|
+
*
|
|
8
|
+
* Hitting the limit is an outcome: the interposer ends the child with `MEMORY_BOUND_EXIT_STATUS` on the first refused
|
|
9
|
+
* allocation when `MEMORY_BOUND_EXIT_ENV` is set ({@link addressSpaceLimited} sets it), and {@link directOutcome} names it.
|
|
10
|
+
*/
|
|
11
|
+
import { readFileSync } from "node:fs";
|
|
12
|
+
import { totalmem } from "node:os";
|
|
13
|
+
import { ADDRESS_SPACE_LIMIT_RAM_FRACTION, MEMORY_BOUND_EXIT_ENV, MEMORY_BOUND_EXIT_STATUS } from "./qualify-declarations.js";
|
|
14
|
+
/** The outcome of a direct spawn that hit its limit. */
|
|
15
|
+
export const MEMORY_LIMIT_EXCEEDED = "memory-limit-exceeded";
|
|
16
|
+
export const ADDRESS_SPACE_MECHANISM = "rlimit-as";
|
|
17
|
+
const SANITIZER_ENTRY = ["__asan_init", "__tsan_init", "__msan_init"];
|
|
18
|
+
/** Whether the program is built with a sanitizer that reserves address space: its own init symbol is in the binary. */
|
|
19
|
+
export function isSanitizerBuild(tool, read = (p) => readFileSync(p)) {
|
|
20
|
+
let bytes;
|
|
21
|
+
try {
|
|
22
|
+
bytes = read(tool);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return SANITIZER_ENTRY.some((s) => bytes.includes(s));
|
|
28
|
+
}
|
|
29
|
+
/** The limit a direct spawn takes by default: `ADDRESS_SPACE_LIMIT_RAM_FRACTION` of the machine's RAM. */
|
|
30
|
+
export const defaultAddressSpaceLimit = (ramBytes = totalmem()) => Math.floor(ramBytes * ADDRESS_SPACE_LIMIT_RAM_FRACTION);
|
|
31
|
+
/**
|
|
32
|
+
* How to spawn `tool` under the limit: the shell sets it and execs the program, since node has no way to set a child's
|
|
33
|
+
* rlimit. The program's own process stays the one spawned, so a signal or a timeout reaches it as before.
|
|
34
|
+
*/
|
|
35
|
+
export function addressSpaceLimited(tool, args, limitBytes = defaultAddressSpaceLimit(), sanitizer = isSanitizerBuild(tool)) {
|
|
36
|
+
if (sanitizer)
|
|
37
|
+
return { command: tool, args, env: {} };
|
|
38
|
+
const kb = Math.ceil(limitBytes / 2 ** 10);
|
|
39
|
+
return {
|
|
40
|
+
command: "/bin/sh",
|
|
41
|
+
args: ["-c", `ulimit -v ${String(kb)} && exec "$@"`, "sh", tool, ...args],
|
|
42
|
+
env: { [MEMORY_BOUND_EXIT_ENV]: "1" },
|
|
43
|
+
limitBytes,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** What the end of a direct spawn under a limit comes to: the outcome and the limit when it hit it, else nothing. */
|
|
47
|
+
export function directOutcome(status, spawn) {
|
|
48
|
+
if (spawn.limitBytes === undefined || status !== MEMORY_BOUND_EXIT_STATUS)
|
|
49
|
+
return undefined;
|
|
50
|
+
return { outcome: MEMORY_LIMIT_EXCEEDED, memoryLimit: { bytes: spawn.limitBytes, mechanism: ADDRESS_SPACE_MECHANISM } };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=direct-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-limit.js","sourceRoot":"","sources":["../src/direct-limit.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sDAAsD;AACtD;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,gCAAgC,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE9H,wDAAwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAEnD,MAAM,eAAe,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAEtE,uHAAuH;AACvH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAiC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACpG,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAUD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,WAAmB,QAAQ,EAAE,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,gCAAgC,CAAC,CAAC;AAE3I;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,IAAuB,EACvB,aAAqB,wBAAwB,EAAE,EAC/C,YAAqB,gBAAgB,CAAC,IAAI,CAAC;IAE3C,IAAI,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,CAAC,IAAI,EAAE,aAAa,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACzE,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE;QACrC,UAAU;KACX,CAAC;AACJ,CAAC;AAED,qHAAqH;AACrH,MAAM,UAAU,aAAa,CAAC,MAAqB,EAAE,KAAkB;IACrE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,KAAK,wBAAwB;QAAE,OAAO,SAAS,CAAC;IAC5F,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAE,CAAC;AAC1H,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type QualificationRecord } from "./qualification-record.js";
|
|
2
|
-
import type { FileDigest, SyncItem, SyncPlugin } from "./qualify-sync.js";
|
|
1
|
+
import { type QualificationRecord, type RecordVerdict } from "./qualification-record.js";
|
|
2
|
+
import type { FileDigest, SyncItem, SyncOutcome, SyncPlugin } from "./qualify-sync.js";
|
|
3
3
|
/** Where a system's packages install the distributed records. */
|
|
4
4
|
export declare const DISTRIBUTED_DIR_SYSTEM = "/usr/share/omx/qualification";
|
|
5
5
|
/** The file of a set that says where its records come from. */
|
|
@@ -52,6 +52,8 @@ export declare const EMPTY_LAYER: DistributedLayer;
|
|
|
52
52
|
export declare function readDistributedLayer(dirs: readonly string[], hostClass: string, log?: (line: string) => void): DistributedLayer;
|
|
53
53
|
/** The uri a record's plugin has on this machine: the installed `.clap`'s path and the id, or the LV2 uri. */
|
|
54
54
|
export declare function distributedUri(item: SyncItem, r: DistributedRecord): string;
|
|
55
|
+
/** What the sync's own judgment would make of the record's verdict for the host, as `outcomeOf` reads a run. */
|
|
56
|
+
export declare function outcomeOfVerdict(v: Pick<RecordVerdict, "measured" | "rating" | "deciding">): SyncOutcome;
|
|
55
57
|
/** What the layer makes of one item. */
|
|
56
58
|
export type DistributedMatch =
|
|
57
59
|
/** No distributed record names the plugin: it is measured, and nothing is said. */
|
|
@@ -117,7 +117,7 @@ export function distributedUri(item, r) {
|
|
|
117
117
|
return item.format === "clap" ? clapPinUri(join(item.root, item.files[0]), `urn:clap:${r.record.plugin.id}`) : r.record.plugin.id;
|
|
118
118
|
}
|
|
119
119
|
/** What the sync's own judgment would make of the record's verdict for the host, as `outcomeOf` reads a run. */
|
|
120
|
-
function outcomeOfVerdict(v) {
|
|
120
|
+
export function outcomeOfVerdict(v) {
|
|
121
121
|
if (!v.measured)
|
|
122
122
|
return v.deciding === "probe.crashed" ? "crashed" : v.deciding === "probe.timeout" ? "hung" : "unmeasured";
|
|
123
123
|
if (v.rating === "suitable" || v.rating === "conditional")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distributed-records.js","sourceRoot":"","sources":["../src/distributed-records.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"distributed-records.js","sourceRoot":"","sources":["../src/distributed-records.ts"],"names":[],"mappings":"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"}
|
package/dist/host-admission.d.ts
CHANGED
|
@@ -6,10 +6,18 @@ export type AdmittedHost = (typeof ADMITTED_HOSTS)[number];
|
|
|
6
6
|
export declare function admittedHostOf(profile: HostProfile): AdmittedHost | undefined;
|
|
7
7
|
/**
|
|
8
8
|
* plugin-hostd's LV2 adapter, omx-clap-host: an LV2 plugin is run under it once, as under mod-host, and the record
|
|
9
|
-
* carries the outcome as its own step
|
|
10
|
-
*
|
|
9
|
+
* carries the outcome as its own step (plugin-qualify#223). The run decides the omx-clap-host verdict of an LV2
|
|
10
|
+
* plugin, the isolated tier, as a mod-host run decides mod-host's; a CLAP plugin's stays the measurement.
|
|
11
11
|
*/
|
|
12
12
|
export declare const ADAPTER_HOST = "omx-clap-host";
|
|
13
|
+
/** The profiles whose LV2 plugins run under that adapter: omx-clap-host, and the Pi boards it runs on (`host-profiles.ts`). */
|
|
14
|
+
export declare const ADAPTER_RUN_HOSTS: readonly string[];
|
|
15
|
+
/**
|
|
16
|
+
* Whether this run decides the profile's verdict for a plugin of this format. A mod-host or jalv run always does, an
|
|
17
|
+
* unmeasured one making the verdict unknown; the adapter's only when it measured, since the omx-clap-host verdict
|
|
18
|
+
* otherwise stands on the measurement.
|
|
19
|
+
*/
|
|
20
|
+
export declare function runDecides(profile: HostProfile, format: string, admission: HostAdmission): boolean;
|
|
13
21
|
/** What running the plugin under one host came to. */
|
|
14
22
|
export interface HostAdmission {
|
|
15
23
|
readonly host: AdmittedHost | typeof ADAPTER_HOST;
|
|
@@ -31,6 +39,8 @@ export interface ModHostStep {
|
|
|
31
39
|
/** What `tools/mod-host-admit.mjs` printed. */
|
|
32
40
|
export interface ModHostRun {
|
|
33
41
|
readonly installed: boolean;
|
|
42
|
+
/** False when the host never took a connection (omx-clap-host with no JACK server): no plugin was loaded. */
|
|
43
|
+
readonly started?: boolean;
|
|
34
44
|
readonly steps: readonly ModHostStep[];
|
|
35
45
|
}
|
|
36
46
|
/** The verdict of a run of a host that speaks mod-host's protocol: the first step that did not answer `resp 0` decides. */
|
package/dist/host-admission.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { spawnSync } from "node:child_process";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
13
|
+
import { ADMIT_STEP_MS_ENV } from "./qualify-declarations.js";
|
|
13
14
|
/** The profile ids whose verdict is measured by a run. */
|
|
14
15
|
export const ADMITTED_HOSTS = ["mod-host", "jalv"];
|
|
15
16
|
/** The admitting host of a profile, or `undefined` when its verdict is judged from a declaration. */
|
|
@@ -18,10 +19,20 @@ export function admittedHostOf(profile) {
|
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* plugin-hostd's LV2 adapter, omx-clap-host: an LV2 plugin is run under it once, as under mod-host, and the record
|
|
21
|
-
* carries the outcome as its own step
|
|
22
|
-
*
|
|
22
|
+
* carries the outcome as its own step (plugin-qualify#223). The run decides the omx-clap-host verdict of an LV2
|
|
23
|
+
* plugin, the isolated tier, as a mod-host run decides mod-host's; a CLAP plugin's stays the measurement.
|
|
23
24
|
*/
|
|
24
25
|
export const ADAPTER_HOST = "omx-clap-host";
|
|
26
|
+
/** The profiles whose LV2 plugins run under that adapter: omx-clap-host, and the Pi boards it runs on (`host-profiles.ts`). */
|
|
27
|
+
export const ADAPTER_RUN_HOSTS = [ADAPTER_HOST, "openmixer-pi-4gb", "openmixer-pi-8gb"];
|
|
28
|
+
/**
|
|
29
|
+
* Whether this run decides the profile's verdict for a plugin of this format. A mod-host or jalv run always does, an
|
|
30
|
+
* unmeasured one making the verdict unknown; the adapter's only when it measured, since the omx-clap-host verdict
|
|
31
|
+
* otherwise stands on the measurement.
|
|
32
|
+
*/
|
|
33
|
+
export function runDecides(profile, format, admission) {
|
|
34
|
+
return admittedHostOf(profile) !== undefined || (ADAPTER_RUN_HOSTS.includes(profile.id) && format === "lv2" && admission.measured);
|
|
35
|
+
}
|
|
25
36
|
const admitted = (host) => ({ host, measured: true, admitted: true, params: {} });
|
|
26
37
|
const refused = (host, code, params = {}) => ({
|
|
27
38
|
host,
|
|
@@ -35,6 +46,9 @@ const notInstalled = (host) => ({ host, measured: false, admitted: false, code:
|
|
|
35
46
|
export function classifyProtocolRun(host, run) {
|
|
36
47
|
if (!run.installed)
|
|
37
48
|
return notInstalled(host);
|
|
49
|
+
// the host never listened, so the plugin was never loaded: nothing was learned about it
|
|
50
|
+
if (run.started === false)
|
|
51
|
+
return { host, measured: false, admitted: false, code: `${host}.not-started`, params: {} };
|
|
38
52
|
for (const s of run.steps) {
|
|
39
53
|
if (s.died !== undefined) {
|
|
40
54
|
if (s.died.startsWith("SIG"))
|
|
@@ -79,7 +93,10 @@ const MOD_HOST_ADMIT = fileURLToPath(new URL("../tools/mod-host-admit.mjs", impo
|
|
|
79
93
|
/** The runs against the installed hosts. */
|
|
80
94
|
export const SPAWNED_ADMISSIONS = {
|
|
81
95
|
adapter(uri, env) {
|
|
82
|
-
|
|
96
|
+
// two commands at the limit the pass gives each, and the tool's own start and end: it kills the host itself first
|
|
97
|
+
const stepMs = Number(env?.[ADMIT_STEP_MS_ENV] ?? 0);
|
|
98
|
+
const timeout = stepMs > 0 ? 2 * stepMs + 15000 : MOD_HOST_ADMISSION_MS;
|
|
99
|
+
const r = spawnSync(process.execPath, [MOD_HOST_ADMIT, uri, ADAPTER_HOST], { encoding: "utf8", timeout, killSignal: "SIGKILL", ...(env === undefined ? {} : { env: { ...env } }) });
|
|
83
100
|
if (r.error !== undefined || r.status !== 0) {
|
|
84
101
|
throw new Error(`${ADAPTER_HOST} admission of ${uri} gave no answer (${r.error?.message ?? `exit ${String(r.status)}`}): ${(r.stderr ?? "").trim()}`);
|
|
85
102
|
}
|
|
@@ -93,7 +110,10 @@ export const SPAWNED_ADMISSIONS = {
|
|
|
93
110
|
return JSON.parse(r.stdout);
|
|
94
111
|
},
|
|
95
112
|
jalv(uri, env) {
|
|
96
|
-
|
|
113
|
+
// SIGKILL at the deadline: jalv hosting some plugins ignores SIGTERM, and one stuck in jack_client_open never reaches
|
|
114
|
+
// the loop that reads the flag TERM sets, so a TERM left spawnSync waiting with it (#187). Alive at the deadline is
|
|
115
|
+
// all the verdict asks, so nothing is lost by not letting it exit cleanly.
|
|
116
|
+
const r = spawnSync("jalv", ["-n", "plugin-qualify", uri], { encoding: "utf8", timeout: JALV_HOSTED_MS, killSignal: "SIGKILL", input: "", ...(env === undefined ? {} : { env: { ...env } }) });
|
|
97
117
|
const code = r.error?.code;
|
|
98
118
|
if (code === "ENOENT")
|
|
99
119
|
return { installed: false, stillRunning: false, status: null, signal: null, stderr: "" };
|