diff options
author | Eric Seidel <gridaphobe@gmail.com> | 2015-03-31 19:58:19 -0700 |
---|---|---|
committer | Eric Seidel <gridaphobe@gmail.com> | 2015-03-31 20:00:00 -0700 |
commit | bb363dd2f20ce6a5bd39498a3ec379dd031117d9 (patch) | |
tree | 4aca2de41e08508bcc00f042926b8c5cc94ccf87 | |
parent | 80c6c5e9eca6ed6c570497317c27bbef2354b236 (diff) | |
download | nixlib-bb363dd2f20ce6a5bd39498a3ec379dd031117d9.tar nixlib-bb363dd2f20ce6a5bd39498a3ec379dd031117d9.tar.gz nixlib-bb363dd2f20ce6a5bd39498a3ec379dd031117d9.tar.bz2 nixlib-bb363dd2f20ce6a5bd39498a3ec379dd031117d9.tar.lz nixlib-bb363dd2f20ce6a5bd39498a3ec379dd031117d9.tar.xz nixlib-bb363dd2f20ce6a5bd39498a3ec379dd031117d9.tar.zst nixlib-bb363dd2f20ce6a5bd39498a3ec379dd031117d9.zip |
fetchgitlocal: use output of `git show` and `git diff` to tell nix whether the source has changed.
this is way more hacky than i was hoping...
-rw-r--r-- | pkgs/build-support/fetchgitlocal/default.nix | 17 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
2 files changed, 16 insertions, 3 deletions
diff --git a/pkgs/build-support/fetchgitlocal/default.nix b/pkgs/build-support/fetchgitlocal/default.nix index 04e6aafc8a1b..43fc4b1179d7 100644 --- a/pkgs/build-support/fetchgitlocal/default.nix +++ b/pkgs/build-support/fetchgitlocal/default.nix @@ -1,6 +1,19 @@ -{ runCommand, git }: src: +{ runCommand, git, nix }: src: -runCommand "local-git-export" {} '' +let hash = import (runCommand "head-hash.nix" + { dummy = builtins.currentTime; + preferLocalBuild = true; } +'' + cd ${toString src} + (${git}/bin/git show && ${git}/bin/git diff) > $out + hash=$(${nix}/bin/nix-hash $out) + echo "\"$hash\"" > $out +''); in + +runCommand "local-git-export" + { dummy = hash; + preferLocalBuild = true; } +'' cd ${toString src} mkdir -p "$out" for file in $(${git}/bin/git ls-files); do diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ab11bf12bb04..735faf76ddb8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -330,7 +330,7 @@ let fetchgitrevision = import ../build-support/fetchgitrevision runCommand git; fetchgitLocal = import ../build-support/fetchgitlocal { - inherit runCommand git; + inherit runCommand git nix; }; fetchmtn = callPackage ../build-support/fetchmtn (config.fetchmtn or {}); |