diff --git a/main.go b/main.go index 0f6c7ba..fac130b 100644 --- a/main.go +++ b/main.go @@ -168,6 +168,17 @@ func (b *BuildManager) buildWorker(id int, march string) { continue } + if reDepError.Match(out.Bytes()) { + log.Infof("[%s/%s/%s] dep. error detected, rebuilding later", pkg.FullRepo, pkg.Pkgbase, pkg.Version) + pkg.DbPackage.Update().SetStatus(dbpackage.StatusQueued).ExecX(context.Background()) + err = cleanBuildDir(buildDir) + if err != nil { + log.Warningf("[%s/%s/%s] Error removing builddir: %v", pkg.FullRepo, pkg.Pkgbase, pkg.Version, err) + } + b.buildWG.Done() + continue + } + log.Warningf("[%s/%s/%s] Build failed (%d)", pkg.FullRepo, pkg.Pkgbase, pkg.Version, cmd.ProcessState.ExitCode()) check(os.MkdirAll(filepath.Join(conf.Basedir.Repo, logDir, march), 0755)) diff --git a/utils.go b/utils.go index 04e74d4..6a673b1 100644 --- a/utils.go +++ b/utils.go @@ -46,6 +46,7 @@ var ( rePkgSum = regexp.MustCompile(`(?msU)^sha256sums.*=.*\((.+)\)$`) rePkgFile = regexp.MustCompile(`^(.+)(?:-.+){2}-(?:x86_64|any)\.pkg\.tar\.zst(?:\.sig)*$`) reLdError = regexp.MustCompile(`(?mi).*collect2: error: ld returned (\d+) exit status.*`) + reDepError = regexp.MustCompile(`(?m)^error: could not rename .+$`) ) type BuildPackage struct {