Skip to content

Mwc dnix - #14

Merged
julian-CStack merged 9 commits into
cypherstack:mainfrom
slopbot9k:mwc-dnix
Oct 30, 2026
Merged

julian-CStack merged 9 commits into
cypherstack:mainfrom
slopbot9k:mwc-dnix

Conversation

@julian-CStack

Copy link
Copy Markdown
Collaborator

No description provided.

slopbot9k added 9 commits October 21, 2026 23:55
…Nix otherwise

The build hook is dnix's. By default it downloads the library of the
release dnix.lock names and verifies its hash; in source mode it builds
the same library with Nix and verifies the same hash; in dev mode it
builds with Nix for work on the Rust code. dnix.json names the library,
the asset, the Rust workspace and crate, the Rust and Xcode versions, the
deployment floors, and the ten targets the prebuilts covered; dnix.lock
records what the source builds to and names release native-fa0d223adae4.
The flake hands dnix the configuration. The build's extras are declared
there too: protoc for prost-build in the libp2p crates, the lmdb mutex
flags on macOS, and a static libc++ on Android. OpenSSL is vendored only
where native-tls links it, Linux and Android; Apple and Windows use their
own TLS. The prebuilt producer, manifest, smoke tests and their tests go;
two-line tools update the lock and verify one platform against the
release.
…lock

dnix's reusable workflow builds the library on Linux x86_64, Linux
aarch64, macOS with Xcode 27.0, and Linux inside WSL2 on Windows,
rebuilds each sandboxed target, compares every host with every other and
with the committed lock, and on main publishes the release the lock
names if it does not exist yet. Runs on main are never cancelled, since
one may be publishing. The test workflow runs the Flutter tests on every
OS, against the prebuilt library once its release exists and from source
before that. The tag-driven prebuilt workflow and the prebuilt tooling
checks went with the pipeline they served.
How the hook obtains the library and the three modes, how a change to
the Rust code becomes a lock entry and a release, and how anyone
rebuilds a platform and compares.
dnix 7b9ef2d adds the Windows GNU and arm64 targets and stops zig adding
its debug-mode sanitizer to C compiled without an optimisation level.
Neither changes what this package builds to: every library hashes as
before, so dnix.lock and the release it names stay as they are.
The arm64 Linux test job could never start: subosito/flutter-action finds
no arm64 Flutter release for Linux and exits, and this package ships no
Linux arm64 library in any case. Actions are pinned by commit, as they
were on main. The test and args dev dependencies served the prebuilt
tools that are gone, and .gitattributes now gives the reason its LF rules
still matter. The README gives the arm64 simulator's minimum, iOS 14, and
the CHANGELOG records the move to dnix.
The CHANGELOG implied nothing was lost on Linux arm64 because no prebuilt
library existed before. The old hook could build it from source; dnix's
hook refuses any target dnix.json does not list, in every build mode.
slopbot9k/dnix 57efe93, the stable-sort branch, not yet on cypherstack:
build-time dependencies are resolved alike on every build host, rustc
sorts the same everywhere, bindgen gets fixed headers, and a target
keeps only its dynamic library. Every library changes with the first
of these; the new lock matches what Linux x64, Linux arm64, and macOS
each build.
The target was left out because main shipped no prebuilt for it, not
because anything stops the build: the library compiles like the others,
and the lock now records it. The ten entries already in the lock are
unchanged; only the release name moves with the lock.
@julian-CStack
julian-CStack merged commit 8ce99d6 into cypherstack:main Oct 30, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants