nandi/frqpublic Fork 0
5c40e75
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 glimmer-vidya from gitlab, so a stranger can build this

Both Jolt dependencies are git coordinates now. glimmer-vidya was a path into
a sibling checkout, which is a build only someone with that checkout could do;
it lives in one repo with the two shared objects, so it comes from there, at
the commit the objects were built from.

`just lib` clones jolt-native when there is no sibling checkout, and a sibling
still wins — working on the two together is unchanged. What it cannot supply
is a Rust toolchain: the shared objects are still built from source.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
nandi committed 2026-08-30T22:20:12-07:00 Browse files
5c40e75 parent: 3043efe
modified .gitignore +3 -0
@@ -1,6 +1,9 @@
11 # Build outputs: the boot image, the staged libraries, the APK.
22 /android/build/
33
4+# jolt-native, cloned by `just lib` when there is no sibling checkout.
5+/.jolt-native/
6+
47 # Tool caches.
58 /.jolt/
69 /.lsp/
@@ -1,6 +1,9 @@
1 # Build outputs: the boot image, the staged libraries, the APK.1 # Build outputs: the boot image, the staged libraries, the APK.
2 /android/build/2 /android/build/
3 3
4+# jolt-native, cloned by `just lib` when there is no sibling checkout.
5+/.jolt-native/
6+
4 # Tool caches.7 # Tool caches.
5 /.jolt/8 /.jolt/
6 /.lsp/9 /.lsp/
modified README.md +5 -4
@@ -42,10 +42,11 @@ just run
4242 ```
4343
4444 `just lib` builds [jolt-native](https://gitlab.com/nandithebull/jolt-native),
45-which is where every shared object this client loads comes from: `libvidya`,
46-the retained-tree ABI glimmer paints through, and `libjoltmoq`, the AV media
47-plane. They come out of one directory, and `just run` puts that one directory
48-on the loader path.
45+cloning it into `.jolt-native` at the pinned commit unless you already have a
46+sibling checkout, which wins. That repo is where every shared object this
47+client loads comes from: `libvidya`, the retained-tree ABI glimmer paints
48+through, and `libjoltmoq`, the AV media plane. They come out of one directory,
49+and `just run` puts that one directory on the loader path.
4950
5051 `just run` is `jolt -M:frq` with `LD_LIBRARY_PATH` pointed at the built
5152 library. It connects to `irc.freeq.at:6697` over TLS and joins `#test`. Untick
@@ -42,10 +42,11 @@ just run
42 ```42 ```
43 43
44 `just lib` builds [jolt-native](https://gitlab.com/nandithebull/jolt-native),44 `just lib` builds [jolt-native](https://gitlab.com/nandithebull/jolt-native),
45-which is where every shared object this client loads comes from: `libvidya`,45+cloning it into `.jolt-native` at the pinned commit unless you already have a
46-the retained-tree ABI glimmer paints through, and `libjoltmoq`, the AV media46+sibling checkout, which wins. That repo is where every shared object this
47-plane. They come out of one directory, and `just run` puts that one directory47+client loads comes from: `libvidya`, the retained-tree ABI glimmer paints
48-on the loader path.48+through, and `libjoltmoq`, the AV media plane. They come out of one directory,
49+and `just run` puts that one directory on the loader path.
49 50
50 `just run` is `jolt -M:frq` with `LD_LIBRARY_PATH` pointed at the built51 `just run` is `jolt -M:frq` with `LD_LIBRARY_PATH` pointed at the built
51 library. It connects to `irc.freeq.at:6697` over TLS and joins `#test`. Untick52 library. It connects to `irc.freeq.at:6697` over TLS and joins `#test`. Untick
modified deps.edn +4 -2
@@ -12,7 +12,9 @@
1212 ;; widget.
1313 :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer"
1414 :git/sha "399df371c790d690fb6e4560c3d4d7f838502857"}
15- nandi/glimmer-vidya {:local/root "../jolt-native/jolt/glimmer-vidya"}}
15+ nandi/glimmer-vidya {:git/url "https://gitlab.com/nandithebull/jolt-native"
16+ :git/sha "70072e8e48ad396caeab6f6bd18b999cf449ec8f"
17+ :deps/root "jolt/glimmer-vidya"}}
1618
1719 ;; Both objects come from gitlab.com/nandithebull/jolt-native, one crate each,
1820 ;; out of one target directory:
@@ -24,7 +26,7 @@
2426 ;; lives in src/frq/av.jolt; the media half is three thousand lines of codec
2527 ;; and transport that would only be written badly a second time here.
2628 ;;
27- ;; cd ../jolt-native && just build
29+ ;; just lib
2830 :jolt/native [{:name "vidya"
2931 :darwin ["libvidya.dylib"]
3032 :linux ["libvidya.so"]}
@@ -12,7 +12,9 @@
12 ;; widget.12 ;; widget.
13 :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer"13 :deps {jolt-lang/glimmer {:git/url "https://gitlab.com/nandithebull/glimmer"
14 :git/sha "399df371c790d690fb6e4560c3d4d7f838502857"}14 :git/sha "399df371c790d690fb6e4560c3d4d7f838502857"}
15- nandi/glimmer-vidya {:local/root "../jolt-native/jolt/glimmer-vidya"}}15+ nandi/glimmer-vidya {:git/url "https://gitlab.com/nandithebull/jolt-native"
16+ :git/sha "70072e8e48ad396caeab6f6bd18b999cf449ec8f"
17+ :deps/root "jolt/glimmer-vidya"}}
16 18
17 ;; Both objects come from gitlab.com/nandithebull/jolt-native, one crate each,19 ;; Both objects come from gitlab.com/nandithebull/jolt-native, one crate each,
18 ;; out of one target directory:20 ;; out of one target directory:
@@ -24,7 +26,7 @@
24 ;; lives in src/frq/av.jolt; the media half is three thousand lines of codec26 ;; lives in src/frq/av.jolt; the media half is three thousand lines of codec
25 ;; and transport that would only be written badly a second time here.27 ;; and transport that would only be written badly a second time here.
26 ;;28 ;;
27- ;; cd ../jolt-native && just build29+ ;; just lib
28 :jolt/native [{:name "vidya"30 :jolt/native [{:name "vidya"
29 :darwin ["libvidya.dylib"]31 :darwin ["libvidya.dylib"]
30 :linux ["libvidya.so"]}32 :linux ["libvidya.so"]}
modified justfile +26 -2
@@ -7,16 +7,40 @@ set shell := ["bash", "-euo", "pipefail", "-c"]
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-jolt_native := checkout / "../jolt-native"
10+
11+# jolt-native holds both shared objects. A sibling checkout wins, so anyone
12+# working on the two repos together builds what they are editing; everyone else
13+# gets a clone of the gitlab repo under .jolt-native, pinned to the same commit
14+# deps.edn takes glimmer-vidya from.
15+jolt_native_url := "https://gitlab.com/nandithebull/jolt-native.git"
16+jolt_native_sha := "70072e8e48ad396caeab6f6bd18b999cf449ec8f"
17+jolt_native := `
18+ checkout="$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")"
19+ if [ -d "$checkout/../jolt-native" ]; then
20+ cd "$checkout/../jolt-native" && pwd
21+ else
22+ echo "$checkout/.jolt-native"
23+ fi
24+`
1125
1226 default:
1327 @just --list
1428
1529 # Both native libraries: libvidya (the tree ABI glimmer-vidya binds) and
1630 # libjoltmoq (the AV media plane). One workspace, one target directory.
17-lib:
31+lib: fetch
1832 cd {{jolt_native}} && just build
1933
34+# Clone jolt-native at the pinned commit, unless it is already here — which it
35+# is whenever the sibling checkout exists, since that is what jolt_native then
36+# points at.
37+[private]
38+fetch:
39+ if [ ! -d {{quote(jolt_native)}} ]; then \
40+ git clone {{jolt_native_url}} {{quote(jolt_native)}}; \
41+ cd {{quote(jolt_native)}} && git checkout --detach {{jolt_native_sha}}; \
42+ fi
43+
2044 # The app.
2145 run *args:
2246 LD_LIBRARY_PATH="{{jolt_native}}/target/release" jolt -M:frq {{args}}
@@ -7,16 +7,40 @@ set shell := ["bash", "-euo", "pipefail", "-c"]
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-jolt_native := checkout / "../jolt-native"10+
11+# jolt-native holds both shared objects. A sibling checkout wins, so anyone
12+# working on the two repos together builds what they are editing; everyone else
13+# gets a clone of the gitlab repo under .jolt-native, pinned to the same commit
14+# deps.edn takes glimmer-vidya from.
15+jolt_native_url := "https://gitlab.com/nandithebull/jolt-native.git"
16+jolt_native_sha := "70072e8e48ad396caeab6f6bd18b999cf449ec8f"
17+jolt_native := `
18+ checkout="$(dirname "$(git rev-parse --path-format=absolute --git-common-dir)")"
19+ if [ -d "$checkout/../jolt-native" ]; then
20+ cd "$checkout/../jolt-native" && pwd
21+ else
22+ echo "$checkout/.jolt-native"
23+ fi
24+`
11 25
12 default:26 default:
13 @just --list27 @just --list
14 28
15 # Both native libraries: libvidya (the tree ABI glimmer-vidya binds) and29 # Both native libraries: libvidya (the tree ABI glimmer-vidya binds) and
16 # libjoltmoq (the AV media plane). One workspace, one target directory.30 # libjoltmoq (the AV media plane). One workspace, one target directory.
17-lib:31+lib: fetch
18 cd {{jolt_native}} && just build32 cd {{jolt_native}} && just build
19 33
34+# Clone jolt-native at the pinned commit, unless it is already here — which it
35+# is whenever the sibling checkout exists, since that is what jolt_native then
36+# points at.
37+[private]
38+fetch:
39+ if [ ! -d {{quote(jolt_native)}} ]; then \
40+ git clone {{jolt_native_url}} {{quote(jolt_native)}}; \
41+ cd {{quote(jolt_native)}} && git checkout --detach {{jolt_native_sha}}; \
42+ fi
43+
20 # The app.44 # The app.
21 run *args:45 run *args:
22 LD_LIBRARY_PATH="{{jolt_native}}/target/release" jolt -M:frq {{args}}46 LD_LIBRARY_PATH="{{jolt_native}}/target/release" jolt -M:frq {{args}}