nandi/frqpublic Fork 0
a66d1c1
Commits
Clone
git clone https://git.rickub.com/nandi/frq.git
git clone ssh://git@rickub.com/nandi/frq.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

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>
nandi committed 2026-08-30T16:54:05-07:00 Browse files
a66d1c1 parent: ea3c833
modified README.md +6 -8
@@ -33,20 +33,18 @@ Android is logcat.
3333
3434 ## Running
3535
36-`libvidya` from Vidya's Rust/egui backend, then the app:
36+Both native libraries, then the app:
3737
3838 ```bash
3939 just lib
4040 just run
4141 ```
4242
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.
5048
5149 `just run` is `jolt -M:frq` with `LD_LIBRARY_PATH` pointed at the built
5250 library. It connects to `irc.freeq.at:6697` over TLS and joins `#test`. Untick
@@ -33,20 +33,18 @@ Android is logcat.
33 33
34 ## Running34 ## Running
35 35
36-`libvidya` from Vidya's Rust/egui backend, then the app:36+Both native libraries, then the app:
37 37
38 ```bash38 ```bash
39 just lib39 just lib
40 just run40 just run
41 ```41 ```
42 42
43-Calls need one more object, `libjoltmoq`, from43+`just lib` builds [jolt-native](https://gitlab.com/nandithebull/jolt-native),
44-[jolt-native](https://gitlab.com/nandithebull/jolt-native). Everything else44+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-```bash47+on the loader path.
48-just av
49-```
50 48
51 `just run` is `jolt -M:frq` with `LD_LIBRARY_PATH` pointed at the built49 `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`. Untick50 library. It connects to `irc.freeq.at:6697` over TLS and joins `#test`. Untick
modified deps.edn +11 -10
@@ -8,17 +8,18 @@
88 ;; handed out again — which took the message list apart in a busy channel.
99 :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer"
1010 :git/sha "4e733aa26343cef0478d8dfd3f2b76c0113b0969"}
11- nandi/glimmer-vidya {:local/root "../vidya/glimmer"}}
11+ nandi/glimmer-vidya {:local/root "../jolt-native/jolt/glimmer-vidya"}}
1212
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+ ;;
2223 ;; cd ../jolt-native && just build
2324 :jolt/native [{:name "vidya"
2425 :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 tree13+ ;; 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 ffi15+ ;;
16- ;; LD_LIBRARY_PATH=../vidya/build jolt -M:frq16+ ;; 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 this18+ ;;
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 that20+ ;; 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 build23 ;; 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"]
22
33 # Sibling checkouts, found relative to the *main* checkout rather than to this
44 # 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
77 # thing that answers the same in a worktree as it does in the checkout it came
88 # from.
99 checkout := parent_directory(`git rev-parse --path-format=absolute --git-common-dir`)
10-vidya := checkout / "../vidya"
1110 jolt_native := checkout / "../jolt-native"
1211
1312 default:
1413 @just --list
1514
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.
1717 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:
2318 cd {{jolt_native}} && just build
2419
25-# The app. Point LD_LIBRARY_PATH at whichever libvidya build you have.
20+# The app.
2621 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 this3 # 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 sits4 # directory. In a git worktree they are not the same place: the justfile sits
5-# at .claude/worktrees/<name>, so "../vidya" from here would be5+# at .claude/worktrees/<name>, so "../jolt-native" from here would be
6-# .claude/worktrees/vidya, which is nothing. `--git-common-dir` is the one6+# .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 came7 # 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 --list13 @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 build18 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}}