feat(nix/sparseTree): add optional name
argument
This allows pinning the name of the sparse tree derivation, which stops the continous rebuilding of tvix-store-proto dependents. I've opted to let the function take an attribute set instead and refactored the call sites appropriately. Change-Id: I3e57785094b1adbfffa24caf9f1c3384844fa200 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8965 Reviewed-by: grfn <grfn@gws.fyi> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
33fa42a1a3
commit
fcda068235
5 changed files with 68 additions and 42 deletions
|
@ -2,22 +2,33 @@
|
|||
# and directories if they are listed in a supplied list:
|
||||
#
|
||||
# # A very minimal depot
|
||||
# sparseTree ./depot [
|
||||
# sparseTree {
|
||||
# root = ./depot;
|
||||
# paths = [
|
||||
# ./default.nix
|
||||
# ./depot/nix/readTree/default.nix
|
||||
# ./third_party/nixpkgs
|
||||
# ./third_party/overlays
|
||||
# ]
|
||||
# ];
|
||||
# }
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
# root path to use as a reference point
|
||||
root:
|
||||
# list of paths below `root` that should be
|
||||
# included in the resulting directory
|
||||
#
|
||||
# If path, need to refer to the actual file / directory to be included.
|
||||
# If a string, it is treated as a string relative to the root.
|
||||
paths:
|
||||
{
|
||||
# root path to use as a reference point
|
||||
root
|
||||
, # list of paths below `root` that should be
|
||||
# included in the resulting directory
|
||||
#
|
||||
# If path, need to refer to the actual file / directory to be included.
|
||||
# If a string, it is treated as a string relative to the root.
|
||||
paths
|
||||
, # (optional) name to use for the derivation
|
||||
#
|
||||
# This should always be set when using roots that do not have
|
||||
# controlled names, such as when passing the top-level of a git
|
||||
# repository (e.g. `depot.path.origSrc`).
|
||||
name ? builtins.baseNameOf root
|
||||
}:
|
||||
|
||||
let
|
||||
rootLength = builtins.stringLength (toString root);
|
||||
|
@ -63,7 +74,7 @@ in
|
|||
|
||||
# TODO(sterni): teach readTree to also read symlinked directories,
|
||||
# so we ln -sT instead of cp -aT.
|
||||
pkgs.runCommand "sparse-${builtins.baseNameOf root}" { } (
|
||||
pkgs.runCommand "sparse-${name}" { } (
|
||||
lib.concatMapStrings
|
||||
({ src, dst }: ''
|
||||
mkdir -p "$(dirname "$out${dst}")"
|
||||
|
|
|
@ -9,4 +9,8 @@ let
|
|||
protoFileNames = filter (hasSuffix ".proto") (attrNames (readDir ./.));
|
||||
protoFiles = map (f: ./. + ("/" + f)) protoFileNames;
|
||||
in
|
||||
depot.nix.sparseTree depot.path.origSrc protoFiles
|
||||
depot.nix.sparseTree {
|
||||
name = "tvix-store-protos";
|
||||
root = depot.path.origSrc;
|
||||
paths = protoFiles;
|
||||
}
|
||||
|
|
|
@ -10,10 +10,13 @@ depot.third_party.naersk.buildPackage {
|
|||
|
||||
# Workaround for a potential Nix bug related to restricted eval.
|
||||
# See https://github.com/nix-community/naersk/issues/169
|
||||
root = depot.nix.sparseTree ./. [
|
||||
root = depot.nix.sparseTree {
|
||||
root = ./.;
|
||||
paths = [
|
||||
./Cargo.toml
|
||||
./Cargo.lock
|
||||
];
|
||||
};
|
||||
|
||||
passthru = {
|
||||
docker = import ./docker.nix args;
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
{ depot, pkgs, ... }:
|
||||
|
||||
depot.third_party.naersk.buildPackage {
|
||||
src = depot.nix.sparseTree ./. [
|
||||
src = depot.nix.sparseTree {
|
||||
root = ./.;
|
||||
paths = [
|
||||
./Cargo.lock
|
||||
./Cargo.toml
|
||||
./src
|
||||
];
|
||||
};
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
pkg-config
|
||||
|
|
|
@ -10,7 +10,11 @@ let
|
|||
nint
|
||||
;
|
||||
|
||||
minimalDepot = sparseTree depot.path.origSrc [
|
||||
minimalDepot = sparseTree {
|
||||
root = depot.path.origSrc;
|
||||
name = "minimal-depot";
|
||||
|
||||
paths = [
|
||||
# general depot things
|
||||
"default.nix"
|
||||
"nix/readTree"
|
||||
|
@ -27,6 +31,7 @@ let
|
|||
# for blog.nix
|
||||
"users/sterni/nix"
|
||||
];
|
||||
};
|
||||
|
||||
statusCodes = {
|
||||
# 1xx
|
||||
|
|
Loading…
Reference in a new issue