fork of radicle with Git LFS support, backed by IPFS
Go to file
Yorgos Saslis ffc86f8a96
build: ensure zigbuild install doesn't break reproducible build
In trying to rebuild the radicle 1.1.0 version now (2025-02-26), some months after 1.1.0 has been released, I see in my pipelines that the `cargo install cargo-zigbuild@0.19.3` instruction is now failing.

This is because `home@0.5.11` has been released and this *patch* version bump requires a newer version of rust (1.81) (0.5.9 was ok with 1.80). See https://github.com/rust-lang/cargo/issues/14944 for more details.

Adding `--locked` here prevents this issue from happening in the future.

Importantly: newer versions of other crates being picked up by cargo here means the build isn't bit-for-bit reproducible.

The error itself is:

```
[1/2] STEP 14/17: RUN curl -sSf -o zig.tar.xz         https://ziglang.org/download/0.12.0/zig-linux-x86_64-0.12.0.tar.xz &&     curl -sSf -o zig.tar.xz.minisig https://ziglang.org/download/0.12.0/zig-linux-x86_64-0.12.0.tar.xz.minisig &&     minisign -Vm zig.tar.xz -P RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U &&     xz -d -c zig.tar.xz | tar -x &&     mv zig-linux-x86_64-0.12.0/zig /usr/bin/zig &&     mv zig-linux-x86_64-0.12.0/lib /usr/lib/zig &&     cargo install cargo-zigbuild@0.18.3
Signature and comment signature verified
Trusted comment: timestamp:1713604063   file:zig-linux-x86_64-0.12.0.tar.xz     hashed
    Updating crates.io index
 Downloading crates ...
  Downloaded cargo-zigbuild v0.18.3
  Installing cargo-zigbuild v0.18.3
    Updating crates.io index
     Locking 83 packages to latest compatible versions
      Adding cargo-platform v0.1.9 (latest: v0.2.0)
      Adding cargo-zigbuild v0.18.3 (latest: v0.19.8)
      Adding cargo_metadata v0.18.1 (latest: v0.19.1)
      Adding dirs v5.0.1 (latest: v6.0.0)
      Adding dirs-sys v0.4.1 (latest: v0.5.0)
      Adding fs-err v2.11.0 (latest: v3.1.0)
      Adding getrandom v0.2.15 (latest: v0.3.1)
      Adding linux-raw-sys v0.4.15 (latest: v0.9.0)
      Adding redox_users v0.4.6 (latest: v0.5.0)
      Adding target-lexicon v0.12.16 (latest: v0.13.2)
      Adding thiserror v1.0.69 (latest: v2.0.11)
      Adding thiserror-impl v1.0.69 (latest: v2.0.11)
      Adding wasi v0.11.0+wasi-snapshot-preview1 (latest: v0.14.1+wasi-0.2.3)
      Adding which v6.0.3 (latest: v7.0.2)
      Adding windows-sys v0.48.0 (latest: v0.59.0)
      Adding windows-targets v0.48.5 (latest: v0.53.0)
      Adding windows-targets v0.52.6 (latest: v0.53.0)
      Adding windows_aarch64_gnullvm v0.48.5 (latest: v0.53.0)
      Adding windows_aarch64_gnullvm v0.52.6 (latest: v0.53.0)
      Adding windows_aarch64_msvc v0.48.5 (latest: v0.53.0)
      Adding windows_aarch64_msvc v0.52.6 (latest: v0.53.0)
      Adding windows_i686_gnu v0.48.5 (latest: v0.53.0)
      Adding windows_i686_gnu v0.52.6 (latest: v0.53.0)
      Adding windows_i686_gnullvm v0.52.6 (latest: v0.53.0)
      Adding windows_i686_msvc v0.48.5 (latest: v0.53.0)
      Adding windows_i686_msvc v0.52.6 (latest: v0.53.0)
      Adding windows_x86_64_gnu v0.48.5 (latest: v0.53.0)
      Adding windows_x86_64_gnu v0.52.6 (latest: v0.53.0)
      Adding windows_x86_64_gnullvm v0.48.5 (latest: v0.53.0)
      Adding windows_x86_64_gnullvm v0.52.6 (latest: v0.53.0)
      Adding windows_x86_64_msvc v0.48.5 (latest: v0.53.0)
      Adding windows_x86_64_msvc v0.52.6 (latest: v0.53.0)
      Adding winsafe v0.0.19 (latest: v0.0.22)
 Downloading crates ...
  Downloaded anstyle v1.0.10
  Downloaded anstyle-query v1.1.2
  Downloaded cargo-platform v0.1.9
  Downloaded bitflags v2.8.0
  Downloaded cargo_metadata v0.18.1
  Downloaded is_terminal_polyfill v1.70.1
  Downloaded option-ext v0.2.0
  Downloaded scroll_derive v0.12.0
  Downloaded strsim v0.11.1
  Downloaded autocfg v1.4.0
  Downloaded anstream v0.6.18
  Downloaded camino v1.1.9
  Downloaded dirs-sys v0.4.1
  Downloaded heck v0.5.0
  Downloaded itoa v1.0.14
  Downloaded home v0.5.11
  Downloaded thiserror-impl v1.0.69
  Downloaded which v6.0.3
  Downloaded utf8parse v0.2.2
  Downloaded either v1.14.0
  Downloaded colorchoice v1.0.3
  Downloaded clap_lex v0.7.4
  Downloaded errno v0.3.10
  Downloaded dirs v5.0.1
  Downloaded fs-err v2.11.0
  Downloaded shlex v1.3.0
  Downloaded rustc_version v0.4.1
  Downloaded path-slash v0.2.1
  Downloaded thiserror v1.0.69
  Downloaded terminal_size v0.4.1
  Downloaded anstyle-parse v0.2.6
  Downloaded clap_derive v4.5.28
  Downloaded target-lexicon v0.12.16
  Downloaded fat-macho v0.4.9
  Downloaded semver v1.0.25
  Downloaded scroll v0.12.0
  Downloaded log v0.4.26
  Downloaded proc-macro2 v1.0.93
  Downloaded quote v1.0.38
  Downloaded anyhow v1.0.96
  Downloaded clap v4.5.31
  Downloaded ryu v1.0.19
  Downloaded serde_derive v1.0.218
  Downloaded unicode-ident v1.0.17
  Downloaded serde v1.0.218
  Downloaded memchr v2.7.4
  Downloaded serde_json v1.0.139
  Downloaded clap_builder v4.5.31
  Downloaded goblin v0.9.3
  Downloaded syn v2.0.98
  Downloaded rustix v0.38.44
  Downloaded libc v0.2.170
  Downloaded plain v0.2.3
  Downloaded cargo-options v0.7.5
  Downloaded linux-raw-sys v0.4.15
error: failed to compile `cargo-zigbuild v0.18.3`, intermediate artifacts can be found at `/tmp/cargo-installZ4q2vb`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

Caused by:
  rustc 1.80.1 is not supported by the following package:
    home@0.5.11 requires rustc 1.81
  Try re-running `cargo install` with `--locked`
Error: building at STEP "RUN curl -sSf -o zig.tar.xz         https://ziglang.org/download/0.12.0/zig-linux-x86_64-0.12.0.tar.xz &&     curl -sSf -o zig.tar.xz.minisig https://ziglang.org/download/0.12.0/zig-linux-x86_64-0.12.0.tar.xz.minisig &&     minisign -Vm zig.tar.xz -P RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U &&     xz -d -c zig.tar.xz | tar -x &&     mv zig-linux-x86_64-0.12.0/zig /usr/bin/zig &&     mv zig-linux-x86_64-0.12.0/lib /usr/lib/zig &&     cargo install cargo-zigbuild@0.18.3": while running runtime: exit status 101
```

