docs: mention fetchCargoVendor

This commit is contained in:
TomaSajt 2024-11-12 18:22:59 +01:00
parent 37ce479c7b
commit 66855adbbf
No known key found for this signature in database
GPG Key ID: F011163C050122A1
2 changed files with 25 additions and 5 deletions

View File

@ -64,10 +64,18 @@ hash using `nix-hash --to-sri --type sha256 "<original sha256>"`.
``` ```
Exception: If the application has cargo `git` dependencies, the `cargoHash` Exception: If the application has cargo `git` dependencies, the `cargoHash`
approach will not work, and you will need to copy the `Cargo.lock` file of the application approach will not work by default. In this case, you can set `useFetchCargoVendor = true`
to nixpkgs and continue with the next section for specifying the options of the `cargoLock` to use an improved fetcher that supports handling `git` dependencies.
section.
```nix
{
useFetchCargoVendor = true;
cargoHash = "sha256-RqPVFovDaD2rW31HyETJfQ0qVwFxoGEvqkIgag3H6KU=";
}
```
If this method still does not work, you can resort to copying the `Cargo.lock` file into nixpkgs
and importing it as described in the [next section](#importing-a-cargo.lock-file).
Both types of hashes are permitted when contributing to nixpkgs. The Both types of hashes are permitted when contributing to nixpkgs. The
Cargo hash is obtained by inserting a fake checksum into the Cargo hash is obtained by inserting a fake checksum into the
@ -462,6 +470,17 @@ also be used:
the `Cargo.lock`/`Cargo.toml` files need to be patched before the `Cargo.lock`/`Cargo.toml` files need to be patched before
vendoring. vendoring.
In case the lockfile contains cargo `git` dependencies, you can use
`fetchCargoVendor` instead.
```nix
{
cargoDeps = rustPlatform.fetchCargoVendor {
inherit src;
hash = "sha256-RqPVFovDaD2rW31HyETJfQ0qVwFxoGEvqkIgag3H6KU=";
};
}
```
If a `Cargo.lock` file is available, you can alternatively use the If a `Cargo.lock` file is available, you can alternatively use the
`importCargoLock` function. In contrast to `fetchCargoTarball`, this `importCargoLock` function. In contrast to `fetchCargoTarball`, this
function does not require a hash (unless git dependencies are used) function does not require a hash (unless git dependencies are used)

View File

@ -120,8 +120,9 @@ stdenv.mkDerivation (
echo echo
echo "ERROR: The Cargo.lock contains git dependencies" echo "ERROR: The Cargo.lock contains git dependencies"
echo echo
echo "This is currently not supported in the fixed-output derivation fetcher." echo "This is not supported in the default fixed-output derivation fetcher."
echo "Use cargoLock.lockFile / importCargoLock instead." echo "Set \`useFetchCargoVendor = true\` / use fetchCargoVendor"
echo "or use cargoLock.lockFile / importCargoLock instead."
echo echo
exit 1 exit 1