mirror of
https://github.com/mudler/luet.git
synced 2025-07-17 08:52:14 +00:00
Fixup spinner data race
Add spinner lock
This commit is contained in:
parent
92e73051a0
commit
b3e3abec8f
2
go.mod
2
go.mod
@ -7,7 +7,7 @@ require (
|
|||||||
github.com/Sabayon/pkgs-checker v0.7.2
|
github.com/Sabayon/pkgs-checker v0.7.2
|
||||||
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef
|
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef
|
||||||
github.com/asdine/storm v0.0.0-20190418133842-e0f77eada154
|
github.com/asdine/storm v0.0.0-20190418133842-e0f77eada154
|
||||||
github.com/briandowns/spinner v1.7.0
|
github.com/briandowns/spinner v1.12.1-0.20201220203425-e201aaea0a31
|
||||||
github.com/cavaliercoder/grab v1.0.1-0.20201108051000-98a5bfe305ec
|
github.com/cavaliercoder/grab v1.0.1-0.20201108051000-98a5bfe305ec
|
||||||
github.com/containerd/containerd v1.4.1-0.20201117152358-0edc412565dc
|
github.com/containerd/containerd v1.4.1-0.20201117152358-0edc412565dc
|
||||||
github.com/crillab/gophersat v1.3.2-0.20201023142334-3fc2ac466765
|
github.com/crillab/gophersat v1.3.2-0.20201023142334-3fc2ac466765
|
||||||
|
4
go.sum
4
go.sum
@ -144,8 +144,8 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm
|
|||||||
github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
|
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
|
||||||
github.com/briandowns/spinner v1.7.0 h1:aan1hBBOoscry2TXAkgtxkJiq7Se0+9pt+TUWaPrB4g=
|
github.com/briandowns/spinner v1.12.1-0.20201220203425-e201aaea0a31 h1:yInAg9pE5qGec5eQ7XdfOTTaGwGxD3bKFVjmD6VKkwc=
|
||||||
github.com/briandowns/spinner v1.7.0/go.mod h1://Zf9tMcxfRUA36V23M6YGEAv+kECGfvpnLTnb8n4XQ=
|
github.com/briandowns/spinner v1.12.1-0.20201220203425-e201aaea0a31/go.mod h1:QOuQk7x+EaDASo80FEXwlwiA+j/PPIcX3FScO+3/ZPQ=
|
||||||
github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk=
|
github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk=
|
||||||
github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
|
github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
|
||||||
github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50=
|
github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50=
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
|
|
||||||
"github.com/mudler/luet/pkg/compiler"
|
"github.com/mudler/luet/pkg/compiler"
|
||||||
"github.com/mudler/luet/pkg/config"
|
"github.com/mudler/luet/pkg/config"
|
||||||
|
. "github.com/mudler/luet/pkg/logger"
|
||||||
|
|
||||||
"github.com/google/go-containerregistry/pkg/crane"
|
"github.com/google/go-containerregistry/pkg/crane"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@ -49,8 +50,14 @@ func NewBackend(s string) compiler.CompilerBackend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runCommand(cmd *exec.Cmd) (string, error) {
|
func runCommand(cmd *exec.Cmd) (string, error) {
|
||||||
|
buffered := !config.LuetCfg.GetGeneral().ShowBuildOutput
|
||||||
|
if buffered {
|
||||||
|
Spinner(22)
|
||||||
|
defer SpinnerStop()
|
||||||
|
}
|
||||||
|
|
||||||
ans := ""
|
ans := ""
|
||||||
writer := NewBackendWriter(!config.LuetCfg.GetGeneral().ShowBuildOutput)
|
writer := NewBackendWriter(buffered)
|
||||||
|
|
||||||
cmd.Stdout = writer
|
cmd.Stdout = writer
|
||||||
cmd.Stderr = writer
|
cmd.Stderr = writer
|
||||||
@ -68,7 +75,7 @@ func runCommand(cmd *exec.Cmd) (string, error) {
|
|||||||
res := cmd.ProcessState.ExitCode()
|
res := cmd.ProcessState.ExitCode()
|
||||||
if res != 0 {
|
if res != 0 {
|
||||||
errMsg := fmt.Sprintf("Failed building image (exiting with %d)", res)
|
errMsg := fmt.Sprintf("Failed building image (exiting with %d)", res)
|
||||||
if !config.LuetCfg.GetGeneral().ShowBuildOutput {
|
if buffered {
|
||||||
errMsg = fmt.Sprintf("Failed building image (exiting with %d): %s",
|
errMsg = fmt.Sprintf("Failed building image (exiting with %d): %s",
|
||||||
res, writer.GetCombinedOutput())
|
res, writer.GetCombinedOutput())
|
||||||
}
|
}
|
||||||
@ -76,7 +83,7 @@ func runCommand(cmd *exec.Cmd) (string, error) {
|
|||||||
return "", errors.Wrap(err, errMsg)
|
return "", errors.Wrap(err, errMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !config.LuetCfg.GetGeneral().ShowBuildOutput {
|
if buffered {
|
||||||
ans = writer.GetCombinedOutput()
|
ans = writer.GetCombinedOutput()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,11 +53,6 @@ func (*SimpleDocker) BuildImage(opts compiler.CompilerBackendOptions) error {
|
|||||||
}
|
}
|
||||||
buildarg := []string{"build", "-f", dockerfileName, "-t", name, context}
|
buildarg := []string{"build", "-f", dockerfileName, "-t", name, context}
|
||||||
|
|
||||||
if !config.LuetCfg.GetGeneral().ShowBuildOutput {
|
|
||||||
Spinner(22)
|
|
||||||
defer SpinnerStop()
|
|
||||||
}
|
|
||||||
|
|
||||||
Info(":whale2: Building image " + name)
|
Info(":whale2: Building image " + name)
|
||||||
cmd := exec.Command("docker", buildarg...)
|
cmd := exec.Command("docker", buildarg...)
|
||||||
cmd.Dir = path
|
cmd.Dir = path
|
||||||
@ -66,10 +61,6 @@ func (*SimpleDocker) BuildImage(opts compiler.CompilerBackendOptions) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if !config.LuetCfg.GetGeneral().ShowBuildOutput {
|
|
||||||
SpinnerStop()
|
|
||||||
}
|
|
||||||
|
|
||||||
Info(":whale: Building image " + name + " done")
|
Info(":whale: Building image " + name + " done")
|
||||||
|
|
||||||
if os.Getenv("DOCKER_SQUASH") == "true" {
|
if os.Getenv("DOCKER_SQUASH") == "true" {
|
||||||
@ -77,7 +68,7 @@ func (*SimpleDocker) BuildImage(opts compiler.CompilerBackendOptions) error {
|
|||||||
var client *docker.Client
|
var client *docker.Client
|
||||||
|
|
||||||
Spinner(22)
|
Spinner(22)
|
||||||
|
defer SpinnerStop()
|
||||||
client, err = docker.NewClientFromEnv()
|
client, err = docker.NewClientFromEnv()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "could not connect to the Docker daemon")
|
return errors.Wrap(err, "could not connect to the Docker daemon")
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/mudler/luet/pkg/compiler"
|
"github.com/mudler/luet/pkg/compiler"
|
||||||
"github.com/mudler/luet/pkg/config"
|
|
||||||
. "github.com/mudler/luet/pkg/logger"
|
. "github.com/mudler/luet/pkg/logger"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@ -48,11 +47,6 @@ func (*SimpleImg) BuildImage(opts compiler.CompilerBackendOptions) error {
|
|||||||
|
|
||||||
Info(":tea: Building image " + name)
|
Info(":tea: Building image " + name)
|
||||||
|
|
||||||
if !config.LuetCfg.GetGeneral().ShowBuildOutput {
|
|
||||||
Spinner(22)
|
|
||||||
defer SpinnerStop()
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd := exec.Command("img", buildarg...)
|
cmd := exec.Command("img", buildarg...)
|
||||||
cmd.Dir = path
|
cmd.Dir = path
|
||||||
_, err := runCommand(cmd)
|
_, err := runCommand(cmd)
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"sync"
|
||||||
. "github.com/mudler/luet/pkg/config"
|
. "github.com/mudler/luet/pkg/config"
|
||||||
|
|
||||||
"github.com/briandowns/spinner"
|
"github.com/briandowns/spinner"
|
||||||
@ -20,7 +21,7 @@ import (
|
|||||||
var s *spinner.Spinner = nil
|
var s *spinner.Spinner = nil
|
||||||
var z *zap.Logger = nil
|
var z *zap.Logger = nil
|
||||||
var aurora Aurora = nil
|
var aurora Aurora = nil
|
||||||
|
var spinnerLock = sync.Mutex{}
|
||||||
func NewSpinner() {
|
func NewSpinner() {
|
||||||
if s == nil {
|
if s == nil {
|
||||||
s = spinner.New(
|
s = spinner.New(
|
||||||
@ -84,6 +85,8 @@ func ZapLogger() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Spinner(i int) {
|
func Spinner(i int) {
|
||||||
|
spinnerLock.Lock()
|
||||||
|
defer spinnerLock.Unlock()
|
||||||
var confLevel int
|
var confLevel int
|
||||||
if LuetCfg.GetGeneral().Debug {
|
if LuetCfg.GetGeneral().Debug {
|
||||||
confLevel = 3
|
confLevel = 3
|
||||||
@ -120,6 +123,8 @@ func SpinnerText(suffix, prefix string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SpinnerStop() {
|
func SpinnerStop() {
|
||||||
|
spinnerLock.Lock()
|
||||||
|
defer spinnerLock.Unlock()
|
||||||
var confLevel int
|
var confLevel int
|
||||||
if LuetCfg.GetGeneral().Debug {
|
if LuetCfg.GetGeneral().Debug {
|
||||||
confLevel = 3
|
confLevel = 3
|
||||||
|
Loading…
Reference in New Issue
Block a user