mirror of
https://github.com/mudler/luet.git
synced 2025-08-10 19:52:31 +00:00
Merge branch 'build_clean' into develop
This commit is contained in:
commit
d5fd14bceb
@ -36,6 +36,7 @@ var buildCmd = &cobra.Command{
|
|||||||
Short: "build a package or a tree",
|
Short: "build a package or a tree",
|
||||||
Long: `build packages or trees from luet tree definitions. Packages are in [category]/[name]-[version] form`,
|
Long: `build packages or trees from luet tree definitions. Packages are in [category]/[name]-[version] form`,
|
||||||
PreRun: func(cmd *cobra.Command, args []string) {
|
PreRun: func(cmd *cobra.Command, args []string) {
|
||||||
|
viper.BindPFlag("clean", cmd.Flags().Lookup("clean"))
|
||||||
viper.BindPFlag("tree", cmd.Flags().Lookup("tree"))
|
viper.BindPFlag("tree", cmd.Flags().Lookup("tree"))
|
||||||
viper.BindPFlag("destination", cmd.Flags().Lookup("destination"))
|
viper.BindPFlag("destination", cmd.Flags().Lookup("destination"))
|
||||||
viper.BindPFlag("backend", cmd.Flags().Lookup("backend"))
|
viper.BindPFlag("backend", cmd.Flags().Lookup("backend"))
|
||||||
@ -47,6 +48,7 @@ var buildCmd = &cobra.Command{
|
|||||||
},
|
},
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
|
||||||
|
clean := viper.GetBool("clean")
|
||||||
src := viper.GetString("tree")
|
src := viper.GetString("tree")
|
||||||
dst := viper.GetString("destination")
|
dst := viper.GetString("destination")
|
||||||
concurrency := LuetCfg.GetGeneral().Concurrency
|
concurrency := LuetCfg.GetGeneral().Concurrency
|
||||||
@ -90,7 +92,9 @@ var buildCmd = &cobra.Command{
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
Fatal("Error: " + err.Error())
|
Fatal("Error: " + err.Error())
|
||||||
}
|
}
|
||||||
luetCompiler := compiler.NewLuetCompiler(compilerBackend, generalRecipe.GetDatabase())
|
opts := compiler.NewDefaultCompilerOptions()
|
||||||
|
opts.Clean = clean
|
||||||
|
luetCompiler := compiler.NewLuetCompiler(compilerBackend, generalRecipe.GetDatabase(), opts)
|
||||||
luetCompiler.SetConcurrency(concurrency)
|
luetCompiler.SetConcurrency(concurrency)
|
||||||
luetCompiler.SetCompressionType(compiler.CompressionImplementation(compressionType))
|
luetCompiler.SetCompressionType(compiler.CompressionImplementation(compressionType))
|
||||||
if !all {
|
if !all {
|
||||||
@ -163,6 +167,7 @@ func init() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
Fatal(err)
|
Fatal(err)
|
||||||
}
|
}
|
||||||
|
buildCmd.Flags().Bool("clean", true, "Build all packages without considering the packages present in the build directory")
|
||||||
buildCmd.Flags().String("tree", path, "Source luet tree")
|
buildCmd.Flags().String("tree", path, "Source luet tree")
|
||||||
buildCmd.Flags().String("backend", "docker", "backend used (docker,img)")
|
buildCmd.Flags().String("backend", "docker", "backend used (docker,img)")
|
||||||
buildCmd.Flags().Bool("privileged", false, "Privileged (Keep permissions)")
|
buildCmd.Flags().Bool("privileged", false, "Privileged (Keep permissions)")
|
||||||
|
@ -92,6 +92,22 @@ func NewPackageArtifactFromYaml(data []byte) (Artifact, error) {
|
|||||||
return p, err
|
return p, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func LoadArtifactFromYaml(spec CompilationSpec) (Artifact, error) {
|
||||||
|
|
||||||
|
metaFile := spec.GetPackage().GetFingerPrint() + ".metadata.yaml"
|
||||||
|
dat, err := ioutil.ReadFile(spec.Rel(metaFile))
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "Error reading file "+metaFile)
|
||||||
|
}
|
||||||
|
art, err := NewPackageArtifactFromYaml(dat)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "Error writing file "+metaFile)
|
||||||
|
}
|
||||||
|
// It is relative, set it back to abs
|
||||||
|
art.SetPath(spec.Rel(art.GetPath()))
|
||||||
|
return art, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (a *PackageArtifact) SetCompressionType(t CompressionImplementation) {
|
func (a *PackageArtifact) SetCompressionType(t CompressionImplementation) {
|
||||||
a.CompressionType = t
|
a.CompressionType = t
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ var _ = Describe("Artifact", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(nil, generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(nil, generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "enman", Category: "app-admin", Version: "1.4.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "enman", Category: "app-admin", Version: "1.4.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ var _ = Describe("Docker backend", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(nil, generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(nil, generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "enman", Category: "app-admin", Version: "1.4.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "enman", Category: "app-admin", Version: "1.4.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"runtime"
|
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@ -37,15 +36,15 @@ const BuildFile = "build.yaml"
|
|||||||
|
|
||||||
type LuetCompiler struct {
|
type LuetCompiler struct {
|
||||||
*tree.CompilerRecipe
|
*tree.CompilerRecipe
|
||||||
Backend CompilerBackend
|
Backend CompilerBackend
|
||||||
Database pkg.PackageDatabase
|
Database pkg.PackageDatabase
|
||||||
ImageRepository string
|
ImageRepository string
|
||||||
PullFirst, KeepImg bool
|
PullFirst, KeepImg, Clean bool
|
||||||
Concurrency int
|
Concurrency int
|
||||||
CompressionType CompressionImplementation
|
CompressionType CompressionImplementation
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewLuetCompiler(backend CompilerBackend, db pkg.PackageDatabase) Compiler {
|
func NewLuetCompiler(backend CompilerBackend, db pkg.PackageDatabase, opt *CompilerOptions) Compiler {
|
||||||
// The CompilerRecipe will gives us a tree with only build deps listed.
|
// The CompilerRecipe will gives us a tree with only build deps listed.
|
||||||
return &LuetCompiler{
|
return &LuetCompiler{
|
||||||
Backend: backend,
|
Backend: backend,
|
||||||
@ -53,11 +52,12 @@ func NewLuetCompiler(backend CompilerBackend, db pkg.PackageDatabase) Compiler {
|
|||||||
tree.Recipe{Database: db},
|
tree.Recipe{Database: db},
|
||||||
},
|
},
|
||||||
Database: db,
|
Database: db,
|
||||||
ImageRepository: "luet/cache",
|
ImageRepository: opt.ImageRepository,
|
||||||
PullFirst: true,
|
PullFirst: opt.PullFirst,
|
||||||
CompressionType: None,
|
CompressionType: opt.CompressionType,
|
||||||
KeepImg: true,
|
KeepImg: opt.KeepImg,
|
||||||
Concurrency: runtime.NumCPU(),
|
Concurrency: opt.Concurrency,
|
||||||
|
Clean: opt.Clean,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,6 +227,12 @@ func (cs *LuetCompiler) stripIncludesFromRootfs(includes []string, rootfs string
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage string, concurrency int, keepPermissions, keepImg bool, p CompilationSpec) (Artifact, error) {
|
func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage string, concurrency int, keepPermissions, keepImg bool, p CompilationSpec) (Artifact, error) {
|
||||||
|
if !cs.Clean {
|
||||||
|
if art, err := LoadArtifactFromYaml(p); err == nil {
|
||||||
|
Debug("Artifact reloaded. Skipping build")
|
||||||
|
return art, err
|
||||||
|
}
|
||||||
|
}
|
||||||
pkgTag := ":package: " + p.GetPackage().GetName()
|
pkgTag := ":package: " + p.GetPackage().GetName()
|
||||||
|
|
||||||
p.SetSeedImage(image) // In this case, we ignore the build deps as we suppose that the image has them - otherwise we recompose the tree with a solver,
|
p.SetSeedImage(image) // In this case, we ignore the build deps as we suppose that the image has them - otherwise we recompose the tree with a solver,
|
||||||
@ -380,6 +386,12 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cs *LuetCompiler) packageFromImage(p CompilationSpec, tag string, keepPermissions, keepImg bool, concurrency int) (Artifact, error) {
|
func (cs *LuetCompiler) packageFromImage(p CompilationSpec, tag string, keepPermissions, keepImg bool, concurrency int) (Artifact, error) {
|
||||||
|
if !cs.Clean {
|
||||||
|
if art, err := LoadArtifactFromYaml(p); err == nil {
|
||||||
|
Debug("Artifact reloaded. Skipping build")
|
||||||
|
return art, err
|
||||||
|
}
|
||||||
|
}
|
||||||
pkgTag := ":package: " + p.GetPackage().GetName()
|
pkgTag := ":package: " + p.GetPackage().GetName()
|
||||||
|
|
||||||
Info(pkgTag, " 🍩 Build starts 🔨 🔨 🔨 ")
|
Info(pkgTag, " 🍩 Build starts 🔨 🔨 🔨 ")
|
||||||
|
@ -38,7 +38,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -82,7 +82,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -120,7 +120,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "c", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "c", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -177,7 +177,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "extra", Category: "layer", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "extra", Category: "layer", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -219,7 +219,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -254,7 +254,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -292,7 +292,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "pkgs-checker", Category: "package", Version: "9999"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "pkgs-checker", Category: "package", Version: "9999"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -333,7 +333,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "d", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "d", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -377,7 +377,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "d", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "d", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -419,7 +419,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "extra", Category: "layer", Version: "0.1"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "extra", Category: "layer", Version: "0.1"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -457,7 +457,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(10))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(10))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "vhba", Category: "sys-fs-5.4.2", Version: "20190410"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "vhba", Category: "sys-fs-5.4.2", Version: "20190410"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -496,7 +496,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
|
|
||||||
@ -548,7 +548,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "c", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "c", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -591,7 +591,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "runtime", Category: "layer", Version: "0.1"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "runtime", Category: "layer", Version: "0.1"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -624,7 +624,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(2))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "runtime", Category: "layer", Version: "0.1"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "runtime", Category: "layer", Version: "0.1"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
package compiler
|
package compiler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"runtime"
|
||||||
|
|
||||||
pkg "github.com/mudler/luet/pkg/package"
|
pkg "github.com/mudler/luet/pkg/package"
|
||||||
"github.com/mudler/luet/pkg/solver"
|
"github.com/mudler/luet/pkg/solver"
|
||||||
)
|
)
|
||||||
@ -40,6 +42,25 @@ type CompilerBackendOptions struct {
|
|||||||
Destination string
|
Destination string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CompilerOptions struct {
|
||||||
|
ImageRepository string
|
||||||
|
PullFirst, KeepImg bool
|
||||||
|
Concurrency int
|
||||||
|
CompressionType CompressionImplementation
|
||||||
|
Clean bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDefaultCompilerOptions() *CompilerOptions {
|
||||||
|
return &CompilerOptions{
|
||||||
|
ImageRepository: "luet/cache",
|
||||||
|
PullFirst: true,
|
||||||
|
CompressionType: None,
|
||||||
|
KeepImg: true,
|
||||||
|
Concurrency: runtime.NumCPU(),
|
||||||
|
Clean: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type CompilerBackend interface {
|
type CompilerBackend interface {
|
||||||
BuildImage(CompilerBackendOptions) error
|
BuildImage(CompilerBackendOptions) error
|
||||||
ExportImage(CompilerBackendOptions) error
|
ExportImage(CompilerBackendOptions) error
|
||||||
|
@ -61,7 +61,7 @@ var _ = Describe("Spec", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(1))
|
||||||
|
|
||||||
compiler := NewLuetCompiler(nil, generalRecipe.GetDatabase())
|
compiler := NewLuetCompiler(nil, generalRecipe.GetDatabase(), NewDefaultCompilerOptions())
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "enman", Category: "app-admin", Version: "1.4.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "enman", Category: "app-admin", Version: "1.4.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ var _ = Describe("Installer", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), compiler.NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -160,7 +160,7 @@ urls:
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), compiler.NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -279,7 +279,7 @@ urls:
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))
|
||||||
|
|
||||||
c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), compiler.NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := c.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := c.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@ -393,7 +393,7 @@ urls:
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(4))
|
||||||
|
|
||||||
c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
c := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), compiler.NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := c.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := c.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -47,7 +47,7 @@ var _ = Describe("Repository", func() {
|
|||||||
|
|
||||||
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
Expect(len(generalRecipe.GetDatabase().GetPackages())).To(Equal(3))
|
||||||
|
|
||||||
compiler := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase())
|
compiler := compiler.NewLuetCompiler(backend.NewSimpleDockerBackend(), generalRecipe.GetDatabase(), compiler.NewDefaultCompilerOptions())
|
||||||
|
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Loading…
Reference in New Issue
Block a user