mirror of
https://github.com/mudler/luet.git
synced 2025-09-07 10:10:17 +00:00
Small fixes and enhance output
Fixes a small issue with the Spinner which prevented to update the spinner style. Also respect the temp folders of the output when extracting the rootfs.
This commit is contained in:
@@ -78,7 +78,7 @@ func initConfig() {
|
||||
if err := viper.ReadInConfig(); err == nil {
|
||||
Info("Using config file:", viper.ConfigFileUsed())
|
||||
} else {
|
||||
Error(err)
|
||||
Warning(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -47,14 +47,16 @@ func (*SimpleDocker) BuildImage(opts compiler.CompilerBackendOptions) error {
|
||||
Spinner(24)
|
||||
defer SpinnerStop()
|
||||
|
||||
Debug(" 🐋 Building image "+name+" - running docker with: ", buildarg)
|
||||
Debug(" 🐋 Building image " + name)
|
||||
cmd := exec.Command("docker", buildarg...)
|
||||
cmd.Dir = path
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed building image: "+string(out))
|
||||
}
|
||||
Info(string(out))
|
||||
Info(" 🐋 Building image " + name + " done")
|
||||
|
||||
//Info(string(out))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -62,13 +64,13 @@ func (*SimpleDocker) CopyImage(src, dst string) error {
|
||||
Spinner(24)
|
||||
defer SpinnerStop()
|
||||
|
||||
Debug(" 🐋 Tagging image - running docker with: ", src, dst)
|
||||
Debug(" 🐋 Tagging image:", src, "->", dst)
|
||||
cmd := exec.Command("docker", "tag", src, dst)
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed tagging image: "+string(out))
|
||||
}
|
||||
Info(string(out))
|
||||
Info(" 🐋 Tagged image:", src, "->", dst)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -78,13 +80,13 @@ func (*SimpleDocker) DownloadImage(opts compiler.CompilerBackendOptions) error {
|
||||
Spinner(24)
|
||||
defer SpinnerStop()
|
||||
|
||||
Debug(" 🐋 Downloading image "+name+" - running docker with: ", buildarg)
|
||||
Debug(" 🐋 Downloading image " + name)
|
||||
cmd := exec.Command("docker", buildarg...)
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed building image: "+string(out))
|
||||
}
|
||||
Info(string(out))
|
||||
Info(" 🐋 Downloaded image:", name)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -97,7 +99,8 @@ func (*SimpleDocker) RemoveImage(opts compiler.CompilerBackendOptions) error {
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed removing image: "+string(out))
|
||||
}
|
||||
Info(string(out))
|
||||
Info(" 🐋 Removed image:", name)
|
||||
//Info(string(out))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -121,13 +124,13 @@ func (*SimpleDocker) ExportImage(opts compiler.CompilerBackendOptions) error {
|
||||
buildarg := []string{"save", name, "-o", path}
|
||||
Spinner(24)
|
||||
defer SpinnerStop()
|
||||
Debug(" 🐋 Saving image "+name+" - running docker with: ", buildarg)
|
||||
Debug(" 🐋 Saving image " + name)
|
||||
out, err := exec.Command("docker", buildarg...).CombinedOutput()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed exporting image: "+string(out))
|
||||
}
|
||||
|
||||
Info(string(out))
|
||||
Info(" 🐋 Exported image:", name)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -139,7 +142,7 @@ func (*SimpleDocker) ExtractRootfs(opts compiler.CompilerBackendOptions, keepPer
|
||||
src := opts.SourcePath
|
||||
dst := opts.Destination
|
||||
|
||||
rootfs, err := ioutil.TempDir(os.TempDir(), "rootfs")
|
||||
rootfs, err := ioutil.TempDir(dst, "tmprootfs")
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Error met while creating tempdir for rootfs")
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
package compiler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@@ -189,6 +190,10 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage
|
||||
}
|
||||
|
||||
func (cs *LuetCompiler) packageFromImage(p CompilationSpec, tag string, keepPermissions bool) (Artifact, error) {
|
||||
pkgTag := "📦 " + p.GetPackage().GetName()
|
||||
|
||||
Info(pkgTag, " 🍩 Build starts 🔨 🔨 🔨 ")
|
||||
|
||||
builderOpts := CompilerBackendOptions{
|
||||
ImageName: p.GetImage(),
|
||||
Destination: p.Rel(p.GetPackage().GetFingerPrint() + ".image.tar"),
|
||||
@@ -225,12 +230,13 @@ func (cs *LuetCompiler) packageFromImage(p CompilationSpec, tag string, keepPerm
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Error met while creating package archive")
|
||||
}
|
||||
return NewPackageArtifact(p.Rel(p.GetPackage().GetFingerPrint() + ".package.tar")), nil
|
||||
|
||||
Info(pkgTag, " 🎉 Done")
|
||||
return NewPackageArtifact(p.Rel(p.GetPackage().GetFingerPrint() + ".package.tar")), nil
|
||||
}
|
||||
|
||||
func (cs *LuetCompiler) Compile(concurrency int, keepPermissions bool, p CompilationSpec) (Artifact, error) {
|
||||
Debug(" 📦 Compiling " + p.GetPackage().GetName())
|
||||
Info("📦 Compiling", p.GetPackage().GetName(), "version", p.GetPackage().GetVersion(), ".... ☕")
|
||||
|
||||
err := cs.Tree().ResolveDeps(concurrency) // FIXME: When done in parallel, this could be done on top before starting
|
||||
if err != nil {
|
||||
@@ -278,11 +284,22 @@ func (cs *LuetCompiler) Compile(concurrency int, keepPermissions bool, p Compila
|
||||
departifacts := []Artifact{} // TODO: Return this somehow
|
||||
deperrs := []error{}
|
||||
var lastHash string
|
||||
Info(" 📦 Build dependencies: ( target "+p.GetPackage().GetName()+")", dependencies.Explain())
|
||||
depsN := 0
|
||||
currentN := 0
|
||||
|
||||
Info("🌲 Build dependencies for " + p.GetPackage().GetName())
|
||||
for _, assertion := range dependencies { //highly dependent on the order
|
||||
if assertion.Value && assertion.Package.Flagged() {
|
||||
depsN++
|
||||
Info(" ⤷", assertion.Package.GetName(), "🍃", assertion.Package.GetVersion(), "(", assertion.Package.GetCategory(), ")")
|
||||
}
|
||||
}
|
||||
|
||||
for _, assertion := range dependencies { //highly dependent on the order
|
||||
if assertion.Value && assertion.Package.Flagged() {
|
||||
Info("( 📦 target "+p.GetPackage().GetName()+") Building", assertion.Package.GetName())
|
||||
currentN++
|
||||
pkgTag := fmt.Sprintf("📦 %d/%d %s ⤑ %s", currentN, depsN, p.GetPackage().GetName(), assertion.Package.GetName())
|
||||
Info(pkgTag, " 🏗 Building dependency")
|
||||
compileSpec, err := cs.FromPackage(assertion.Package)
|
||||
if err != nil {
|
||||
return nil, errors.New("Error while generating compilespec for " + assertion.Package.GetName())
|
||||
@@ -301,8 +318,8 @@ func (cs *LuetCompiler) Compile(concurrency int, keepPermissions bool, p Compila
|
||||
|
||||
buildImageHash := "luet/cache:" + nthsolution.Order(depPack.GetFingerPrint()).Drop(depPack).AssertionHash()
|
||||
currentPackageImageHash := "luet/cache:" + nthsolution.Order(depPack.GetFingerPrint()).AssertionHash()
|
||||
Debug("( 📦"+p.GetPackage().GetName()+") 🐋 Builder image name:", buildImageHash)
|
||||
Debug("( 📦 "+p.GetPackage().GetName()+") 🐋 Package image name:", currentPackageImageHash)
|
||||
Debug(pkgTag, " ⤷ 🐋 Builder image name", buildImageHash)
|
||||
Debug(pkgTag, " ⤷ 🐋 Package image name", currentPackageImageHash)
|
||||
|
||||
lastHash = currentPackageImageHash
|
||||
if compileSpec.GetImage() != "" {
|
||||
@@ -317,13 +334,14 @@ func (cs *LuetCompiler) Compile(concurrency int, keepPermissions bool, p Compila
|
||||
continue
|
||||
}
|
||||
|
||||
Debug(" 📦 (" + p.GetPackage().GetName() + ") Compiling " + compileSpec.GetPackage().GetFingerPrint() + " from image")
|
||||
Debug(pkgTag, " 🍰 Compiling "+compileSpec.GetPackage().GetFingerPrint()+" from image 🐋")
|
||||
artifact, err := cs.compileWithImage(compileSpec.GetImage(), buildImageHash, currentPackageImageHash, concurrency, keepPermissions, compileSpec)
|
||||
if err != nil {
|
||||
deperrs = append(deperrs, err)
|
||||
break // stop at first error
|
||||
}
|
||||
departifacts = append(departifacts, artifact)
|
||||
Info(pkgTag, "💥 Done")
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -334,9 +352,10 @@ func (cs *LuetCompiler) Compile(concurrency int, keepPermissions bool, p Compila
|
||||
// break // stop at first error
|
||||
}
|
||||
departifacts = append(departifacts, artifact)
|
||||
Info(pkgTag, "💥 Done")
|
||||
}
|
||||
}
|
||||
Debug(" 📦 ("+p.GetPackage().GetName()+") Building target from", lastHash)
|
||||
Info("📦", p.GetPackage().GetName(), "🌪 Building package target from:", lastHash)
|
||||
|
||||
return cs.compileWithImage(lastHash, "", "", concurrency, keepPermissions, p)
|
||||
}
|
||||
|
@@ -25,6 +25,7 @@ func Spinner(i int) {
|
||||
if s == nil {
|
||||
s = spinner.New(spinner.CharSets[i], 100*time.Millisecond) // Build our new spinner
|
||||
}
|
||||
s.UpdateCharSet(spinner.CharSets[i])
|
||||
enabled = true
|
||||
s.Start() // Start the spinner
|
||||
}
|
||||
@@ -42,7 +43,9 @@ func SpinnerText(suffix, prefix string) {
|
||||
func SpinnerStop() {
|
||||
m.Lock()
|
||||
defer m.Unlock()
|
||||
if s != nil {
|
||||
s.Stop()
|
||||
}
|
||||
enabled = false
|
||||
}
|
||||
|
||||
@@ -55,13 +58,13 @@ func msg(level string, msg ...interface{}) {
|
||||
var levelMsg string
|
||||
switch level {
|
||||
case "warning":
|
||||
levelMsg = Bold(Yellow(message)).BgBlack().String()
|
||||
levelMsg = Bold(Yellow("🌩 " + message)).BgBlack().String()
|
||||
case "debug":
|
||||
levelMsg = Bold(White(message)).BgBlack().String()
|
||||
levelMsg = White(message).BgBlack().String()
|
||||
case "info":
|
||||
levelMsg = Bold(Blue(message)).BgBlack().String()
|
||||
levelMsg = Bold(White(message)).BgBlack().String()
|
||||
case "error":
|
||||
levelMsg = Bold(Red(message)).BgBlack().String()
|
||||
levelMsg = Bold(Red("💣 " + message + "🔥")).BgBlack().String()
|
||||
}
|
||||
|
||||
if enabled {
|
||||
|
@@ -91,7 +91,7 @@ func (gt *DefaultTree) FindPackage(pack pkg.Package) (pkg.Package, error) {
|
||||
}
|
||||
|
||||
func (gb *DefaultTree) updatePackage(p pkg.Package) error {
|
||||
Debug("Calculating deps for", p.GetName())
|
||||
Debug("🔧 Calculating deps for", p.GetName())
|
||||
for i, r := range p.GetRequires() {
|
||||
foundPackage, err := gb.FindPackage(r)
|
||||
if err == nil {
|
||||
@@ -106,7 +106,7 @@ func (gb *DefaultTree) updatePackage(p pkg.Package) error {
|
||||
}
|
||||
}
|
||||
|
||||
Debug("Walking conflicts for", p.GetName())
|
||||
Debug("🔍 Walking conflicts for", p.GetName())
|
||||
for i, r := range p.GetConflicts() {
|
||||
foundPackage, err := gb.FindPackage(r)
|
||||
if err == nil {
|
||||
@@ -120,14 +120,14 @@ func (gb *DefaultTree) updatePackage(p pkg.Package) error {
|
||||
Warning("Unmatched conflict for", r.GetFingerPrint())
|
||||
}
|
||||
}
|
||||
Debug("Finished processing", p.GetName())
|
||||
Debug("💫 Finished processing", p.GetName())
|
||||
|
||||
if err := gb.GetPackageSet().UpdatePackage(p); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
gb.UpdateWorldPackage(p)
|
||||
Debug("Update done", p.GetName())
|
||||
//Debug("Update done", p.GetName())
|
||||
// Debug("Triggering propagation", p.GetName())
|
||||
|
||||
// Debug(" "+p.GetName(), "Deps ")
|
||||
|
Reference in New Issue
Block a user