fetchFromRadicle: init (#434360)
This commit is contained in:
@@ -896,6 +896,24 @@ If `fetchSubmodules` is `true`, `fetchFromSourcehut` uses `fetchgit`
|
||||
or `fetchhg` with `fetchSubmodules` or `fetchSubrepos` set to `true`,
|
||||
respectively. Otherwise, the fetcher uses `fetchzip`.
|
||||
|
||||
## `fetchFromRadicle` {#fetchfromradicle}
|
||||
|
||||
This is used with Radicle repositories. The arguments expected are similar to `fetchgit`.
|
||||
|
||||
Requires a `seed` argument (e.g. `seed.radicle.xyz` or `rosa.radicle.xyz`) and a `repo` argument
|
||||
(the repository id *without* the `rad:` prefix). Also accepts an optional `node` argument which
|
||||
contains the id of the node from which to fetch the specified ref. If `node` is `null` (the
|
||||
default), a canonical ref is fetched instead.
|
||||
|
||||
```nix
|
||||
fetchFromRadicle {
|
||||
seed = "seed.radicle.xyz";
|
||||
repo = "z3gqcJUoA1n9HaHKufZs5FCSGazv5"; # heartwood
|
||||
tag = "releases/1.3.0";
|
||||
hash = "sha256-4o88BWKGGOjCIQy7anvzbA/kPOO+ZsLMzXJhE61odjw=";
|
||||
}
|
||||
```
|
||||
|
||||
## `requireFile` {#requirefile}
|
||||
|
||||
`requireFile` allows requesting files that cannot be fetched automatically, but whose content is known.
|
||||
|
||||
@@ -1666,6 +1666,9 @@
|
||||
"fetchfromsourcehut": [
|
||||
"index.html#fetchfromsourcehut"
|
||||
],
|
||||
"fetchfromradicle": [
|
||||
"index.html#fetchfromradicle"
|
||||
],
|
||||
"requirefile": [
|
||||
"index.html#requirefile"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{ lib, fetchgit }:
|
||||
|
||||
lib.makeOverridable (
|
||||
{
|
||||
seed,
|
||||
repo,
|
||||
node ? null,
|
||||
rev ? null,
|
||||
tag ? null,
|
||||
...
|
||||
}@args:
|
||||
|
||||
assert lib.assertMsg (lib.xor (tag != null) (
|
||||
rev != null
|
||||
)) "fetchFromRadicle requires one of either `rev` or `tag` to be provided (not both).";
|
||||
|
||||
let
|
||||
namespacePrefix = lib.optionalString (node != null) "refs/namespaces/${node}/";
|
||||
rev' = if tag != null then "refs/tags/${tag}" else rev;
|
||||
in
|
||||
|
||||
fetchgit (
|
||||
{
|
||||
url = "https://${seed}/${repo}.git";
|
||||
rev = "${namespacePrefix}${rev'}";
|
||||
}
|
||||
// removeAttrs args [
|
||||
"seed"
|
||||
"repo"
|
||||
"node"
|
||||
"rev"
|
||||
"tag"
|
||||
]
|
||||
)
|
||||
// {
|
||||
inherit
|
||||
seed
|
||||
repo
|
||||
node
|
||||
rev
|
||||
tag
|
||||
;
|
||||
}
|
||||
)
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
radicle-httpd,
|
||||
fetchFromGitHub,
|
||||
fetchgit,
|
||||
lib,
|
||||
buildNpmPackage,
|
||||
writeText,
|
||||
@@ -75,9 +74,9 @@ lib.fix (
|
||||
# same repo. For this reason we pin the sources to each other, but due to
|
||||
# radicle-httpd using a more limited sparse checkout we need to carry a
|
||||
# separate hash.
|
||||
src = fetchgit {
|
||||
inherit (radicle-httpd.src) url rev;
|
||||
hash = "sha256-HRSrLdiDETTWNF+Rzvlg1XQerXcCE2xaY+6Xbq5pItI=";
|
||||
src = radicle-httpd.src.override {
|
||||
hash = "sha256-1OhZ0x21NlZIiTPCRpvdUsx5UmeLecTjVzH8DWllPr8=";
|
||||
sparseCheckout = [ ];
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
asciidoctor,
|
||||
fetchgit,
|
||||
fetchFromRadicle,
|
||||
git,
|
||||
installShellFiles,
|
||||
lib,
|
||||
@@ -16,11 +16,13 @@ rustPlatform.buildRustPackage rec {
|
||||
env.RADICLE_VERSION = version;
|
||||
|
||||
# You must update the radicle-explorer source hash when changing this.
|
||||
src = fetchgit {
|
||||
url = "https://seed.radicle.xyz/z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git";
|
||||
rev = "refs/namespaces/z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/refs/tags/v${version}";
|
||||
hash = "sha256-9rJH4ECqOJ9wnYxCbEFHXo3PlhbPdeOnF+Pf1MzX25c=";
|
||||
src = fetchFromRadicle {
|
||||
seed = "seed.radicle.xyz";
|
||||
repo = "z4V1sjrXqjvFdnCUbxPFqd5p4DtH5";
|
||||
node = "z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM";
|
||||
tag = "v${version}";
|
||||
sparseCheckout = [ "radicle-httpd" ];
|
||||
hash = "sha256-9rJH4ECqOJ9wnYxCbEFHXo3PlhbPdeOnF+Pf1MzX25c=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/radicle-httpd";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
asciidoctor,
|
||||
fetchgit,
|
||||
fetchFromRadicle,
|
||||
git,
|
||||
installShellFiles,
|
||||
jq,
|
||||
@@ -22,9 +22,11 @@ rustPlatform.buildRustPackage rec {
|
||||
version = "1.3.0";
|
||||
env.RADICLE_VERSION = version;
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git";
|
||||
rev = "refs/namespaces/z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/refs/tags/v${version}";
|
||||
src = fetchFromRadicle {
|
||||
seed = "seed.radicle.xyz";
|
||||
repo = "z3gqcJUoA1n9HaHKufZs5FCSGazv5";
|
||||
node = "z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-0gK+fM/YGGpxlcR1HQixbLK0/sv+HH29h6ajEP2w2pI=";
|
||||
leaveDotGit = true;
|
||||
postFetch = ''
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchgit,
|
||||
fetchFromRadicle,
|
||||
stdenv,
|
||||
libiconv,
|
||||
zlib,
|
||||
@@ -13,9 +13,11 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "radicle-tui";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://seed.radicle.xyz/z39mP9rQAaGmERfUMPULfPUi473tY.git";
|
||||
rev = "refs/namespaces/z6MkswQE8gwZw924amKatxnNCXA55BMupMmRg7LvJuim2C1V/refs/tags/${finalAttrs.version}";
|
||||
src = fetchFromRadicle {
|
||||
seed = "seed.radicle.xyz";
|
||||
repo = "z39mP9rQAaGmERfUMPULfPUi473tY";
|
||||
node = "z6MkswQE8gwZw924amKatxnNCXA55BMupMmRg7LvJuim2C1V";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-rz9l9GtycqZoROUI6Hn0Fv5Br0YCIrcHlEWLMP4hasQ=";
|
||||
leaveDotGit = true;
|
||||
postFetch = ''
|
||||
|
||||
@@ -6,13 +6,10 @@ set -euo pipefail
|
||||
dirname="$(dirname "${BASH_SOURCE[0]}")"
|
||||
|
||||
url=$(nix-instantiate --eval --raw -A radicle-tui.src.url)
|
||||
old_ref=$(nix-instantiate --eval --raw -A radicle-tui.src.rev)
|
||||
new_ref=$(git ls-remote "$url" 'refs/namespaces/*/refs/tags/*' | cut -f2 | tail -1)
|
||||
old_node=$(nix-instantiate --eval --raw -A radicle-tui.src.node)
|
||||
|
||||
[[ "$old_ref" =~ ^refs/namespaces/([^/]+)/refs/tags/([^/]+)$ ]]
|
||||
old_node="${BASH_REMATCH[1]}"
|
||||
|
||||
[[ "$new_ref" =~ ^refs/namespaces/([^/]+)/refs/tags/([^/]+)$ ]]
|
||||
ref=$(git ls-remote "$url" 'refs/namespaces/*/refs/tags/*' | cut -f2 | tail -1)
|
||||
[[ "$ref" =~ ^refs/namespaces/([^/]+)/refs/tags/([^/]+)$ ]]
|
||||
new_node="${BASH_REMATCH[1]}"
|
||||
version="${BASH_REMATCH[2]}"
|
||||
|
||||
|
||||
@@ -697,6 +697,8 @@ with pkgs;
|
||||
|
||||
fetchFromRepoOrCz = callPackage ../build-support/fetchrepoorcz { };
|
||||
|
||||
fetchFromRadicle = callPackage ../build-support/fetchradicle { };
|
||||
|
||||
fetchgx = callPackage ../build-support/fetchgx { };
|
||||
|
||||
fetchPypi = callPackage ../build-support/fetchpypi { };
|
||||
|
||||
Reference in New Issue
Block a user