From 07c8ff1b0cec8440e8ccdc8518f74252ca6d1346 Mon Sep 17 00:00:00 2001 From: equanox Date: Thu, 29 Dec 2022 12:58:38 +0100 Subject: [PATCH 1/3] move nix builder to own package --- bob/bob.go | 13 ++++++++--- bob/{bob_stores.go => bob_defaults.go} | 31 ++++++++++++++++++++++++++ bob/build.go | 2 -- bob/builder.go | 7 +++--- bob/{ => nix-builder}/nix_builder.go | 26 ++++++++++----------- bob/nix_builder_defaults.go | 30 ------------------------- bob/options.go | 3 ++- bob/playbook/build_internal.go | 2 +- bob/playbook/options.go | 13 ----------- bob/playbook/playbook.go | 9 ++++---- bob/run.go | 3 ++- bobtask/run.go | 14 +++++------- 12 files changed, 73 insertions(+), 80 deletions(-) rename bob/{bob_stores.go => bob_defaults.go} (70%) rename bob/{ => nix-builder}/nix_builder.go (79%) delete mode 100644 bob/nix_builder_defaults.go diff --git a/bob/bob.go b/bob/bob.go index b2e7e6ed..39187a1b 100644 --- a/bob/bob.go +++ b/bob/bob.go @@ -5,6 +5,7 @@ import ( "os" "runtime" + nixbuilder "github.com/benchkram/bob/bob/nix-builder" "github.com/benchkram/bob/pkg/auth" "github.com/benchkram/bob/pkg/dockermobyutil" "github.com/benchkram/bob/pkg/usererror" @@ -57,7 +58,7 @@ type B struct { enablePull bool // nix builds dependencies for tasks - nix *NixBuilder + nix *nixbuilder.NB // authStore is used to store authentication credentials for remote store authStore *auth.Store @@ -122,6 +123,12 @@ func BobWithBaseStoreDir(baseStoreDir string, opts ...Option) (*B, error) { } bob.authStore = authStore + nixBuilder, err := NixBuilder(baseStoreDir) + if err != nil { + return nil, err + } + bob.nix = nixBuilder + for _, opt := range opts { if opt == nil { continue @@ -164,7 +171,7 @@ func Bob(opts ...Option) (*B, error) { } if bob.nix == nil { - nix, err := DefaultNix() + nix, err := DefaultNixBuilder() if err != nil { return nil, err } @@ -186,7 +193,7 @@ func (b *B) Dir() string { return b.dir } -func (b *B) Nix() *NixBuilder { +func (b *B) Nix() *nixbuilder.NB { return b.nix } diff --git a/bob/bob_stores.go b/bob/bob_defaults.go similarity index 70% rename from bob/bob_stores.go rename to bob/bob_defaults.go index faa50377..69ea6ae9 100644 --- a/bob/bob_stores.go +++ b/bob/bob_defaults.go @@ -7,8 +7,10 @@ import ( "github.com/benchkram/errz" "github.com/benchkram/bob/bob/global" + nixbuilder "github.com/benchkram/bob/bob/nix-builder" "github.com/benchkram/bob/pkg/auth" "github.com/benchkram/bob/pkg/buildinfostore" + "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/pkg/store" "github.com/benchkram/bob/pkg/store/filestore" ) @@ -84,3 +86,32 @@ func DefaultAuthStore() (s *auth.Store, err error) { return AuthStore(home) } + +func NixBuilder(baseDir string) (_ *nixbuilder.NB, err error) { + + cacheDir := filepath.Join(baseDir, global.BobCacheNixFileName) + + err = os.MkdirAll(filepath.Dir(cacheDir), 0775) + errz.Fatal(err) + + nixCache, err := nix.NewCacheStore(nix.WithPath(cacheDir)) + errz.Fatal(err) + + shellCache := nix.NewShellCache(filepath.Join(baseDir, global.BobCacheNixShellCacheDir)) + + nb := nixbuilder.New( + nixbuilder.WithCache(nixCache), + nixbuilder.WithShellCache(shellCache), + ) + + return nb, nil +} + +func DefaultNixBuilder() (_ *nixbuilder.NB, err error) { + defer errz.Recover(&err) + + home, err := os.UserHomeDir() + errz.Fatal(err) + + return NixBuilder(home) +} diff --git a/bob/build.go b/bob/build.go index 1471c360..7f780267 100644 --- a/bob/build.go +++ b/bob/build.go @@ -37,8 +37,6 @@ func (b *B) Build(ctx context.Context, taskName string) (err error) { playbook.WithLocalStore(b.local), playbook.WithPushEnabled(b.enablePush), playbook.WithPullEnabled(b.enablePull), - playbook.WitNixCache(b.Nix().cache), - playbook.WitNixShellCache(b.Nix().shellCache), ) errz.Fatal(err) diff --git a/bob/builder.go b/bob/builder.go index f6fef7b5..18d6fb07 100644 --- a/bob/builder.go +++ b/bob/builder.go @@ -4,22 +4,23 @@ import ( "context" "github.com/benchkram/bob/bob/bobfile" + nixbuilder "github.com/benchkram/bob/bob/nix-builder" "github.com/benchkram/bob/pkg/ctl" ) var _ ctl.Builder = (*builder)(nil) -type BuildFunc func(_ context.Context, runname string, aggregate *bobfile.Bobfile, nix *NixBuilder) error +type BuildFunc func(_ context.Context, runname string, aggregate *bobfile.Bobfile, nix *nixbuilder.NB) error // builder holds all dependencies to build a build task type builder struct { task string aggregate *bobfile.Bobfile f BuildFunc - nix *NixBuilder + nix *nixbuilder.NB } -func NewBuilder(task string, aggregate *bobfile.Bobfile, f BuildFunc, nix *NixBuilder) ctl.Builder { +func NewBuilder(task string, aggregate *bobfile.Bobfile, f BuildFunc, nix *nixbuilder.NB) ctl.Builder { builder := &builder{ task: task, aggregate: aggregate, diff --git a/bob/nix_builder.go b/bob/nix-builder/nix_builder.go similarity index 79% rename from bob/nix_builder.go rename to bob/nix-builder/nix_builder.go index 67d4b596..50739fd3 100644 --- a/bob/nix_builder.go +++ b/bob/nix-builder/nix_builder.go @@ -1,4 +1,4 @@ -package bob +package nixbuilder import ( "fmt" @@ -11,32 +11,32 @@ import ( "github.com/benchkram/bob/pkg/usererror" ) -// NixBuilder acts as a wrapper for github.com/benchkram/bob/pkg/nix package +// NB acts as a wrapper for github.com/benchkram/bob/pkg/nix package // and is used for building tasks dependencies -type NixBuilder struct { +type NB struct { // cache allows caching the dependency to store path cache *nix.Cache // shellCache allows caching of the nix-shell --command='env' output shellCache *nix.ShellCache } -type NixOption func(n *NixBuilder) +type NixOption func(n *NB) func WithCache(cache *nix.Cache) NixOption { - return func(n *NixBuilder) { + return func(n *NB) { n.cache = cache } } func WithShellCache(cache *nix.ShellCache) NixOption { - return func(n *NixBuilder) { + return func(n *NB) { n.shellCache = cache } } -// NewNixBuilder instantiates a new Nix builder instance -func NewNixBuilder(opts ...NixOption) *NixBuilder { - n := &NixBuilder{} +// NewNB instantiates a new Nix builder instance +func New(opts ...NixOption) *NB { + n := &NB{} for _, opt := range opts { if opt == nil { @@ -49,7 +49,7 @@ func NewNixBuilder(opts ...NixOption) *NixBuilder { } // BuildNixDependenciesInPipeline collects and builds nix-dependencies for a pipeline starting at taskName. -func (n *NixBuilder) BuildNixDependenciesInPipeline(ag *bobfile.Bobfile, taskName string) (err error) { +func (n *NB) BuildNixDependenciesInPipeline(ag *bobfile.Bobfile, taskName string) (err error) { defer errz.Recover(&err) if !nix.IsInstalled() { @@ -64,7 +64,7 @@ func (n *NixBuilder) BuildNixDependenciesInPipeline(ag *bobfile.Bobfile, taskNam // BuildNixDependencies builds nix dependencies and prepares the affected tasks // by setting the store paths on each task in the given aggregate. -func (n *NixBuilder) BuildNixDependencies(ag *bobfile.Bobfile, buildTasksInPipeline, runTasksInPipeline []string) (err error) { +func (n *NB) BuildNixDependencies(ag *bobfile.Bobfile, buildTasksInPipeline, runTasksInPipeline []string) (err error) { defer errz.Recover(&err) if !nix.IsInstalled() { @@ -126,11 +126,11 @@ func (n *NixBuilder) BuildNixDependencies(ag *bobfile.Bobfile, buildTasksInPipel } // BuildDependencies builds the list of all nix deps -func (n *NixBuilder) BuildDependencies(deps []nix.Dependency) error { +func (n *NB) BuildDependencies(deps []nix.Dependency) error { return nix.BuildDependencies(deps, n.cache) } // BuildEnvironment builds the environment with all nix deps -func (n *NixBuilder) BuildEnvironment(deps []nix.Dependency, nixpkgs string) (_ []string, err error) { +func (n *NB) BuildEnvironment(deps []nix.Dependency, nixpkgs string) (_ []string, err error) { return nix.BuildEnvironment(deps, nixpkgs, n.cache, n.shellCache) } diff --git a/bob/nix_builder_defaults.go b/bob/nix_builder_defaults.go deleted file mode 100644 index aa65a41f..00000000 --- a/bob/nix_builder_defaults.go +++ /dev/null @@ -1,30 +0,0 @@ -package bob - -import ( - "os" - "path/filepath" - - "github.com/benchkram/errz" - - "github.com/benchkram/bob/bob/global" - "github.com/benchkram/bob/pkg/nix" -) - -func DefaultNix() (_ *NixBuilder, err error) { - defer errz.Recover(&err) - - home, err := os.UserHomeDir() - errz.Fatal(err) - - cacheDir := filepath.Join(home, global.BobCacheNixFileName) - - err = os.MkdirAll(filepath.Dir(cacheDir), 0775) - errz.Fatal(err) - - nixCache, err := nix.NewCacheStore(nix.WithPath(cacheDir)) - errz.Fatal(err) - - shellCache := nix.NewShellCache(filepath.Join(home, global.BobCacheNixShellCacheDir)) - - return NewNixBuilder(WithCache(nixCache), WithShellCache(shellCache)), nil -} diff --git a/bob/options.go b/bob/options.go index c893ab3f..c25a0545 100644 --- a/bob/options.go +++ b/bob/options.go @@ -1,6 +1,7 @@ package bob import ( + nixbuilder "github.com/benchkram/bob/bob/nix-builder" "github.com/benchkram/bob/pkg/auth" "github.com/benchkram/bob/pkg/buildinfostore" "github.com/benchkram/bob/pkg/store" @@ -70,7 +71,7 @@ func WithInsecure(allow bool) Option { } } -func WithNixBuilder(nix *NixBuilder) Option { +func WithNixBuilder(nix *nixbuilder.NB) Option { return func(b *B) { b.nix = nix } diff --git a/bob/playbook/build_internal.go b/bob/playbook/build_internal.go index a0f1c4fe..baa6a951 100644 --- a/bob/playbook/build_internal.go +++ b/bob/playbook/build_internal.go @@ -108,7 +108,7 @@ func (p *Playbook) build(ctx context.Context, task *bobtask.Task) (err error) { err = task.Clean() errz.Fatal(err) - err = task.Run(ctx, p.namePad, p.nixCache, p.nixShellCache) + err = task.Run(ctx, p.namePad) if err != nil { taskSuccessFul = false taskErr = err diff --git a/bob/playbook/options.go b/bob/playbook/options.go index 7461830c..ff608c61 100644 --- a/bob/playbook/options.go +++ b/bob/playbook/options.go @@ -1,7 +1,6 @@ package playbook import ( - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/pkg/store" ) @@ -48,15 +47,3 @@ func WithLocalStore(s store.Store) Option { p.localStore = s } } - -func WitNixCache(c *nix.Cache) Option { - return func(p *Playbook) { - p.nixCache = c - } -} - -func WitNixShellCache(c *nix.ShellCache) Option { - return func(p *Playbook) { - p.nixShellCache = c - } -} diff --git a/bob/playbook/playbook.go b/bob/playbook/playbook.go index c33160f9..bf7126c7 100644 --- a/bob/playbook/playbook.go +++ b/bob/playbook/playbook.go @@ -13,7 +13,6 @@ import ( "github.com/benchkram/bob/bobtask/buildinfo" "github.com/benchkram/bob/bobtask/hash" "github.com/benchkram/bob/pkg/boberror" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/pkg/store" "github.com/benchkram/bob/pkg/usererror" "github.com/benchkram/errz" @@ -76,11 +75,11 @@ type Playbook struct { // enablePull allows pulling artifacts from remote store enablePull bool - // nixCache caches the Nix store paths - nixCache *nix.Cache + // // nixCache caches the Nix store paths + // nixCache *nix.Cache - // nixShellCache caches the nix-shell --command='env' command output - nixShellCache *nix.ShellCache + // // nixShellCache caches the nix-shell --command='env' command output + // nixShellCache *nix.ShellCache } func New(root string, opts ...Option) *Playbook { diff --git a/bob/run.go b/bob/run.go index bd98bb7e..2f641582 100644 --- a/bob/run.go +++ b/bob/run.go @@ -7,6 +7,7 @@ import ( "github.com/benchkram/errz" "github.com/benchkram/bob/bob/bobfile" + nixbuilder "github.com/benchkram/bob/bob/nix-builder" "github.com/benchkram/bob/pkg/boberror" "github.com/benchkram/bob/pkg/ctl" "github.com/benchkram/bob/pkg/sliceutil" @@ -140,7 +141,7 @@ func executeBuildTasksInPipeline( ctx context.Context, runTaskName string, aggregate *bobfile.Bobfile, - nix *NixBuilder, + nix *nixbuilder.NB, ) (err error) { defer errz.Recover(&err) diff --git a/bobtask/run.go b/bobtask/run.go index abfff6cd..29060733 100644 --- a/bobtask/run.go +++ b/bobtask/run.go @@ -8,8 +8,6 @@ import ( "strings" "github.com/benchkram/bob/pkg/boblog" - "github.com/benchkram/bob/pkg/envutil" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/pkg/usererror" "github.com/logrusorgru/aurora" "mvdan.cc/sh/expand" @@ -19,14 +17,14 @@ import ( "github.com/benchkram/errz" ) -func (t *Task) Run(ctx context.Context, namePad int, nixCache *nix.Cache, shellCache *nix.ShellCache) (err error) { +func (t *Task) Run(ctx context.Context, namePad int) (err error) { defer errz.Recover(&err) - if len(t.Env()) == 0 { - nixShellEnv, err := nix.BuildEnvironment(t.dependencies, t.nixpkgs, nixCache, shellCache) - errz.Fatal(err) - t.SetEnv(envutil.Merge(nixShellEnv, t.env)) - } + // if len(t.Env()) == 0 { + // nixShellEnv, err := nix.BuildEnvironment(t.dependencies, t.nixpkgs, nixCache, shellCache) + // errz.Fatal(err) + // t.SetEnv(envutil.Merge(nixShellEnv, t.env)) + // } for _, run := range t.cmds { p, err := syntax.NewParser().Parse(strings.NewReader(run), "") From a5fb419dd3b3d842e173de63c4931cce9d5073d1 Mon Sep 17 00:00:00 2001 From: equanox Date: Mon, 2 Jan 2023 14:48:38 +0100 Subject: [PATCH 2/3] remove nix builder from tests --- bob/bob_defaults.go | 13 ++++--- test/e2e/artifacts/artifacts_suite_test.go | 34 +++--------------- test/e2e/build/build_suite_test.go | 34 +----------------- test/e2e/hermeticmode/hermetic_suite_test.go | 5 --- test/e2e/hermeticmode/setup_test.go | 27 -------------- test/e2e/ignore/ignore_suite_test.go | 33 +---------------- test/e2e/input/input_suite_test.go | 5 --- test/e2e/input/setup_test.go | 27 -------------- .../multilevelbuild_suite_test.go | 35 ++----------------- test/e2e/nix/nix_suite_test.go | 5 --- test/e2e/nix/nix_test.go | 13 ++++--- test/e2e/nix/setup_test.go | 30 ---------------- test/e2e/nixrun/run_suite_test.go | 6 ---- test/e2e/nixrun/setup_test.go | 30 ---------------- test/e2e/target-cleanup/setup_test.go | 24 ------------- test/e2e/target-name/setup_test.go | 24 ------------- test/e2e/target-symlink/setup_test.go | 24 ------------- test/e2e/target/target_suite_test.go | 32 ----------------- test/e2e/task-decoration/setup_test.go | 24 ------------- test/e2e/variables/variables_suite_test.go | 34 +----------------- 20 files changed, 28 insertions(+), 431 deletions(-) diff --git a/bob/bob_defaults.go b/bob/bob_defaults.go index 69ea6ae9..c6e937ca 100644 --- a/bob/bob_defaults.go +++ b/bob/bob_defaults.go @@ -48,10 +48,10 @@ func DefaultBuildinfoStore() (s buildinfostore.Store, err error) { return BuildinfoStore(home) } -func BuildinfoStore(dir string) (s buildinfostore.Store, err error) { +func BuildinfoStore(baseDir string) (s buildinfostore.Store, err error) { defer errz.Recover(&err) - storeDir := filepath.Join(dir, global.BobCacheBuildinfoDir) + storeDir := filepath.Join(baseDir, global.BobCacheBuildinfoDir) err = os.MkdirAll(storeDir, 0775) errz.Fatal(err) @@ -68,10 +68,10 @@ func (b *B) Localstore() store.Store { return b.local } -func AuthStore(dir string) (s *auth.Store, err error) { +func AuthStore(baseDir string) (s *auth.Store, err error) { defer errz.Recover(&err) - storeDir := filepath.Join(dir, global.BobAuthStoreDir) + storeDir := filepath.Join(baseDir, global.BobAuthStoreDir) err = os.MkdirAll(storeDir, 0775) errz.Fatal(err) @@ -87,6 +87,11 @@ func DefaultAuthStore() (s *auth.Store, err error) { return AuthStore(home) } +// NixBuilder initialises a new nix builder object with the cache setup +// in the given location. +// +// It's save to use the same base dir as for BuildinfoStore(), +// Filestore() and AuthStore(). func NixBuilder(baseDir string) (_ *nixbuilder.NB, err error) { cacheDir := filepath.Join(baseDir, global.BobCacheNixFileName) diff --git a/test/e2e/artifacts/artifacts_suite_test.go b/test/e2e/artifacts/artifacts_suite_test.go index 751a3767..db564494 100644 --- a/test/e2e/artifacts/artifacts_suite_test.go +++ b/test/e2e/artifacts/artifacts_suite_test.go @@ -1,7 +1,6 @@ package artifactstest import ( - "io/ioutil" "os" "path/filepath" "testing" @@ -10,7 +9,6 @@ import ( "github.com/benchkram/bob/bob/global" "github.com/benchkram/bob/pkg/boblog" "github.com/benchkram/bob/pkg/buildinfostore" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/pkg/store" "github.com/benchkram/bob/test/setup" @@ -64,6 +62,7 @@ func reset() error { var _ = BeforeSuite(func() { boblog.SetLogLevel(10) + var err error var storageDir string dir, storageDir, cleanup, err = setup.TestDirs("artifacts") @@ -73,12 +72,14 @@ var _ = BeforeSuite(func() { err = os.Chdir(dir) Expect(err).NotTo(HaveOccurred()) + // objects using the local filesystem for caching and persistent. + // Initialized on a temporary location to avoid interference with + // a local bob installation. artifactStore, err = bob.Filestore(storageDir) Expect(err).NotTo(HaveOccurred()) buildinfoStore, err = bob.BuildinfoStore(storageDir) Expect(err).NotTo(HaveOccurred()) - - nixBuilder, err := NixBuilder() + nixBuilder, err := bob.NixBuilder(storageDir) Expect(err).NotTo(HaveOccurred()) b, err = bob.Bob( @@ -99,10 +100,6 @@ var _ = BeforeSuite(func() { }) var _ = AfterSuite(func() { - for _, file := range tmpFiles { - err := os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } err := cleanup() Expect(err).NotTo(HaveOccurred()) }) @@ -111,24 +108,3 @@ func TestArtifact(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "artifacts suite") } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/build/build_suite_test.go b/test/e2e/build/build_suite_test.go index b1a5e34e..23a4aec4 100644 --- a/test/e2e/build/build_suite_test.go +++ b/test/e2e/build/build_suite_test.go @@ -1,12 +1,10 @@ package buildtest import ( - "io/ioutil" "os" "testing" "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/test/setup" . "github.com/onsi/ginkgo" @@ -29,46 +27,16 @@ var _ = BeforeSuite(func() { err = os.Chdir(dir) Expect(err).NotTo(HaveOccurred()) - nixBuilder, err := NixBuilder() - Expect(err).NotTo(HaveOccurred()) - - b, err = bob.BobWithBaseStoreDir(storageDir, bob.WithDir(dir), bob.WithNixBuilder(nixBuilder)) + b, err = bob.BobWithBaseStoreDir(storageDir, bob.WithDir(dir)) Expect(err).NotTo(HaveOccurred()) }) var _ = AfterSuite(func() { err := os.RemoveAll(dir) Expect(err).NotTo(HaveOccurred()) - - for _, file := range tmpFiles { - err := os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } }) func TestStatus(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "build suite") } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/hermeticmode/hermetic_suite_test.go b/test/e2e/hermeticmode/hermetic_suite_test.go index 8e144217..90f7fbd2 100644 --- a/test/e2e/hermeticmode/hermetic_suite_test.go +++ b/test/e2e/hermeticmode/hermetic_suite_test.go @@ -92,11 +92,6 @@ var _ = AfterSuite(func() { err := os.RemoveAll(dir) Expect(err).NotTo(HaveOccurred()) - for _, file := range tmpFiles { - err = os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } - bob.Version = version }) diff --git a/test/e2e/hermeticmode/setup_test.go b/test/e2e/hermeticmode/setup_test.go index 1645d7ad..ed971897 100644 --- a/test/e2e/hermeticmode/setup_test.go +++ b/test/e2e/hermeticmode/setup_test.go @@ -1,43 +1,16 @@ package hermeticmodetest import ( - "io/ioutil" - "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/errz" ) func BobSetup(env ...string) (_ *bob.B, err error) { defer errz.Recover(&err) - nixBuilder, err := NixBuilder() - errz.Fatal(err) - return bob.Bob( bob.WithDir(dir), bob.WithCachingEnabled(false), - bob.WithNixBuilder(nixBuilder), bob.WithEnvVariables(env), ) } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (_ *bob.NixBuilder, err error) { - defer errz.Recover(&err) - - file, err := ioutil.TempFile("", ".nix_cache*") - errz.Fatal(err) - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - errz.Fatal(err) - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/ignore/ignore_suite_test.go b/test/e2e/ignore/ignore_suite_test.go index 8ff4442f..69a0b93b 100644 --- a/test/e2e/ignore/ignore_suite_test.go +++ b/test/e2e/ignore/ignore_suite_test.go @@ -1,12 +1,10 @@ package ignoretest import ( - "io/ioutil" "os" "testing" "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/test/setup" . "github.com/onsi/ginkgo" @@ -30,10 +28,7 @@ var _ = BeforeSuite(func() { err = os.Chdir(dir) Expect(err).NotTo(HaveOccurred()) - nixBuilder, err := NixBuilder() - Expect(err).NotTo(HaveOccurred()) - - b, err = bob.BobWithBaseStoreDir(storageDir, bob.WithDir(dir), bob.WithNixBuilder(nixBuilder)) + b, err = bob.BobWithBaseStoreDir(storageDir, bob.WithDir(dir)) Expect(err).NotTo(HaveOccurred()) }) @@ -41,35 +36,9 @@ var _ = AfterSuite(func() { err := cleanup() Expect(err).NotTo(HaveOccurred()) - for _, file := range tmpFiles { - err := os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } }) func TestStatus(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "ignore suite") } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/input/input_suite_test.go b/test/e2e/input/input_suite_test.go index e1d4c758..2f8b2d10 100644 --- a/test/e2e/input/input_suite_test.go +++ b/test/e2e/input/input_suite_test.go @@ -51,11 +51,6 @@ var _ = BeforeSuite(func() { }) var _ = AfterSuite(func() { - for _, file := range tmpFiles { - err := os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } - bob.Version = version }) diff --git a/test/e2e/input/setup_test.go b/test/e2e/input/setup_test.go index b104b432..9bd632ef 100644 --- a/test/e2e/input/setup_test.go +++ b/test/e2e/input/setup_test.go @@ -1,43 +1,16 @@ package inputest import ( - "io/ioutil" - "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/errz" ) func BobSetup(env ...string) (_ *bob.B, err error) { defer errz.Recover(&err) - nixBuilder, err := NixBuilder() - errz.Fatal(err) - return bob.Bob( bob.WithDir(dir), bob.WithCachingEnabled(false), - bob.WithNixBuilder(nixBuilder), bob.WithEnvVariables(env), ) } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (_ *bob.NixBuilder, err error) { - defer errz.Recover(&err) - - file, err := ioutil.TempFile("", ".nix_cache*") - errz.Fatal(err) - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - errz.Fatal(err) - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/multilevelbuild/multilevelbuild_suite_test.go b/test/e2e/multilevelbuild/multilevelbuild_suite_test.go index 71805c09..6635cc25 100644 --- a/test/e2e/multilevelbuild/multilevelbuild_suite_test.go +++ b/test/e2e/multilevelbuild/multilevelbuild_suite_test.go @@ -1,14 +1,12 @@ package multilevelbuildtest import ( - "io/ioutil" "os" "path/filepath" "testing" "github.com/benchkram/bob/bob" "github.com/benchkram/bob/bob/global" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/test/setup" . "github.com/onsi/ginkgo" @@ -27,25 +25,18 @@ var ( var _ = BeforeSuite(func() { var err error var storageDir string - dir, storageDir, cleanup, err = setup.TestDirs("target") + dir, storageDir, cleanup, err = setup.TestDirs("multilevel-build") Expect(err).NotTo(HaveOccurred()) artifactDir = filepath.Join(storageDir, global.BobCacheArtifactsDir) err = os.Chdir(dir) Expect(err).NotTo(HaveOccurred()) - nixBuilder, err := NixBuilder() - Expect(err).NotTo(HaveOccurred()) - - b, err = bob.BobWithBaseStoreDir(storageDir, bob.WithDir(dir), bob.WithNixBuilder(nixBuilder)) + b, err = bob.BobWithBaseStoreDir(storageDir, bob.WithDir(dir)) Expect(err).NotTo(HaveOccurred()) }) var _ = AfterSuite(func() { - for _, file := range tmpFiles { - err := os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } err := cleanup() Expect(err).NotTo(HaveOccurred()) }) @@ -69,25 +60,3 @@ func artifactsClean() error { } return nil } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/nix/nix_suite_test.go b/test/e2e/nix/nix_suite_test.go index 009c7f49..a27d7dfd 100644 --- a/test/e2e/nix/nix_suite_test.go +++ b/test/e2e/nix/nix_suite_test.go @@ -68,11 +68,6 @@ var _ = AfterSuite(func() { err := os.RemoveAll(dir) Expect(err).NotTo(HaveOccurred()) - for _, file := range tmpFiles { - err = os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } - bob.Version = version }) diff --git a/test/e2e/nix/nix_test.go b/test/e2e/nix/nix_test.go index e0eb13d8..c7b304c3 100644 --- a/test/e2e/nix/nix_test.go +++ b/test/e2e/nix/nix_test.go @@ -8,6 +8,7 @@ import ( . "github.com/onsi/gomega" "github.com/benchkram/bob/bob" + nixbuilder "github.com/benchkram/bob/bob/nix-builder" "github.com/benchkram/bob/pkg/filepathutil" "github.com/benchkram/bob/pkg/nix" ) @@ -30,13 +31,17 @@ var _ = Describe("Testing new nix implementation", func() { nixCacheFilePath := dir + "customFile" defer os.Remove(nixCacheFilePath) - fileCache, err := nix.NewCacheStore(nix.WithPath(nixCacheFilePath)) + nixCache, err := nix.NewCacheStore(nix.WithPath(nixCacheFilePath)) Expect(err).NotTo(HaveOccurred()) - nixBuilder := bob.NewNixBuilder(bob.WithCache(fileCache)) - Expect(err).NotTo(HaveOccurred()) + b, err := bob.Bob( + bob.WithDir(dir), + bob.WithCachingEnabled(false), + bob.WithNixBuilder( + nixbuilder.New(nixbuilder.WithCache(nixCache)), + ), + ) - b, err := bob.Bob(bob.WithDir(dir), bob.WithCachingEnabled(false), bob.WithNixBuilder(nixBuilder)) Expect(err).NotTo(HaveOccurred()) capture() diff --git a/test/e2e/nix/setup_test.go b/test/e2e/nix/setup_test.go index 7774868c..b208a917 100644 --- a/test/e2e/nix/setup_test.go +++ b/test/e2e/nix/setup_test.go @@ -1,42 +1,12 @@ package nixtest import ( - "io/ioutil" - "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" ) func Bob() (*bob.B, error) { - nixBuilder, err := NixBuilder() - if err != nil { - return nil, err - } return bob.Bob( bob.WithDir(dir), bob.WithCachingEnabled(false), - bob.WithNixBuilder(nixBuilder), ) } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/nixrun/run_suite_test.go b/test/e2e/nixrun/run_suite_test.go index 3d3bd5f7..d07d61ff 100644 --- a/test/e2e/nixrun/run_suite_test.go +++ b/test/e2e/nixrun/run_suite_test.go @@ -97,12 +97,6 @@ var _ = BeforeSuite(func() { var _ = AfterSuite(func() { err := os.RemoveAll(dir) Expect(err).NotTo(HaveOccurred()) - - for _, file := range tmpFiles { - err = os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } - bob.Version = version }) diff --git a/test/e2e/nixrun/setup_test.go b/test/e2e/nixrun/setup_test.go index bbe5b545..540bfbbd 100644 --- a/test/e2e/nixrun/setup_test.go +++ b/test/e2e/nixrun/setup_test.go @@ -1,42 +1,12 @@ package nixruntest import ( - "io/ioutil" - "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" ) func Bob() (*bob.B, error) { - nixBuilder, err := NixBuilder() - if err != nil { - return nil, err - } return bob.Bob( bob.WithDir(dir), bob.WithCachingEnabled(false), - bob.WithNixBuilder(nixBuilder), ) } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/target-cleanup/setup_test.go b/test/e2e/target-cleanup/setup_test.go index effd57a6..4d2977df 100644 --- a/test/e2e/target-cleanup/setup_test.go +++ b/test/e2e/target-cleanup/setup_test.go @@ -1,11 +1,9 @@ package targetcleanuptest import ( - "io/ioutil" "os" "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/errz" ) @@ -20,12 +18,8 @@ func BobSetupNoCache() (_ *bob.B, err error) { func bobSetup(opts ...bob.Option) (_ *bob.B, err error) { defer errz.Recover(&err) - nixBuilder, err := NixBuilder() - errz.Fatal(err) - static := []bob.Option{ bob.WithDir(dir), - bob.WithNixBuilder(nixBuilder), bob.WithFilestore(artifactStore), bob.WithBuildinfoStore(buildInfoStore), } @@ -35,24 +29,6 @@ func bobSetup(opts ...bob.Option) (_ *bob.B, err error) { ) } -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} - // useBobfile sets the right bobfile to be used for test func useBobfile(name string) error { return os.Rename(name+".yaml", "bob.yaml") diff --git a/test/e2e/target-name/setup_test.go b/test/e2e/target-name/setup_test.go index 3796a80c..535ff258 100644 --- a/test/e2e/target-name/setup_test.go +++ b/test/e2e/target-name/setup_test.go @@ -1,12 +1,10 @@ package targetnametest import ( - "io/ioutil" "os" "path/filepath" "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/errz" . "github.com/onsi/gomega" ) @@ -18,12 +16,8 @@ func BobSetup() (_ *bob.B, err error) { func bobSetup(opts ...bob.Option) (_ *bob.B, err error) { defer errz.Recover(&err) - nixBuilder, err := NixBuilder() - errz.Fatal(err) - static := []bob.Option{ bob.WithDir(dir), - bob.WithNixBuilder(nixBuilder), bob.WithFilestore(artifactStore), bob.WithBuildinfoStore(buildInfoStore), } @@ -33,24 +27,6 @@ func bobSetup(opts ...bob.Option) (_ *bob.B, err error) { ) } -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} - // useBobfile sets the right bobfile to be used for test func useBobfile(name string) { err := os.Rename(name+".yaml", "bob.yaml") diff --git a/test/e2e/target-symlink/setup_test.go b/test/e2e/target-symlink/setup_test.go index 186dcf5f..7d8abaf4 100644 --- a/test/e2e/target-symlink/setup_test.go +++ b/test/e2e/target-symlink/setup_test.go @@ -1,47 +1,23 @@ package targetsymlinktest import ( - "io/ioutil" "os" "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/errz" ) func BobSetup() (_ *bob.B, err error) { defer errz.Recover(&err) - nixBuilder, err := NixBuilder() - errz.Fatal(err) - return bob.Bob( bob.WithDir(dir), bob.WithCachingEnabled(true), - bob.WithNixBuilder(nixBuilder), bob.WithFilestore(artifactStore), bob.WithBuildinfoStore(buildInfoStore), ) } -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} - // useBobfile sets the right bobfile to be used for test func useBobfile(name string) error { return os.Rename(name+".yaml", "bob.yaml") diff --git a/test/e2e/target/target_suite_test.go b/test/e2e/target/target_suite_test.go index 6483855c..c1097832 100644 --- a/test/e2e/target/target_suite_test.go +++ b/test/e2e/target/target_suite_test.go @@ -1,7 +1,6 @@ package targettest import ( - "io/ioutil" "os" "path/filepath" "testing" @@ -10,7 +9,6 @@ import ( "github.com/benchkram/bob/bob/global" "github.com/benchkram/bob/pkg/boblog" "github.com/benchkram/bob/pkg/buildinfostore" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/test/setup" . "github.com/onsi/ginkgo" @@ -39,24 +37,16 @@ var _ = BeforeSuite(func() { buildInfoStore = buildinfostore.NewProtoStore(filepath.Join(storageDir, global.BobCacheBuildinfoDir)) - nixBuilder, err := NixBuilder() - Expect(err).NotTo(HaveOccurred()) - b, err = bob.BobWithBaseStoreDir( storageDir, bob.WithBuildinfoStore(buildInfoStore), bob.WithDir(dir), - bob.WithNixBuilder(nixBuilder), ) Expect(err).NotTo(HaveOccurred()) }) var _ = AfterSuite(func() { - for _, file := range tmpFiles { - err := os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } err := cleanup() Expect(err).NotTo(HaveOccurred()) }) @@ -65,25 +55,3 @@ func TestStatus(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "target-build suite") } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} diff --git a/test/e2e/task-decoration/setup_test.go b/test/e2e/task-decoration/setup_test.go index 3c611857..6ad960df 100644 --- a/test/e2e/task-decoration/setup_test.go +++ b/test/e2e/task-decoration/setup_test.go @@ -1,12 +1,10 @@ package taskdecorationtest import ( - "io/ioutil" "os" "path/filepath" "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/errz" . "github.com/onsi/gomega" ) @@ -18,12 +16,8 @@ func BobSetup() (_ *bob.B, err error) { func bobSetup(opts ...bob.Option) (_ *bob.B, err error) { defer errz.Recover(&err) - nixBuilder, err := NixBuilder() - errz.Fatal(err) - static := []bob.Option{ bob.WithDir(dir), - bob.WithNixBuilder(nixBuilder), bob.WithFilestore(artifactStore), bob.WithBuildinfoStore(buildInfoStore), } @@ -33,24 +27,6 @@ func bobSetup(opts ...bob.Option) (_ *bob.B, err error) { ) } -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} - // useBobfile sets the right bobfile to be used for test func useBobfile(name string) { err := os.Rename(name+".yaml", "bob.yaml") diff --git a/test/e2e/variables/variables_suite_test.go b/test/e2e/variables/variables_suite_test.go index 9d72883e..69f6857f 100644 --- a/test/e2e/variables/variables_suite_test.go +++ b/test/e2e/variables/variables_suite_test.go @@ -1,12 +1,10 @@ package variablestest import ( - "io/ioutil" "os" "testing" "github.com/benchkram/bob/bob" - "github.com/benchkram/bob/pkg/nix" "github.com/benchkram/bob/test/setup" . "github.com/onsi/ginkgo" @@ -30,46 +28,16 @@ var _ = BeforeSuite(func() { err = os.Chdir(dir) Expect(err).NotTo(HaveOccurred()) - nixBuilder, err := NixBuilder() - Expect(err).NotTo(HaveOccurred()) - - b, err = bob.BobWithBaseStoreDir(storageDir, bob.WithDir(dir), bob.WithNixBuilder(nixBuilder)) + b, err = bob.BobWithBaseStoreDir(storageDir, bob.WithDir(dir)) Expect(err).NotTo(HaveOccurred()) }) var _ = AfterSuite(func() { err := cleanup() Expect(err).NotTo(HaveOccurred()) - - for _, file := range tmpFiles { - err := os.Remove(file) - Expect(err).NotTo(HaveOccurred()) - } }) func TestStatus(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "variables-build suite") } - -// tmpFiles tracks temporarily created files in these tests -// to be cleaned up at the end. -var tmpFiles []string - -func NixBuilder() (*bob.NixBuilder, error) { - file, err := ioutil.TempFile("", ".nix_cache*") - if err != nil { - return nil, err - } - name := file.Name() - file.Close() - - tmpFiles = append(tmpFiles, name) - - cache, err := nix.NewCacheStore(nix.WithPath(name)) - if err != nil { - return nil, err - } - - return bob.NewNixBuilder(bob.WithCache(cache)), nil -} From 52136d8f69a0a07c526d8cb61118fa6ae698a74d Mon Sep 17 00:00:00 2001 From: equanox Date: Mon, 2 Jan 2023 15:00:44 +0100 Subject: [PATCH 3/3] cleanup --- bob/playbook/playbook.go | 6 ------ bobtask/run.go | 6 ------ 2 files changed, 12 deletions(-) diff --git a/bob/playbook/playbook.go b/bob/playbook/playbook.go index bf7126c7..a2f57e36 100644 --- a/bob/playbook/playbook.go +++ b/bob/playbook/playbook.go @@ -74,12 +74,6 @@ type Playbook struct { // enablePull allows pulling artifacts from remote store enablePull bool - - // // nixCache caches the Nix store paths - // nixCache *nix.Cache - - // // nixShellCache caches the nix-shell --command='env' command output - // nixShellCache *nix.ShellCache } func New(root string, opts ...Option) *Playbook { diff --git a/bobtask/run.go b/bobtask/run.go index 29060733..974dd3e7 100644 --- a/bobtask/run.go +++ b/bobtask/run.go @@ -20,12 +20,6 @@ import ( func (t *Task) Run(ctx context.Context, namePad int) (err error) { defer errz.Recover(&err) - // if len(t.Env()) == 0 { - // nixShellEnv, err := nix.BuildEnvironment(t.dependencies, t.nixpkgs, nixCache, shellCache) - // errz.Fatal(err) - // t.SetEnv(envutil.Merge(nixShellEnv, t.env)) - // } - for _, run := range t.cmds { p, err := syntax.NewParser().Parse(strings.NewReader(run), "") if err != nil {