add fetchCrate function to fetch rust crates
This commit is contained in:
parent
a13fc5f4cc
commit
ea232fe29d
35
pkgs/build-support/rust/fetchcrate.nix
Normal file
35
pkgs/build-support/rust/fetchcrate.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{ lib, fetchurl, unzip }:
|
||||||
|
|
||||||
|
{ crateName
|
||||||
|
, version
|
||||||
|
, sha256
|
||||||
|
, ... } @ args:
|
||||||
|
|
||||||
|
lib.overrideDerivation (fetchurl ({
|
||||||
|
|
||||||
|
name = "${crateName}-${version}.tar.gz";
|
||||||
|
url = "https://crates.io/api/v1/crates/${crateName}/${version}/download";
|
||||||
|
recursiveHash = true;
|
||||||
|
|
||||||
|
downloadToTemp = true;
|
||||||
|
|
||||||
|
postFetch =
|
||||||
|
''
|
||||||
|
export PATH=${unzip}/bin:$PATH
|
||||||
|
|
||||||
|
unpackDir="$TMPDIR/unpack"
|
||||||
|
mkdir "$unpackDir"
|
||||||
|
cd "$unpackDir"
|
||||||
|
|
||||||
|
renamed="$TMPDIR/${crateName}-${version}.tar.gz"
|
||||||
|
mv "$downloadedFile" "$renamed"
|
||||||
|
unpackFile "$renamed"
|
||||||
|
fn=$(cd "$unpackDir" && echo *)
|
||||||
|
if [ -f "$unpackDir/$fn" ]; then
|
||||||
|
mkdir $out
|
||||||
|
fi
|
||||||
|
mv "$unpackDir/$fn" "$out"
|
||||||
|
'';
|
||||||
|
} // removeAttrs args [ "crateName" "version" ]))
|
||||||
|
# Hackety-hack: we actually need unzip hooks, too
|
||||||
|
(x: {nativeBuildInputs = x.nativeBuildInputs++ [unzip];})
|
|
@ -202,6 +202,8 @@ with pkgs;
|
||||||
|
|
||||||
fetchzip = callPackage ../build-support/fetchzip { };
|
fetchzip = callPackage ../build-support/fetchzip { };
|
||||||
|
|
||||||
|
fetchCrate = callPackage ../build-support/rust/fetchcrate.nix { };
|
||||||
|
|
||||||
fetchFromGitHub = {
|
fetchFromGitHub = {
|
||||||
owner, repo, rev, name ? "source",
|
owner, repo, rev, name ? "source",
|
||||||
fetchSubmodules ? false, private ? false,
|
fetchSubmodules ? false, private ? false,
|
||||||
|
|
Loading…
Reference in a new issue