Signed-off-by: Yorgos Saslis <yorgos.work@proton.me>
2025-02-26 09:32:00 +02:00
.cargo fetch: upgrade gix crates 2024-05-17 13:27:18 +02:00
.config nix: switch to use nix flakes 2023-12-13 12:25:12 +01:00
.radicle ci: don't build docs for depedencies 2025-01-14 13:45:34 +01:00
build build: ensure zigbuild install doesn't break reproducible build 2025-02-26 09:32:00 +02:00
debian Remove `radicle-httpd` crate 2024-06-06 11:14:00 +02:00
radicle radicle: fix `parse_ref_*` documentation 2025-01-16 11:08:35 +00:00
radicle-cli cli: add remaining patch actions 2025-01-14 14:00:57 +01:00
radicle-cli-test Relax version requirement for `radicle` dependencies 2024-08-20 16:35:04 +02:00
radicle-cob cob: fix documentation 2024-12-04 12:40:40 +01:00
radicle-crdt crdt: run cargo fmt 2024-08-09 12:41:01 +02:00
radicle-crypto crypto: RefCell instead of Mutex in Agent 2025-01-28 14:05:45 +01:00
radicle-dag Update `radicle` to 0.14 2024-11-29 15:25:09 +01:00
radicle-fetch fetch: allow missing default branch 2024-11-06 16:47:01 +01:00
radicle-node cli: Implement `rad cob migrate` 2024-11-22 21:27:45 +01:00
radicle-remote-helper cli: Implement `rad cob migrate` 2024-11-22 21:27:45 +01:00
radicle-signals Update `radicle-signals` crate to 0.10.0 2024-09-03 12:31:07 +02:00
radicle-ssh Update radicle crates to 0.9.0 2024-03-26 11:56:27 +01:00
radicle-systemd Update `radicle-systemd` Cargo.toml 2024-09-03 12:40:22 +02:00
radicle-term term: Bump version to 0.12.0 2024-12-02 13:03:25 +01:00
radicle-tools crypto: RefCell instead of Mutex in Agent 2025-01-28 14:05:45 +01:00
scripts scripts: Small fix to contributor count 2024-12-05 14:25:28 +01:00
systemd Remove `radicle-httpd` crate 2024-06-06 11:14:00 +02:00
.dockerignore build: Add "upload" build step 2024-04-29 10:47:03 +02:00
.env.seed seed: Update default tracking policy for seed 2023-04-17 21:16:56 +02:00
.envrc nix: simplify devShell and envrc 2023-12-14 10:52:04 +01:00
.gitignore Reproducible cross-compiled builds 2024-04-20 11:11:00 +02:00
.gitsigners Add yorgos to .gitsigners 2023-08-18 16:36:02 +02:00
ARCHITECTURE.md docs: link to protocol guide 2024-04-03 15:32:26 +02:00
CONTRIBUTING.md docs: Typo fixes 2024-04-29 13:28:31 +02:00
Cargo.lock cli: bump version to 0.12.1 2024-12-04 12:47:00 +01:00
Cargo.toml node: Socket Activation with systemd 2024-07-22 10:44:22 +02:00
DCO Add licenses and contributor information 2022-11-16 12:26:12 +01:00
HACKING.md docs: Add a note on running isolated nodes 2024-09-12 17:56:21 +02:00
LICENSE-APACHE Add licenses and contributor information 2022-11-16 12:26:12 +01:00
LICENSE-MIT Add licenses and contributor information 2022-11-16 12:26:12 +01:00
README.md Remove `radicle-httpd` crate 2024-06-06 11:14:00 +02:00
VERSIONING.md build: Add "upload" build step 2024-04-29 10:47:03 +02:00
build.rs build: Update env vars for build process 2024-06-20 10:47:50 +02:00
deny.toml chore: update deny.toml to current deny version 2024-07-22 14:39:47 +03:00
flake.lock nix: Update flake to get to reach Rust 1.80 2024-08-22 11:12:09 +01:00
flake.nix nix: Fix macOS build 2024-09-12 17:50:06 +02:00
git-remote-rad.1.adoc Add rudimentary Debian packaging for binaries 2023-11-01 12:56:35 +01:00
rad-id.1.adoc cli: Have way to delete payload field in `rad id` 2024-05-13 16:12:41 +02:00
rad-patch.1.adoc man: make a note on draft patches 2025-01-14 14:05:21 +01:00
rad.1.adoc docs: note that node logs may also be in the system journal 2025-01-14 13:27:33 +01:00
radicle-node.1.adoc docs: Update manual pages to 1.0.0 2024-04-22 14:37:19 +02:00
rust-toolchain.toml rust: Migrate to `rust-toolchain.toml` 2024-08-22 11:12:10 +01:00

