Add filtered src tree to non-nix redo targets
parent
2e6ec04d74
commit
bc0989e0b7
|
@ -1,4 +1,4 @@
|
|||
buildArgs@{ lib ? import ./lib.nix {}, nixpkgs ? <nixpkgs>, pkgs ? import nixpkgs {} }:
|
||||
buildArgs@{ lib ? import ./lib.nix {}, nixpkgs ? <nixpkgs>, pkgs ? import nixpkgs {}, root, filter ? [] }:
|
||||
let
|
||||
inherit (lib) searchPath whichdo d1 d2;
|
||||
|
||||
|
@ -22,6 +22,9 @@ let
|
|||
in if imported.success
|
||||
then imported.value
|
||||
else {
|
||||
src = filterSource
|
||||
(path: type: type != "directory" || (baseNameOf path != ".git" && (all (x: trace x path != x) filter)))
|
||||
(/. + root);
|
||||
builder = ''
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
|
12
nixredo
12
nixredo
|
@ -1,14 +1,24 @@
|
|||
#!/bin/sh
|
||||
exec >&2
|
||||
[ "${S+x}" = x ] || { printf "Set S to the root location of your source tree\n"; exit 127; }
|
||||
[ "${NIXREDO_ROOT-x}" != x ] || { printf "Set NIXREDO_ROOT. Set empty to use global nix store\n"; exit 127; }
|
||||
if [ $# -eq 0 ]; then set -- all; fi
|
||||
|
||||
S=$(realpath -s "$S")
|
||||
|
||||
if [ "${NIXREDO_ROOT#$S}" != "${NIXREDO_ROOT}" ]; then
|
||||
filter=$(realpath -s "${NIXREDO_ROOT}")
|
||||
else
|
||||
filter=
|
||||
fi
|
||||
|
||||
set -e
|
||||
set -- "$1" "$1" "$1.redo.tmp"
|
||||
f=$(realpath -s "$1")
|
||||
out=$(nix -vL --show-trace build ${NIXREDO_ROOT:+--store "$NIXREDO_ROOT"} \
|
||||
--option auto-optimise-store true --option substituters daemon \
|
||||
--impure --json --no-link \
|
||||
--expr " import @buildernix@ { lib = import @libnix@ {}; } \"$f\"" |
|
||||
--expr " import @buildernix@ { lib = import @libnix@ {}; root =\"$S\"; filter = [ \"$filter\" ]; } \"$f\"" |
|
||||
@jq@ -r '.[0].outputs.out')
|
||||
[ -n "$out" ] || exit 127
|
||||
rm -rf "$3"
|
||||
|
|
Loading…
Reference in New Issue