The cwire-only nim-ffi (7362bfd, the re-pointed v0.2.0-rc.1 tag) crashed
with a foreign-thread GC null-avltree fault inside sds_unwrap_received_message:
that line branched off before the foreign-host-concurrency fix and was
missing the cycle-collector rooting (GC_ref(myLib[])), so the SDS manager
ref could be collected mid-use and fault on a later alloc.
a66c53a is nim-ffi release/v0.2 = cwire + the full fix cherry-picked
(a6b22fc event-listener GC setup + c3d135f context-recycling / GC_ref
rooting). Pinned by immutable SHA (lock + deps.nix + sds.nimble) to avoid
the mutable-tag drift that caused this.
Validated: libsds builds, nimble test green (106/0), and the previously
crashing status-go TestAcceptCRRemoveAndRepeat passes 5/5.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The v0.2.0-rc.1 tag was re-pointed from c3d135f to 7362bfd (adds the
internal cwire codec + ABI-format annotations; +1.4k lines). The
generated libsds CBOR `sds_*` ABI is unchanged, so this is a drop-in
nim-ffi bump — no nim-sds/library or sds-go-bindings change needed.
- nimble.lock: ffi vcsRevision -> 7362bfd, checksum -> 544b7be2
(the from-source `setup -l` path).
- nix/deps.nix: ffi rev -> 7362bfd, sha256 -> 0lwyzqcg…
(the offline Nix build path).
Validated: `nimble test` green (106 OK / 0 failed) and
`nix build .#libsds` SuccessX, both against nim-ffi 7362bfd.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Nix build pre-populates deps into pkgs2 and can't clone in the sandbox.
nim-ffi isn't in the nimble registry, so requiring it by URL made nimble
re-clone it during resolution (offline -> fail). Resolve ffi by name from the
installed pkgs2 in the Nix build (gated by SDS_NIX_DEPS), keeping the URL fetch
for plain `nimble` builds; the URL now points at the published v0.2.0-rc.1 tag.
Also drop the `nim` entry from the lock (the sandbox can't fetch Nim by SHA),
record numeric lock versions for ffi (0.2.0) and cbor_serialization (0.3.0) so
they resolve cleanly, and regenerate nix/deps.nix to include cbor_serialization.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Otherwise we end up with cache collisions like this in CI :
```
> Error: cannot open '/tmp/nim/libsds_d/@z..@f..@f..@f..@f..@f..
@ffgber@f6y2zz1uv2lzi4ln2717py8m0aix64u56-avz-hajenccrq-2.2.4@favz
@fyvo@fflfgrz@frkprcgvbaf.nim.c'
```
Changes include:
- Removing all submodules from vendor folder.
- Updating sds.nimble with required depndencies.
- Generating a nimble.lock file using Nimble.
- Updated Nim code to reference depndencies correctly.
- Added nix/deps.nix fixed output derivation that calls Nimble.
- Updated nixpkgs to use 25.11 commit which provides Nimbe 0.20.1.
- Disabled Nix Android builds on MacOS due to Nimble segfault.
Signed-off-by: Jakub Sokołowski <jakub@status.im>
The assert for Android NDK is obsolete. But we also can avoid fetching
the Android dependencies when not building for Android.
Also, lsb-release is a linux-only tool.
Signed-off-by: Jakub Sokołowski <jakub@status.im>
Otherwise it fails with:
error: aarch64-darwin not supported for Android SDK. Use: NIXPKGS_SYSTEM_OVERRIDE=x86_64-darwin
Signed-off-by: Jakub Sokołowski <jakub@status.im>
For some unknown reason the builds would fail with:
/bin/sh: line 1: clang: command not found
Unless we added Android NDK toolchains/llvm/prebuilt to PATH.
Signed-off-by: Jakub Sokołowski <jakub@status.im>