try locking alpm db

This commit is contained in:
2021-08-31 21:13:22 +02:00
parent 6f8d0cd68e
commit eb5df207a2
2 changed files with 5 additions and 0 deletions

View File

@@ -523,11 +523,13 @@ func (b *BuildManager) syncWorker() {
} }
// fetch updates between sync runs // fetch updates between sync runs
b.alpmMutex.Lock()
check(alpmHandle.Release()) check(alpmHandle.Release())
setupChroot() setupChroot()
var err error var err error
alpmHandle, err = initALPM(filepath.Join(conf.Basedir.Chroot, pristineChroot), filepath.Join(conf.Basedir.Chroot, pristineChroot, "/var/lib/pacman")) alpmHandle, err = initALPM(filepath.Join(conf.Basedir.Chroot, pristineChroot), filepath.Join(conf.Basedir.Chroot, pristineChroot, "/var/lib/pacman"))
check(err) check(err)
b.alpmMutex.Unlock()
pkgBuilds, err := Glob(filepath.Join(conf.Basedir.Upstream, "/**/PKGBUILD")) pkgBuilds, err := Glob(filepath.Join(conf.Basedir.Upstream, "/**/PKGBUILD"))
check(err) check(err)

View File

@@ -61,6 +61,7 @@ type BuildManager struct {
failedMutex sync.RWMutex failedMutex sync.RWMutex
buildProcesses []*os.Process buildProcesses []*os.Process
buildProcMutex sync.RWMutex buildProcMutex sync.RWMutex
alpmMutex sync.RWMutex
} }
type Conf struct { type Conf struct {
@@ -498,7 +499,9 @@ func isMirrorLatest(h *alpm.Handle, buildPkg *BuildPackage) (bool, alpm.IPackage
allDepends = append(allDepends, buildPkg.Srcinfo.MakeDepends...) allDepends = append(allDepends, buildPkg.Srcinfo.MakeDepends...)
for _, dep := range allDepends { for _, dep := range allDepends {
buildManager.alpmMutex.Lock()
pkg, err := dbs.FindSatisfier(dep.Value) pkg, err := dbs.FindSatisfier(dep.Value)
buildManager.alpmMutex.Unlock()
if err != nil { if err != nil {
return false, nil, "", UnableToSatisfyError{err} return false, nil, "", UnableToSatisfyError{err}
} }