diff options
author | Pierre-Étienne Meunier <pierre-etienne.meunier@inria.fr> | 2017-12-12 04:54:01 -0600 |
---|---|---|
committer | Jörg Thalheim <joerg@thalheim.io> | 2017-12-12 04:58:45 -0600 |
commit | ea232fe29d055f9680a8501ef8d209e70e40f689 (patch) | |
tree | e2ac04d4bd2a06eec6692f50b4662976ce7aa6b6 | |
parent | a13fc5f4cc6b984099846a6aed571007e50d77e0 (diff) | |
download | nixlib-ea232fe29d055f9680a8501ef8d209e70e40f689.tar nixlib-ea232fe29d055f9680a8501ef8d209e70e40f689.tar.gz nixlib-ea232fe29d055f9680a8501ef8d209e70e40f689.tar.bz2 nixlib-ea232fe29d055f9680a8501ef8d209e70e40f689.tar.lz nixlib-ea232fe29d055f9680a8501ef8d209e70e40f689.tar.xz nixlib-ea232fe29d055f9680a8501ef8d209e70e40f689.tar.zst nixlib-ea232fe29d055f9680a8501ef8d209e70e40f689.zip |
add fetchCrate function to fetch rust crates
-rw-r--r-- | pkgs/build-support/rust/fetchcrate.nix | 35 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
2 files changed, 37 insertions, 0 deletions
diff --git a/pkgs/build-support/rust/fetchcrate.nix b/pkgs/build-support/rust/fetchcrate.nix new file mode 100644 index 000000000000..95dfd38b12ae --- /dev/null +++ b/pkgs/build-support/rust/fetchcrate.nix @@ -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];}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cc9343aa0c24..e54e30e30178 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -202,6 +202,8 @@ with pkgs; fetchzip = callPackage ../build-support/fetchzip { }; + fetchCrate = callPackage ../build-support/rust/fetchcrate.nix { }; + fetchFromGitHub = { owner, repo, rev, name ? "source", fetchSubmodules ? false, private ? false, |