Skip to content

Commit

Permalink
⚙️ Small fixups and enhancements
Browse files Browse the repository at this point in the history
  • Loading branch information
mudler committed Apr 27, 2022
1 parent e70a543 commit c363c91
Show file tree
Hide file tree
Showing 10 changed files with 95 additions and 78 deletions.
23 changes: 16 additions & 7 deletions pkg/api/core/types/package.go
Expand Up @@ -301,7 +301,16 @@ func (p *Package) HashFingerprint(salt string) string {
}

func (p *Package) HumanReadableString() string {
return fmt.Sprintf("%s/%s-%s", p.Category, p.Name, p.Version)
switch {
case p.Category != "" && p.Name != "" && p.Version == "":
return fmt.Sprintf("%s/%s", p.Category, p.Name)
case p.Category == "" && p.Name != "" && p.Version == "":
return p.Name
case p.Category == "" && p.Name != "" && p.Version != "":
return fmt.Sprintf("%s@%s", p.Category, p.Name)
default:
return fmt.Sprintf("%s/%s-%s", p.Category, p.Name, p.Version)
}
}

func PackageFromString(s string) *Package {
Expand Down Expand Up @@ -571,10 +580,10 @@ func (p *Package) Revdeps(definitiondb PackageDatabase) Packages {

func walkPackage(p *Package, definitiondb PackageDatabase, visited map[string]interface{}) Packages {
var versionsInWorld Packages
if _, ok := visited[p.HumanReadableString()]; ok {
if _, ok := visited[p.GetFingerPrint()]; ok {
return versionsInWorld
}
visited[p.HumanReadableString()] = true
visited[p.GetFingerPrint()] = true

revdeps, _ := definitiondb.GetRevdeps(p)
for _, r := range revdeps {
Expand Down Expand Up @@ -628,10 +637,10 @@ func DecodePackage(ID string, db PackageDatabase) (*Package, error) {
}

func (pack *Package) scanRequires(definitiondb PackageDatabase, s *Package, visited map[string]interface{}) (bool, error) {
if _, ok := visited[pack.HumanReadableString()]; ok {
if _, ok := visited[pack.GetFingerPrint()]; ok {
return false, nil
}
visited[pack.HumanReadableString()] = true
visited[pack.GetFingerPrint()] = true
p, err := definitiondb.FindPackage(pack)
if err != nil {
p = pack //relax things
Expand Down Expand Up @@ -745,10 +754,10 @@ func (p *Package) GetRuntimePackage() (*Package, error) {
}

func (pack *Package) buildFormula(definitiondb PackageDatabase, db PackageDatabase, visited map[string]interface{}) ([]bf.Formula, error) {
if _, ok := visited[pack.HumanReadableString()]; ok {
if _, ok := visited[pack.GetFingerPrint()]; ok {
return nil, nil
}
visited[pack.HumanReadableString()] = true
visited[pack.GetFingerPrint()] = true
p, err := definitiondb.FindPackage(pack)
if err != nil {
p = pack // Relax failures and trust the def
Expand Down
38 changes: 19 additions & 19 deletions pkg/compiler/compiler_test.go
Expand Up @@ -24,6 +24,7 @@ import (

"github.com/mudler/luet/pkg/api/core/logger"
"github.com/mudler/luet/pkg/api/core/types"
"github.com/mudler/luet/pkg/compiler"

helpers "github.com/mudler/luet/tests/helpers"

Expand All @@ -32,7 +33,6 @@ import (
"github.com/mudler/luet/pkg/api/core/types/artifact"
. "github.com/mudler/luet/pkg/compiler"
sd "github.com/mudler/luet/pkg/compiler/backend"
"github.com/mudler/luet/pkg/compiler/types/options"
pkg "github.com/mudler/luet/pkg/database"
fileHelper "github.com/mudler/luet/pkg/helpers/file"
"github.com/mudler/luet/pkg/tree"
Expand All @@ -52,7 +52,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -95,7 +95,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "c", Category: "test", Version: "1.2"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -125,7 +125,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "c", Category: "test", Version: "1.2"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -157,7 +157,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(1), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(1), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -191,7 +191,7 @@ var _ = Describe("Compiler", func() {

err = generalRecipe.Load("../../tests/fixtures/templates")
Expect(err).ToNot(HaveOccurred())
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.WithContext(context.NewContext()))

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
pkg, err := generalRecipe.GetDatabase().FindPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expand All @@ -215,7 +215,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "c", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -271,7 +271,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(1), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(1), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "extra", Category: "layer", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -795,7 +795,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "c", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -873,7 +873,7 @@ var _ = Describe("Compiler", func() {
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))

compiler := NewLuetCompiler(b, generalRecipe.GetDatabase(),
options.EnablePushFinalImages, options.ForcePushFinalImages, options.WithFinalRepository(imageName))
compiler.EnablePushFinalImages, compiler.ForcePushFinalImages, compiler.WithFinalRepository(imageName))

spec, err := compiler.FromPackage(&types.Package{Name: "runtime", Category: "layer", Version: "0.1"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -984,7 +984,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "runtime", Category: "layer", Version: "0.1"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -1019,7 +1019,7 @@ var _ = Describe("Compiler", func() {
err := generalRecipe.Load("../../tests/fixtures/includeimage")
Expect(err).ToNot(HaveOccurred())
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.WithContext(context.NewContext()))

specs, err := compiler.FromDatabase(generalRecipe.GetDatabase(), true, "")
Expect(err).ToNot(HaveOccurred())
Expand All @@ -1038,7 +1038,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "runtime", Category: "layer", Version: "0.1"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -1074,7 +1074,7 @@ var _ = Describe("Compiler", func() {

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))

compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.WithContext(context.NewContext()))
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.WithContext(context.NewContext()))

spec, err := compiler.FromPackage(&types.Package{Name: "runtime", Category: "layer", Version: "0.1"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -1155,11 +1155,11 @@ var _ = Describe("Compiler", func() {
defer cleanup(allImages...)

compiler := NewLuetCompiler(b, generalRecipe.GetDatabase(),
options.WithFinalRepository("test/test"),
options.EnableGenerateFinalImages,
options.WithRuntimeDatabase(installerRecipe.GetDatabase()),
options.PullFirst(true),
options.WithContext(c))
compiler.WithFinalRepository("test/test"),
compiler.EnableGenerateFinalImages,
compiler.WithRuntimeDatabase(installerRecipe.GetDatabase()),
compiler.PullFirst(true),
compiler.WithContext(c))

spec, err := compiler.FromPackage(&types.Package{Name: "x", Category: "test", Version: "0.1"})
Expect(err).ToNot(HaveOccurred())
Expand Down
8 changes: 5 additions & 3 deletions pkg/database/database_mem.go
Expand Up @@ -134,10 +134,10 @@ func (db *InMemoryDatabase) GetAllPackages(packages chan *types.Package) error {

func (db *InMemoryDatabase) getRevdeps(p *types.Package, visited map[string]interface{}) (types.Packages, error) {
var versionsInWorld types.Packages
if _, ok := visited[p.HumanReadableString()]; ok {
if _, ok := visited[p.GetFingerPrint()]; ok {
return versionsInWorld, nil
}
visited[p.HumanReadableString()] = true
visited[p.GetFingerPrint()] = true

var res types.Packages
packs, err := db.FindPackages(p)
Expand Down Expand Up @@ -443,7 +443,9 @@ func (db *InMemoryDatabase) RemovePackageFiles(p *types.Package) error {
func (db *InMemoryDatabase) RemovePackage(p *types.Package) error {
db.Lock()
defer db.Unlock()

if _, exists := db.CacheNoVersion[p.GetPackageName()]; exists {
delete(db.CacheNoVersion[p.GetPackageName()], p.GetVersion())
}
delete(db.Database, p.GetFingerPrint())
return nil
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/installer/cli.go
Expand Up @@ -87,7 +87,7 @@ func printMatches(artefacts map[string]ArtifactMatch) {
d := pterm.TableData{{"Program Name", "Version", "License", "Repository"}}
for _, m := range artefacts {
d = append(d, []string{
fmt.Sprintf("%s/%s", m.Package.GetCategory(), m.Package.GetName()),
m.Package.HumanReadableString(),
pterm.LightGreen(m.Package.GetVersion()), m.Package.GetLicense(), m.Repository.GetName()})
}
pterm.DefaultTable.WithHasHeader().WithData(d).Render()
Expand Down
10 changes: 8 additions & 2 deletions pkg/installer/installer.go
@@ -1,4 +1,4 @@
// Copyright © 2019-2021 Ettore Di Giacinto <mudler@gentoo.org>
// Copyright © 2019-2022 Ettore Di Giacinto <mudler@gentoo.org>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -28,6 +28,7 @@ import (
"github.com/mudler/luet/pkg/api/core/config"
"github.com/mudler/luet/pkg/api/core/logger"
"github.com/mudler/luet/pkg/helpers"
"github.com/mudler/luet/pkg/tree"

"github.com/mudler/luet/pkg/api/core/bus"
"github.com/mudler/luet/pkg/api/core/types"
Expand Down Expand Up @@ -801,6 +802,9 @@ func (l *LuetInstaller) getFinalizers(allRepos types.PackageDatabase, solution t
if !nodeps {
// TODO: Lower those errors as l.Options.Context.Warning
for _, w := range toInstall {
if !fileHelper.Exists(w.Package.Rel(tree.FinalizerFile)) {
continue
}
// Finalizers needs to run in order and in sequence.
ordered, err := solution.Order(allRepos, w.Package.GetFingerPrint())
if err != nil {
Expand All @@ -822,10 +826,12 @@ func (l *LuetInstaller) getFinalizers(allRepos types.PackageDatabase, solution t
toFinalize = append(toFinalize, treePackage)
}
}

}
} else {
for _, c := range toInstall {
if !fileHelper.Exists(c.Package.Rel(tree.FinalizerFile)) {
continue
}
treePackage, err := c.Repository.GetTree().GetDatabase().FindPackage(c.Package)
if err != nil {
return toFinalize, errors.Wrap(err, "Error getting package "+c.Package.HumanReadableString())
Expand Down
29 changes: 14 additions & 15 deletions pkg/installer/installer_test.go
Expand Up @@ -25,7 +25,6 @@ import (
"github.com/mudler/luet/pkg/api/core/types"
compiler "github.com/mudler/luet/pkg/compiler"
backend "github.com/mudler/luet/pkg/compiler/backend"
"github.com/mudler/luet/pkg/compiler/types/options"
fileHelper "github.com/mudler/luet/pkg/helpers/file"

pkg "github.com/mudler/luet/pkg/database"
Expand Down Expand Up @@ -73,7 +72,7 @@ var _ = Describe("Installer", func() {

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx),
generalRecipe.GetDatabase(),
options.Concurrency(2))
compiler.Concurrency(2))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -190,7 +189,7 @@ urls:
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx),
generalRecipe.GetDatabase(), options.Concurrency(2))
generalRecipe.GetDatabase(), compiler.Concurrency(2))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -313,7 +312,7 @@ urls:
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(),
options.Concurrency(2))
compiler.Concurrency(2))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -442,7 +441,7 @@ urls:
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(),
options.Concurrency(2))
compiler.Concurrency(2))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -540,7 +539,7 @@ urls:

Expect(len(generalRecipe2.GetDatabase().GetPackages())).To(Equal(1))

c = compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe2.GetDatabase(), options.Concurrency(2))
c = compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe2.GetDatabase(), compiler.Concurrency(2))

spec, err = c.FromPackage(&types.Package{Name: "alpine", Category: "seed", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -601,7 +600,7 @@ urls:

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2))
c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -714,7 +713,7 @@ urls:

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2))
c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -831,7 +830,7 @@ urls:

Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(6))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2))
c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -969,7 +968,7 @@ urls:
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
Expect(len(generalRecipeNewRepo.GetDatabase().GetPackages())).To(Equal(3))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), options.Concurrency(2))
c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(), compiler.Concurrency(2))
c2 := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipeNewRepo.GetDatabase())

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expand Down Expand Up @@ -1107,8 +1106,8 @@ urls:
c := compiler.NewLuetCompiler(
backend.NewSimpleDockerBackend(ctx),
generalRecipe.GetDatabase(),
options.Concurrency(2),
options.WithCompressionType(types.GZip),
compiler.Concurrency(2),
compiler.WithCompressionType(types.GZip),
)

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expand Down Expand Up @@ -1271,8 +1270,8 @@ urls:
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(),
options.Concurrency(2),
options.WithCompressionType(types.GZip))
compiler.Concurrency(2),
compiler.WithCompressionType(types.GZip))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down Expand Up @@ -1380,7 +1379,7 @@ urls:
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))

c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(ctx), generalRecipe.GetDatabase(),
options.WithCompressionType(types.GZip))
compiler.WithCompressionType(types.GZip))

spec, err := c.FromPackage(&types.Package{Name: "b", Category: "test", Version: "1.0"})
Expect(err).ToNot(HaveOccurred())
Expand Down

0 comments on commit c363c91

Please sign in to comment.