avoid building packages twice if they already exist

This commit is contained in:
Giovanni Harting 2024-03-10 13:47:24 +01:00
parent 0ca90c55bf
commit 7f2d7f6251
1 changed files with 14 additions and 3 deletions

View File

@ -112,6 +112,15 @@ func (p *ProtoPackage) build(ctx context.Context) (time.Duration, error) {
p.Version = constructVersion(p.Srcinfo.Pkgver, p.Srcinfo.Pkgrel, p.Srcinfo.Epoch)
p.DBPackage = p.DBPackage.Update().SetPackages(packages2slice(p.Srcinfo.Packages)).SaveX(ctx)
repoVersion, err := p.repoVersion()
if err == nil {
if alpm.VerCmp(repoVersion, p.Version) > 0 {
log.Infof("skipped %s: package already built", p.Srcinfo.Pkgbase)
p.DBPackage = p.DBPackage.Update().SetStatus(dbpackage.StatusLatest).SetTagRev(p.State.TagRev).SaveX(ctx)
return time.Since(start), err
}
}
// skip haskell packages, since they cannot be optimized currently (no -O3 & march has no effect as far as I know)
if Contains(p.Srcinfo.MakeDepends, "ghc") || Contains(p.Srcinfo.MakeDepends, "haskell-ghc") ||
Contains(p.Srcinfo.Depends, "ghc") || Contains(p.Srcinfo.Depends, "haskell-ghc") {
@ -122,14 +131,16 @@ func (p *ProtoPackage) build(ctx context.Context) (time.Duration, error) {
isLatest, local, syncVersion, err := p.isMirrorLatest(alpmHandle)
if err != nil {
switch err.(type) {
var multipleStateFilesError MultipleStateFilesError
var unableToSatisfyError UnableToSatisfyError
switch {
default:
return time.Since(start), fmt.Errorf("error solving deps: %w", err)
case MultipleStateFilesError:
case errors.As(err, &multipleStateFilesError):
log.Infof("skipped %s: multiple PKGBUILDs for dependency found: %v", p.Srcinfo.Pkgbase, err)
p.DBPackage = p.DBPackage.Update().SetStatus(dbpackage.StatusSkipped).SetSkipReason("multiple PKGBUILD for dep. found").SaveX(ctx)
return time.Since(start), err
case UnableToSatisfyError:
case errors.As(err, &unableToSatisfyError):
log.Infof("skipped %s: unable to resolve dependencies: %v", p.Srcinfo.Pkgbase, err)
p.DBPackage = p.DBPackage.Update().SetStatus(dbpackage.StatusSkipped).SetSkipReason("unable to resolve dependencies").SaveX(ctx)
return time.Since(start), ErrorNotEligible