For the complete documentation index, see llms.txt. This page is also available as Markdown.

Cronosd build with Nix

It is also possible to reproducibly build cronosd binaries locally yourself using nix.

Prerequisites

  • Install nix, following the instructions here: https://nixos.org/download.html

  • Install cachix and enable cronos binary cache:

    nix-env -iA cachix -f https://cachix.org/api/v1/install
    cachix use cronos
    

Build Type Matrix

Below are listed the different possible parameters

  • Network Type

    • mainnet (default)

    • testnet

  • Build Type

    • normal nix package (default)

    • re-distributable bundle

    • re-distributable tarball, the tarball of the above bundle.

Creating a reproducible build

The package name is constructed by joining the above properties with a separator -, omitting the default values, for example:

  • cronosd: defaults to the mainnet nix package.

  • cronosd-bundle: mainnet re-distributable bundle.

  • cronosd-tarball: mainnet re-distributable tarball.

  • cronosd-testnet: testnet nix package.

  • cronosd-testnet-tarball: testnet re-distributable tarball.

The nix flake url is: github:crypto-org-chain/cronos/$TAG_NAME#$PACKAGE_NAME, replace the $TAG_NAME and $PACKAGE_NAME to the one you needed, for example: The full command to build a v0.8.1 mainnet re-distributable tarball is:

The result will reside in ./result by default, you can copy the tarball to other machines with the same OS and arch. The re-distributable bundle/tarball has dynamic libraries included, no extra runtime dependencies are needed.

If you get error: experimental Nix feature 'nix-command' is disabled; use '--extra-experimental-features nix-command' to override, e.g. by adding: --extra-experimental-features nix-command --extra-experimental-features flakes

Tarball Content

To keep the tarball redistributable, it has all the runtime dependencies included, the dynamic linker, and the shared libraries. They are located in a relative path, so it's important that the whole package is moved together.

  • bin/cronosd: the entry point, it's a wrapper script that executes the binary using the included dynamic linker.

  • exe/cronosd: the executable.

  • lib/: all the shared libraries.

Last updated

Was this helpful?