diff --git a/main.go b/main.go index 35afe61..261f44e 100644 --- a/main.go +++ b/main.go @@ -216,9 +216,8 @@ func (b *BuildManager) buildWorker(id int, march string) { for _, file := range pkgFiles { cmd = exec.Command("gpg", "--batch", "--detach-sign", file) res, err := cmd.CombinedOutput() - log.Debug(string(res)) if err != nil { - log.Warningf("Failed to sign %s: %s", pkg.Pkgbase, err) + log.Warningf("Failed to sign %s (%s): %s", pkg.Pkgbase, err, string(res)) b.buildWG.Done() continue } @@ -228,7 +227,7 @@ func (b *BuildManager) buildWorker(id int, march string) { check(err) for _, file := range copyFiles { - check(os.MkdirAll(filepath.Join(conf.Basedir.Work, waitingDir, pkg.FullRepo), 755)) + check(os.MkdirAll(filepath.Join(conf.Basedir.Work, waitingDir, pkg.FullRepo), 0755)) _, err = copyFile(file, filepath.Join(conf.Basedir.Work, waitingDir, pkg.FullRepo, filepath.Base(file))) if err != nil { check(err) @@ -744,10 +743,12 @@ func (b *BuildManager) syncWorker() { b.parseWG.Wait() b.buildWG.Wait() - for _, repo := range repos { - err = movePackagesLive(repo) - if err != nil { - log.Errorf("[%s] Error moving packages live: %v", repo, err) + if !b.exit { + for _, repo := range repos { + err = movePackagesLive(repo) + if err != nil { + log.Errorf("[%s] Error moving packages live: %v", repo, err) + } } } diff --git a/utils.go b/utils.go index bd9ae1d..5413714 100644 --- a/utils.go +++ b/utils.go @@ -415,6 +415,15 @@ func (p *BuildPackage) prepareKernelPatches() error { } func movePackagesLive(fullRepo string) error { + // make sure no old builds get moved + cmd := exec.Command("paccache", "-rc", filepath.Join(conf.Basedir.Work, waitingDir, fullRepo), "-k", "1") + res, err := cmd.CombinedOutput() + log.Debug(string(res)) + check(err) + + march := strings.Join(strings.Split(fullRepo, "-")[1:], "-") + repo := strings.Split(fullRepo, "-")[0] + pkgFiles, err := filepath.Glob(filepath.Join(conf.Basedir.Work, waitingDir, fullRepo, "*.pkg.tar.zst")) if err != nil { return err @@ -424,7 +433,7 @@ func movePackagesLive(fullRepo string) error { for _, file := range pkgFiles { pkg := Package(file) - dbpkg, err := pkg.DBPackage() + dbpkg, err := pkg.DBPackageIsolated(march, dbpackage.Repository(repo)) if err != nil { return err } @@ -698,12 +707,16 @@ func setupChroot() error { } func (path *Package) DBPackage() (*ent.DbPackage, error) { + return path.DBPackageIsolated(path.MArch(), path.Repo()) +} + +func (path *Package) DBPackageIsolated(march string, repo dbpackage.Repository) (*ent.DbPackage, error) { dbPkg, err := db.DbPackage.Query().Where(func(s *sql.Selector) { s.Where( sql.And( sqljson.ValueContains(dbpackage.FieldPackages, path.Name()), - sql.EQ(dbpackage.FieldMarch, path.MArch()), - sql.EQ(dbpackage.FieldRepository, path.Repo())), + sql.EQ(dbpackage.FieldMarch, march), + sql.EQ(dbpackage.FieldRepository, repo)), ) }).Only(context.Background()) if err != nil { @@ -807,7 +820,7 @@ func housekeeping(repo string, wg *sync.WaitGroup) error { repoVer, err := pkg.repoVersion() if err == nil && alpm.VerCmp(repoVer, dbPkg.RepoVersion) != 0 { log.Infof("[HK/%s/%s] update %s->%s in db", pkg.FullRepo, pkg.Pkgbase, dbPkg.RepoVersion, repoVer) - pkg.DbPackage, err = pkg.DbPackage.Update().SetRepoVersion(repoVer).Save(context.Background()) + pkg.DbPackage, err = pkg.DbPackage.Update().SetRepoVersion(repoVer).ClearHash().Save(context.Background()) if err != nil { return err }