README.md

❤️🪵

Radicle Heartwood Protocol & Stack

Heartwood is the third iteration of the Radicle Protocol, a powerful peer-to-peer code collaboration and publishing stack. The repository contains a full implementation of Heartwood, complete with a user-friendly command-line interface (rad) and network daemon (radicle-node).

Radicle was designed to be a secure, decentralized and powerful alternative to code forges such as GitHub and GitLab that preserves user sovereignty and freedom.

See the Protocol Guide for an in-depth description of how Radicle works.

Installation

Requirements

  • Linux or Unix based operating system.
  • Git 2.34 or later
  • OpenSSH 9.1 or later with ssh-agent

📀 From binaries

Requires curl and tar.

Run the following command to install the latest binary release:

curl -sSf https://radicle.xyz/install | sh

Or visit our download page.

📦 From source

Requires the Rust toolchain.

You can install the Radicle stack from source, by running the following commands from inside this repository:

cargo install --path radicle-cli --force --locked --root ~/.radicle
cargo install --path radicle-node --force --locked --root ~/.radicle
cargo install --path radicle-remote-helper --force --locked --root ~/.radicle

Or directly from our seed node:

cargo install --force --locked --root ~/.radicle \
    --git https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git \
    radicle-cli radicle-node radicle-remote-helper

Running

Systemd unit files are provided for the node under the /systemd folder. They can be used as a starting point for further customization.

For running in debug mode, see HACKING.md.

Contributing

See CONTRIBUTING.md and HACKING.md for an introduction to contributing to Radicle.

License

Radicle is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.