From a9650041bb73366d9be73bcbe34faf8694f9aa2c Mon Sep 17 00:00:00 2001 From: Kane York Date: Thu, 20 Aug 2020 18:15:33 -0700 Subject: feat(tools/tvlc): pass list of derivations to depot-scanner You can now provide a list of Nix derivations to tvlc to get a git worktree + sparse-checkout containing only the paths needed to build the specified derivations. Known bugs: even though //third_party is only passed to readdir(), git doesn't know this and includes all of //third_party/*. Change-Id: I9dccebd3fbff4bb04ebd568175cf0a7e37d71ab3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1826 Tested-by: BuildkiteCI Reviewed-by: tazjin --- tools/tvlc/default.nix | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'tools/tvlc/default.nix') diff --git a/tools/tvlc/default.nix b/tools/tvlc/default.nix index de18af236f..ef0c69927f 100644 --- a/tools/tvlc/default.nix +++ b/tools/tvlc/default.nix @@ -1,17 +1,31 @@ { pkgs, depot, ... }: let - commonsh = ./common.sh; - - # TODO(riking): path deduction - #tvix-instantiate="${third_party.nix}/bin/nix-instantiate" pathScripts = pkgs.writeShellScript "imports" '' + export tvix_instantiate="${depot.third_party.nix}/bin/nix-instantiate" + export depot_scanner="${depot.tools.depot-scanner}/bin/depot-scanner" ''; # setup: git rev-parse --show-toplevel > $tvlc_root/depot_root # setup: mkdir $tvlc_root/clients # setup: echo 1 > $tvlc_root/next_clientid + commonsh = pkgs.stdenv.mkDerivation { + name = "common.sh"; + src = ./common.sh; + doCheck = true; + unpackPhase = "true"; + buildPhase = '' + substitute ${./common.sh} $out --replace path-scripts ${pathScripts} + ''; + checkPhase = '' + ${pkgs.shellcheck}/bin/shellcheck $out ${pathScripts} && echo "SHELLCHECK OK" + ''; + installPhase = '' + chmod +x $out + ''; + }; + tvlcNew = pkgs.stdenv.mkDerivation { name = "tvlc-new"; src = ./tvlc-new; @@ -22,7 +36,7 @@ let substitute ${./tvlc-new} $out --replace common.sh ${commonsh} ''; checkPhase = '' - ${pkgs.shellcheck}/bin/shellcheck $out ${commonsh} && echo "SHELLCHECK OK" + ${pkgs.shellcheck}/bin/shellcheck $out ${commonsh} ${pathScripts} && echo "SHELLCHECK OK" ''; installPhase = '' chmod +x $out @@ -30,6 +44,7 @@ let }; in pkgs.stdenv.mkDerivation rec { + inherit pathScripts; inherit commonsh; inherit tvlcNew; } -- cgit 1.4.1