From 4c1c7451e7ff3b4ae42d2fe91fd0abe44c338200 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Tue, 12 Nov 2019 08:48:07 +0100 Subject: [PATCH] Resolve deps before compiling --- pkg/compiler/compiler.go | 5 +++++ pkg/compiler/compiler_test.go | 6 +++--- pkg/logger/logger.go | 3 +++ pkg/package/package.go | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/compiler/compiler.go b/pkg/compiler/compiler.go index 164ce5c6..9e13529a 100644 --- a/pkg/compiler/compiler.go +++ b/pkg/compiler/compiler.go @@ -189,6 +189,11 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage func (cs *LuetCompiler) Compile(concurrency int, keepPermissions bool, p CompilationSpec) (Artifact, error) { Debug("Compiling " + p.GetPackage().GetName()) + err := cs.Tree().ResolveDeps(concurrency) // FIXME: This should be cached in CompileParallel, and not done for each compilation + if err != nil { + return nil, errors.Wrap(err, "While resoolving tree world deps") + } + if len(p.GetPackage().GetRequires()) == 0 && p.GetImage() == "" { Error("Package with no deps and no seed image supplied, bailing out") return nil, errors.New("Package " + p.GetPackage().GetFingerPrint() + "with no deps and no seed image supplied, bailing out") diff --git a/pkg/compiler/compiler_test.go b/pkg/compiler/compiler_test.go index d345b621..90affb4d 100644 --- a/pkg/compiler/compiler_test.go +++ b/pkg/compiler/compiler_test.go @@ -106,7 +106,7 @@ var _ = Describe("Compiler", func() { }) Context("Reconstruct image tree", func() { - FIt("Compiles it", func() { + It("Compiles it", func() { generalRecipe := tree.NewCompilerRecipe() tmpdir, err := ioutil.TempDir("", "package") Expect(err).ToNot(HaveOccurred()) @@ -125,12 +125,12 @@ var _ = Describe("Compiler", func() { Expect(err).ToNot(HaveOccurred()) spec3, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "d", Category: "test", Version: "1.0"}) Expect(err).ToNot(HaveOccurred()) - - Expect(spec.GetPackage().GetPath()).ToNot(Equal("")) + Expect(spec3.GetPackage().GetRequires()[0].GetName()).To(Equal("c")) spec.SetOutputPath(tmpdir) spec2.SetOutputPath(tmpdir) spec3.SetOutputPath(tmpdir) + artifacts, errs := compiler.CompileParallel(2, false, []CompilationSpec{spec, spec2, spec3}) Expect(errs).To(BeNil()) Expect(len(artifacts)).To(Equal(3)) diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 8997c537..7a861f10 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -32,6 +32,9 @@ func Spinner(i int) { func SpinnerText(suffix, prefix string) { m.Lock() defer m.Unlock() + if s == nil { + s = spinner.New(spinner.CharSets[22], 100*time.Millisecond) // Build our new spinner + } s.Suffix = Bold(Magenta(suffix)).BgBlack().String() s.Prefix = Bold(Cyan(prefix)).String() } diff --git a/pkg/package/package.go b/pkg/package/package.go index 3f82f14d..856e50e3 100644 --- a/pkg/package/package.go +++ b/pkg/package/package.go @@ -77,6 +77,7 @@ type Tree interface { SetPackageSet(s PackageSet) World() ([]Package, error) FindPackage(Package) (Package, error) + ResolveDeps(int) error } // >> Unmarshallers