Take both native libraries from one place
vidya moved into the jolt-native workspace beside the AV media plane, so there is one repo to build, one target directory to point the loader at, and one dependency to explain. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
a66d1c1 parent: ea3c833 modified
README.md +6 -8 | @@ -33,20 +33,18 @@ Android is logcat. | ||
| 33 | 33 | |
| 34 | 34 | ## Running |
| 35 | 35 | |
| 36 | -`libvidya` from Vidya's Rust/egui backend, then the app: | |
| 36 | +Both native libraries, then the app: | |
| 37 | 37 | |
| 38 | 38 | ```bash |
| 39 | 39 | just lib |
| 40 | 40 | just run |
| 41 | 41 | ``` |
| 42 | 42 | |
| 43 | -Calls need one more object, `libjoltmoq`, from | |
| 44 | -[jolt-native](https://gitlab.com/nandithebull/jolt-native). Everything else | |
| 45 | -works without it: | |
| 46 | - | |
| 47 | -```bash | |
| 48 | -just av | |
| 49 | -``` | |
| 43 | +`just lib` builds [jolt-native](https://gitlab.com/nandithebull/jolt-native), | |
| 44 | +which is where every shared object this client loads comes from: `libvidya`, | |
| 45 | +the retained-tree ABI glimmer paints through, and `libjoltmoq`, the AV media | |
| 46 | +plane. They come out of one directory, and `just run` puts that one directory | |
| 47 | +on the loader path. | |
| 50 | 48 | |
| 51 | 49 | `just run` is `jolt -M:frq` with `LD_LIBRARY_PATH` pointed at the built |
| 52 | 50 | library. It connects to `irc.freeq.at:6697` over TLS and joins `#test`. Untick |
| @@ -33,20 +33,18 @@ Android is logcat. | |||
| 33 | 33 | ||
| 34 | ## Running | 34 | ## Running |
| 35 | 35 | ||
| 36 | -`libvidya` from Vidya's Rust/egui backend, then the app: | 36 | +Both native libraries, then the app: |
| 37 | 37 | ||
| 38 | ```bash | 38 | ```bash |
| 39 | just lib | 39 | just lib |
| 40 | just run | 40 | just run |
| 41 | ``` | 41 | ``` |
| 42 | 42 | ||
| 43 | -Calls need one more object, `libjoltmoq`, from | 43 | +`just lib` builds [jolt-native](https://gitlab.com/nandithebull/jolt-native), |
| 44 | -[jolt-native](https://gitlab.com/nandithebull/jolt-native). Everything else | 44 | +which is where every shared object this client loads comes from: `libvidya`, |
| 45 | -works without it: | 45 | +the retained-tree ABI glimmer paints through, and `libjoltmoq`, the AV media |
| 46 | - | 46 | +plane. They come out of one directory, and `just run` puts that one directory |
| 47 | -```bash | 47 | +on the loader path. |
| 48 | -just av | ||
| 49 | -``` | ||
| 50 | 48 | ||
| 51 | `just run` is `jolt -M:frq` with `LD_LIBRARY_PATH` pointed at the built | 49 | `just run` is `jolt -M:frq` with `LD_LIBRARY_PATH` pointed at the built |
| 52 | library. It connects to `irc.freeq.at:6697` over TLS and joins `#test`. Untick | 50 | library. It connects to `irc.freeq.at:6697` over TLS and joins `#test`. Untick |
modified
deps.edn +11 -10 | @@ -8,17 +8,18 @@ | ||
| 8 | 8 | ;; handed out again — which took the message list apart in a busy channel. |
| 9 | 9 | :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer" |
| 10 | 10 | :git/sha "4e733aa26343cef0478d8dfd3f2b76c0113b0969"} |
| 11 | - nandi/glimmer-vidya {:local/root "../vidya/glimmer"}} | |
| 11 | + nandi/glimmer-vidya {:local/root "../jolt-native/jolt/glimmer-vidya"}} | |
| 12 | 12 | |
| 13 | - ;; libvidya, the Rust/egui build (the C/raylib one does not export the tree | |
| 14 | - ;; ABI the backend binds): | |
| 15 | - ;; cd ../vidya && just ffi | |
| 16 | - ;; LD_LIBRARY_PATH=../vidya/build jolt -M:frq | |
| 17 | - ;; libjoltmoq is the AV media plane — MoQ over QUIC, Opus, H.264 and capture — | |
| 18 | - ;; from gitlab.com/nandithebull/jolt-native. Calls are the one thing this | |
| 19 | - ;; client cannot do in jolt: signaling is IRC and lives in src/frq/av.jolt, | |
| 20 | - ;; but the media half is three thousand lines of codec and transport that | |
| 21 | - ;; would only be written badly a second time here. | |
| 13 | + ;; Both objects come from gitlab.com/nandithebull/jolt-native, one crate each, | |
| 14 | + ;; out of one target directory: | |
| 15 | + ;; | |
| 16 | + ;; libvidya the retained-tree ABI glimmer-vidya binds, on egui | |
| 17 | + ;; libjoltmoq the AV media plane — MoQ over QUIC, Opus, H.264, capture | |
| 18 | + ;; | |
| 19 | + ;; Calls are the one thing this client cannot do in jolt. Signaling is IRC and | |
| 20 | + ;; lives in src/frq/av.jolt; the media half is three thousand lines of codec | |
| 21 | + ;; and transport that would only be written badly a second time here. | |
| 22 | + ;; | |
| 22 | 23 | ;; cd ../jolt-native && just build |
| 23 | 24 | :jolt/native [{:name "vidya" |
| 24 | 25 | :darwin ["libvidya.dylib"] |
| @@ -8,17 +8,18 @@ | |||
| 8 | ;; handed out again — which took the message list apart in a busy channel. | 8 | ;; handed out again — which took the message list apart in a busy channel. |
| 9 | :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer" | 9 | :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer" |
| 10 | :git/sha "4e733aa26343cef0478d8dfd3f2b76c0113b0969"} | 10 | :git/sha "4e733aa26343cef0478d8dfd3f2b76c0113b0969"} |
| 11 | - nandi/glimmer-vidya {:local/root "../vidya/glimmer"}} | 11 | + nandi/glimmer-vidya {:local/root "../jolt-native/jolt/glimmer-vidya"}} |
| 12 | 12 | ||
| 13 | - ;; libvidya, the Rust/egui build (the C/raylib one does not export the tree | 13 | + ;; Both objects come from gitlab.com/nandithebull/jolt-native, one crate each, |
| 14 | - ;; ABI the backend binds): | 14 | + ;; out of one target directory: |
| 15 | - ;; cd ../vidya && just ffi | 15 | + ;; |
| 16 | - ;; LD_LIBRARY_PATH=../vidya/build jolt -M:frq | 16 | + ;; libvidya the retained-tree ABI glimmer-vidya binds, on egui |
| 17 | - ;; libjoltmoq is the AV media plane — MoQ over QUIC, Opus, H.264 and capture — | 17 | + ;; libjoltmoq the AV media plane — MoQ over QUIC, Opus, H.264, capture |
| 18 | - ;; from gitlab.com/nandithebull/jolt-native. Calls are the one thing this | 18 | + ;; |
| 19 | - ;; client cannot do in jolt: signaling is IRC and lives in src/frq/av.jolt, | 19 | + ;; Calls are the one thing this client cannot do in jolt. Signaling is IRC and |
| 20 | - ;; but the media half is three thousand lines of codec and transport that | 20 | + ;; lives in src/frq/av.jolt; the media half is three thousand lines of codec |
| 21 | - ;; would only be written badly a second time here. | 21 | + ;; and transport that would only be written badly a second time here. |
| 22 | + ;; | ||
| 22 | ;; cd ../jolt-native && just build | 23 | ;; cd ../jolt-native && just build |
| 23 | :jolt/native [{:name "vidya" | 24 | :jolt/native [{:name "vidya" |
| 24 | :darwin ["libvidya.dylib"] | 25 | :darwin ["libvidya.dylib"] |
modified
justfile +6 -11 | @@ -2,26 +2,21 @@ set shell := ["bash", "-euo", "pipefail", "-c"] | ||
| 2 | 2 | |
| 3 | 3 | # Sibling checkouts, found relative to the *main* checkout rather than to this |
| 4 | 4 | # directory. In a git worktree they are not the same place: the justfile sits |
| 5 | -# at .claude/worktrees/<name>, so "../vidya" from here would be | |
| 6 | -# .claude/worktrees/vidya, which is nothing. `--git-common-dir` is the one | |
| 5 | +# at .claude/worktrees/<name>, so "../jolt-native" from here would be | |
| 6 | +# .claude/worktrees/jolt-native, which is nothing. `--git-common-dir` is the one | |
| 7 | 7 | # thing that answers the same in a worktree as it does in the checkout it came |
| 8 | 8 | # from. |
| 9 | 9 | checkout := parent_directory(`git rev-parse --path-format=absolute --git-common-dir`) |
| 10 | -vidya := checkout / "../vidya" | |
| 11 | 10 | jolt_native := checkout / "../jolt-native" |
| 12 | 11 | |
| 13 | 12 | default: |
| 14 | 13 | @just --list |
| 15 | 14 | |
| 16 | -# libvidya (Rust/egui build) — the tree ABI glimmer-vidya binds. | |
| 15 | +# Both native libraries: libvidya (the tree ABI glimmer-vidya binds) and | |
| 16 | +# libjoltmoq (the AV media plane). One workspace, one target directory. | |
| 17 | 17 | lib: |
| 18 | - cd {{vidya}} && just ffi | |
| 19 | - | |
| 20 | -# libjoltmoq — the AV media plane. Only needed for calls; everything else in | |
| 21 | -# the client runs without it. | |
| 22 | -av: | |
| 23 | 18 | cd {{jolt_native}} && just build |
| 24 | 19 | |
| 25 | -# The app. Point LD_LIBRARY_PATH at whichever libvidya build you have. | |
| 20 | +# The app. | |
| 26 | 21 | run *args: |
| 27 | - LD_LIBRARY_PATH="{{vidya}}/build:{{vidya}}/ffi/target/release:{{jolt_native}}/target/release" jolt -M:frq {{args}} | |
| 22 | + LD_LIBRARY_PATH="{{jolt_native}}/target/release" jolt -M:frq {{args}} | |
| @@ -2,26 +2,21 @@ set shell := ["bash", "-euo", "pipefail", "-c"] | |||
| 2 | 2 | ||
| 3 | # Sibling checkouts, found relative to the *main* checkout rather than to this | 3 | # Sibling checkouts, found relative to the *main* checkout rather than to this |
| 4 | # directory. In a git worktree they are not the same place: the justfile sits | 4 | # directory. In a git worktree they are not the same place: the justfile sits |
| 5 | -# at .claude/worktrees/<name>, so "../vidya" from here would be | 5 | +# at .claude/worktrees/<name>, so "../jolt-native" from here would be |
| 6 | -# .claude/worktrees/vidya, which is nothing. `--git-common-dir` is the one | 6 | +# .claude/worktrees/jolt-native, which is nothing. `--git-common-dir` is the one |
| 7 | # thing that answers the same in a worktree as it does in the checkout it came | 7 | # thing that answers the same in a worktree as it does in the checkout it came |
| 8 | # from. | 8 | # from. |
| 9 | checkout := parent_directory(`git rev-parse --path-format=absolute --git-common-dir`) | 9 | checkout := parent_directory(`git rev-parse --path-format=absolute --git-common-dir`) |
| 10 | -vidya := checkout / "../vidya" | ||
| 11 | jolt_native := checkout / "../jolt-native" | 10 | jolt_native := checkout / "../jolt-native" |
| 12 | 11 | ||
| 13 | default: | 12 | default: |
| 14 | @just --list | 13 | @just --list |
| 15 | 14 | ||
| 16 | -# libvidya (Rust/egui build) — the tree ABI glimmer-vidya binds. | 15 | +# Both native libraries: libvidya (the tree ABI glimmer-vidya binds) and |
| 16 | +# libjoltmoq (the AV media plane). One workspace, one target directory. | ||
| 17 | lib: | 17 | lib: |
| 18 | - cd {{vidya}} && just ffi | ||
| 19 | - | ||
| 20 | -# libjoltmoq — the AV media plane. Only needed for calls; everything else in | ||
| 21 | -# the client runs without it. | ||
| 22 | -av: | ||
| 23 | cd {{jolt_native}} && just build | 18 | cd {{jolt_native}} && just build |
| 24 | 19 | ||
| 25 | -# The app. Point LD_LIBRARY_PATH at whichever libvidya build you have. | 20 | +# The app. |
| 26 | run *args: | 21 | run *args: |
| 27 | - LD_LIBRARY_PATH="{{vidya}}/build:{{vidya}}/ffi/target/release:{{jolt_native}}/target/release" jolt -M:frq {{args}} | 22 | + LD_LIBRARY_PATH="{{jolt_native}}/target/release" jolt -M:frq {{args}} |