mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-31 17:23:34 +00:00
rustPlatform.importCargoLock: add an assert for old Cargo.locks
near the end of 2019, the default Cargo.lock format was changed to [[package]] checksum = ... This is what importCargoLock assumes. If the crate had not been `cargo update`'d with a more recent toolchain than the one with the new format as default, importCargoLock would fail when trying to access pkg.checksum. I ran into such a case (shamefully, in my own crate) and it took me a while to figure out what was going on, so here is an assert with a more user friendly message and a hint.
This commit is contained in:
parent
ab9a0ee864
commit
23dd37dd5e
@ -63,7 +63,15 @@ let
|
|||||||
|
|
||||||
# We can't use the existing fetchCrate function, since it uses a
|
# We can't use the existing fetchCrate function, since it uses a
|
||||||
# recursive hash of the unpacked crate.
|
# recursive hash of the unpacked crate.
|
||||||
fetchCrate = pkg: fetchurl {
|
fetchCrate = pkg:
|
||||||
|
assert lib.assertMsg (pkg ? checksum) ''
|
||||||
|
Package ${pkg.name} does not have a checksum.
|
||||||
|
Please note that the Cargo.lock format where checksums used to be listed
|
||||||
|
under [metadata] is not supported.
|
||||||
|
If that is the case, running `cargo update` with a recent toolchain will
|
||||||
|
automatically update the format along with the crate's depenendencies.
|
||||||
|
'';
|
||||||
|
fetchurl {
|
||||||
name = "crate-${pkg.name}-${pkg.version}.tar.gz";
|
name = "crate-${pkg.name}-${pkg.version}.tar.gz";
|
||||||
url = "https://crates.io/api/v1/crates/${pkg.name}/${pkg.version}/download";
|
url = "https://crates.io/api/v1/crates/${pkg.name}/${pkg.version}/download";
|
||||||
sha256 = pkg.checksum;
|
sha256 = pkg.checksum;
|
||||||
|
Loading…
Reference in New Issue
Block a user