▾ modified README.md +10 -0 Viewed
@@ -51,12 +51,22 @@ of them. 51 51 52 52 ```bash 53 53 just build # optimized binary → ./freeqsay 54 + just static # fully static binary → ./freeqsay-static 54 55 just test # test suite 55 56 just run <handle> <message> # run from source, no build 56 57 just shot <handle> <message> # gapless termshot png 57 58 just --list # everything else 58 59 ``` 59 60 61 + `just static` produces a binary with no dynamic dependencies at all — musl 62 + libc and OpenSSL linked in, nothing dlopen'd — so it runs on any Linux. It 63 + builds through [nimstatic](https://rickub.com/nandi/nimstatic), pinned in 64 + `tools/nimstatic` as a [DotSlash](https://dotslash-cli.com) file: the first run 65 + fetches that exact build, checks its hash and caches it, and the URL names a 66 + commit so it cannot move. A static binary carries no CA store, so set 67 + `SSL_CERT_FILE` when resolving handles on a host without one at the default 68 + path. 69 + 60 70 `nimble build` and `nimble test` work too. `-d:ssl` is set in `config.nims`, 61 71 since handle resolution goes over HTTPS through the stdlib client. 62 72
@@ -51,12 +51,22 @@ of them. 51 51 52 ```bash 52 ```bash 53 just build # optimized binary → ./freeqsay 53 just build # optimized binary → ./freeqsay 54 + just static # fully static binary → ./freeqsay-static 54 just test # test suite 55 just test # test suite 55 just run <handle> <message> # run from source, no build 56 just run <handle> <message> # run from source, no build 56 just shot <handle> <message> # gapless termshot png 57 just shot <handle> <message> # gapless termshot png 57 just --list # everything else 58 just --list # everything else 58 ``` 59 ``` 59 60 61 + `just static` produces a binary with no dynamic dependencies at all — musl 62 + libc and OpenSSL linked in, nothing dlopen'd — so it runs on any Linux. It 63 + builds through [nimstatic](https://rickub.com/nandi/nimstatic), pinned in 64 + `tools/nimstatic` as a [DotSlash](https://dotslash-cli.com) file: the first run 65 + fetches that exact build, checks its hash and caches it, and the URL names a 66 + commit so it cannot move. A static binary carries no CA store, so set 67 + `SSL_CERT_FILE` when resolving handles on a host without one at the default 68 + path. 69 + 60 `nimble build` and `nimble test` work too. `-d:ssl` is set in `config.nims`, 70 `nimble build` and `nimble test` work too. `-d:ssl` is set in `config.nims`, 61 since handle resolution goes over HTTPS through the stdlib client. 71 since handle resolution goes over HTTPS through the stdlib client. 62 72
▾ modified justfile +6 -0 Viewed
@@ -8,6 +8,12 @@ default: 8 8 build : 9 9 nim c -d:release -d:ssl --hints:off -o:freeqsay src/freeqsay.nim 10 10 11 + # Fully static binary → ./freeqsay-static. No glibc, no dlopen'd OpenSSL, so it 12 + # runs on any Linux. tools/nimstatic is a DotSlash file: the first run fetches 13 + # the pinned nimstatic build, verifies its hash and caches it. 14 + static : 15 + ./tools/nimstatic src/freeqsay.nim -o freeqsay-static -- -d:ssl 16 + 11 17 # Run the test suite. 12 18 test : 13 19 nim c -d:ssl --hints:off -r tests/test_avatar.nim
@@ -8,6 +8,12 @@ default: 8 build : 8 build : 9 nim c -d:release -d:ssl --hints:off -o:freeqsay src/freeqsay.nim 9 nim c -d:release -d:ssl --hints:off -o:freeqsay src/freeqsay.nim 10 10 11 + # Fully static binary → ./freeqsay-static. No glibc, no dlopen'd OpenSSL, so it 12 + # runs on any Linux. tools/nimstatic is a DotSlash file: the first run fetches 13 + # the pinned nimstatic build, verifies its hash and caches it. 14 + static : 15 + ./tools/nimstatic src/freeqsay.nim -o freeqsay-static -- -d:ssl 16 + 11 # Run the test suite. 17 # Run the test suite. 12 test : 18 test : 13 nim c -d:ssl --hints:off -r tests/test_avatar.nim 19 nim c -d:ssl --hints:off -r tests/test_avatar.nim