9 Commits

3 changed files with 37 additions and 10 deletions

14
main.go
View File

@@ -218,6 +218,7 @@ func (b *BuildManager) repoWorker(repo string) {
for {
select {
case pkgL := <-b.repoAdd[repo]:
b.repoWG.Add(1)
toAdd := make([]string, 0)
for _, pkg := range pkgL {
toAdd = append(toAdd, pkg.PkgFiles...)
@@ -263,6 +264,7 @@ func (b *BuildManager) repoWorker(repo string) {
if err != nil {
log.Warningf("Error updating lastupdate: %v", err)
}
b.repoWG.Done()
case pkgL := <-b.repoPurge[repo]:
for _, pkg := range pkgL {
if _, err := os.Stat(filepath.Join(conf.Basedir.Repo, pkg.FullRepo, "os", conf.Arch, pkg.FullRepo) + ".db.tar.xz"); err != nil {
@@ -279,7 +281,13 @@ func (b *BuildManager) repoWorker(repo string) {
var realPkgs []string
for _, filePath := range pkg.PkgFiles {
realPkgs = append(realPkgs, Package(filePath).Name())
if _, err := os.Stat(filePath); err == nil {
realPkgs = append(realPkgs, Package(filePath).Name())
}
}
if len(realPkgs) == 0 {
continue
}
b.repoWG.Add(1)
@@ -293,7 +301,7 @@ func (b *BuildManager) repoWorker(repo string) {
}
if pkg.DbPackage != nil {
_ = pkg.DbPackage.Update().ClearRepoVersion().Exec(context.Background())
_ = pkg.DbPackage.Update().ClearRepoVersion().ClearHash().Exec(context.Background())
}
for _, file := range pkg.PkgFiles {
@@ -408,6 +416,8 @@ func (b *BuildManager) syncWorker(ctx context.Context) error {
eligible, err := pkg.isEligible(ctx)
if err != nil {
log.Infof("Unable to determine status for package %s: %v", pkg.Pkgbase, err)
b.repoPurge[pkg.FullRepo] <- []*ProtoPackage{pkg}
continue
}
if !eligible {
log.Debugf("skipped package %s (%v)", pkg.Pkgbase, err)

View File

@@ -698,9 +698,19 @@ func (p *ProtoPackage) findPkgFiles() error {
return err
}
if p.DbPackage == nil && p.Srcinfo == nil {
return fmt.Errorf("unable to find pkgfiles without dbpkg or srcinfo present")
}
var realPkgs []string
for _, realPkg := range p.DbPackage.Packages {
realPkgs = append(realPkgs, realPkg)
if p.DbPackage != nil {
for _, realPkg := range p.DbPackage.Packages {
realPkgs = append(realPkgs, realPkg)
}
} else {
for _, realPkg := range p.Srcinfo.Packages {
realPkgs = append(realPkgs, realPkg.Pkgname)
}
}
var fPkg []string

View File

@@ -256,12 +256,13 @@ func genQueue(path string) ([]*ProtoPackage, error) {
}
pkgbuilds = append(pkgbuilds, &ProtoPackage{
Pkgbuild: pkgbuild,
Pkgbase: mPkgbuild.PkgBase(),
Repo: dbpackage.Repository(mPkgbuild.Repo()),
March: march,
FullRepo: mPkgbuild.Repo() + "-" + march,
Hash: b3s,
Pkgbuild: pkgbuild,
Pkgbase: mPkgbuild.PkgBase(),
Repo: dbpackage.Repository(mPkgbuild.Repo()),
March: march,
FullRepo: mPkgbuild.Repo() + "-" + march,
Hash: b3s,
DbPackage: dbPkg,
})
}
}
@@ -587,6 +588,12 @@ func housekeeping(repo string, march string, wg *sync.WaitGroup) error {
}
buildManager.repoPurge[fullRepo] <- []*ProtoPackage{pkg}
}
} else if dbPkg.Status == dbpackage.StatusLatest && dbPkg.RepoVersion == "" {
log.Infof("[HK] reseting missing package %s with no repo version", dbPkg.Pkgbase)
err = dbPkg.Update().SetStatus(dbpackage.StatusQueued).ClearHash().ClearRepoVersion().Exec(context.Background())
if err != nil {
return err
}
}
}