about summary refs log tree commit diff
path: root/tools/nixery/server/builder/builder.go
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-10-03T11·49+0100
committerVincent Ambo <github@tazj.in>2019-10-03T12·21+0100
commit43a642435b653d04d730de50735d310f1f1083eb (patch)
treef401510a150ed177add1adfb3bc737e1d9a1562b /tools/nixery/server/builder/builder.go
parent313e5d08f12f4c8573e9347f7f04493ab99b5abf (diff)
feat(server): Reimplement local manifest cache backed by files
Implements a local manifest cache that uses the temporary directory to
cache manifest builds.

This is necessary due to the size of manifests: Keeping them entirely
in-memory would quickly balloon the memory usage of Nixery, unless
some mechanism for cache eviction is implemented.
Diffstat (limited to 'tools/nixery/server/builder/builder.go')
-rw-r--r--tools/nixery/server/builder/builder.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/tools/nixery/server/builder/builder.go b/tools/nixery/server/builder/builder.go
index 9f529b226918..e622f815a423 100644
--- a/tools/nixery/server/builder/builder.go
+++ b/tools/nixery/server/builder/builder.go
@@ -34,6 +34,8 @@ import (
 	"sort"
 	"strings"
 
+	"cloud.google.com/go/storage"
+	"github.com/google/nixery/config"
 	"github.com/google/nixery/layers"
 	"github.com/google/nixery/manifest"
 	"golang.org/x/oauth2/google"
@@ -50,6 +52,15 @@ const gcsScope = "https://www.googleapis.com/auth/devstorage.read_write"
 // HTTP client to use for direct calls to APIs that are not part of the SDK
 var client = &http.Client{}
 
+// State holds the runtime state that is carried around in Nixery and
+// passed to builder functions.
+type State struct {
+	Bucket *storage.BucketHandle
+	Cache  *LocalCache
+	Cfg    config.Config
+	Pop    layers.Popularity
+}
+
 // Image represents the information necessary for building a container image.
 // This can be either a list of package names (corresponding to keys in the
 // nixpkgs set) or a Nix expression that results in a *list* of derivations.