minor context refactor; add metrics

This commit is contained in:
2025-02-22 03:02:25 +01:00
parent 1c90e20a10
commit 8784e63a9d
11 changed files with 211 additions and 115 deletions

View File

@@ -465,7 +465,7 @@ func (p *ProtoPackage) importKeys() error {
return nil
}
func (p *ProtoPackage) isAvailable(h *alpm.Handle) bool {
func (p *ProtoPackage) isAvailable(ctx context.Context, h *alpm.Handle) bool {
dbs, err := h.SyncDBs()
if err != nil {
return false
@@ -481,7 +481,7 @@ func (p *ProtoPackage) isAvailable(h *alpm.Handle) bool {
case p.DBPackage != nil && len(p.DBPackage.Packages) > 0:
pkg, err = dbs.FindSatisfier(p.DBPackage.Packages[0])
default:
cmd := exec.Command("unbuffer", "pacsift", "--exact", "--base="+p.Pkgbase, "--repo="+p.Repo.String(), //nolint:gosec
cmd := exec.CommandContext(ctx, "unbuffer", "pacsift", "--exact", "--base="+p.Pkgbase, "--repo="+p.Repo.String(), //nolint:gosec
"--sysroot="+filepath.Join(conf.Basedir.Work, chrootDir, pristineChroot))
var res []byte
res, err = cmd.Output()
@@ -508,7 +508,10 @@ func (p *ProtoPackage) isAvailable(h *alpm.Handle) bool {
}
if p.DBPackage != nil {
p.DBPackage = p.DBPackage.Update().SetPackages(splitPkgs).SaveX(context.Background())
p.DBPackage, err = p.DBPackage.Update().SetPackages(splitPkgs).Save(ctx)
if err != nil {
return false
}
}
pkg, err = dbs.FindSatisfier(splitPkgs[0])
} else {
@@ -651,8 +654,8 @@ func (p *ProtoPackage) findPkgFiles() error {
if p.DBPackage != nil {
realPkgs = append(realPkgs, p.DBPackage.Packages...)
} else {
for _, realPkg := range p.Srcinfo.Packages {
realPkgs = append(realPkgs, realPkg.Pkgname)
for i := 0; i < len(p.Srcinfo.Packages); i++ {
realPkgs = append(realPkgs, p.Srcinfo.Packages[i].Pkgname)
}
}
@@ -671,7 +674,7 @@ func (p *ProtoPackage) findPkgFiles() error {
return nil
}
func (p *ProtoPackage) toDBPackage(create bool) error {
func (p *ProtoPackage) toDBPackage(ctx context.Context, create bool) error {
if p.DBPackage != nil {
return nil
}
@@ -680,13 +683,16 @@ func (p *ProtoPackage) toDBPackage(create bool) error {
dbpackage.Pkgbase(p.Pkgbase),
dbpackage.March(p.March),
dbpackage.RepositoryEQ(p.Repo),
).Only(context.Background())
).Only(ctx)
if err != nil && ent.IsNotFound(err) && create {
dbPkg = db.DBPackage.Create().
dbPkg, err = db.DBPackage.Create().
SetPkgbase(p.Pkgbase).
SetMarch(p.March).
SetRepository(p.Repo).
SaveX(context.Background())
Save(ctx)
if err != nil {
return err
}
} else if err != nil && !ent.IsNotFound(err) {
return err
}