move the semacquire to the main build loop so that the build order is kept
* a goroutine could start before another !
This commit is contained in:
parent
852af993e6
commit
1dca416f87
|
@ -177,22 +177,22 @@ func (c *BuildCommand) Run(args []string) int {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
limitParallel := semaphore.NewWeighted(cfgParallelBuilds)
|
limitParallel := semaphore.NewWeighted(cfgParallelBuilds)
|
||||||
for _, b := range builds {
|
for i := range builds {
|
||||||
// Increment the waitgroup so we wait for this item to finish properly
|
b := builds[i]
|
||||||
wg.Add(1)
|
|
||||||
|
|
||||||
// Run the build in a goroutine
|
|
||||||
go func(b packer.Build) {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
name := b.Name()
|
name := b.Name()
|
||||||
ui := buildUis[name]
|
ui := buildUis[name]
|
||||||
|
// Increment the waitgroup so we wait for this item to finish properly
|
||||||
|
wg.Add(1)
|
||||||
if err := limitParallel.Acquire(buildCtx, 1); err != nil {
|
if err := limitParallel.Acquire(buildCtx, 1); err != nil {
|
||||||
ui.Error(fmt.Sprintf("Build '%s' failed to acquire semaphore: %s", name, err))
|
ui.Error(fmt.Sprintf("Build '%s' failed to acquire semaphore: %s", name, err))
|
||||||
errors[name] = err
|
errors[name] = err
|
||||||
return
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Run the build in a goroutine
|
||||||
|
go func() {
|
||||||
|
defer wg.Done()
|
||||||
|
|
||||||
defer limitParallel.Release(1)
|
defer limitParallel.Release(1)
|
||||||
|
|
||||||
log.Printf("Starting build run: %s", name)
|
log.Printf("Starting build run: %s", name)
|
||||||
|
@ -207,7 +207,7 @@ func (c *BuildCommand) Run(args []string) int {
|
||||||
artifacts.m[name] = runArtifacts
|
artifacts.m[name] = runArtifacts
|
||||||
artifacts.Unlock()
|
artifacts.Unlock()
|
||||||
}
|
}
|
||||||
}(b)
|
}()
|
||||||
|
|
||||||
if cfgDebug {
|
if cfgDebug {
|
||||||
log.Printf("Debug enabled, so waiting for build to finish: %s", b.Name())
|
log.Printf("Debug enabled, so waiting for build to finish: %s", b.Name())
|
||||||
|
|
Loading…
Reference in New Issue