This commit is contained in:
itexpert228 2026-03-15 16:56:22 +03:00
parent 1742b26f0b
commit 305f316250
No known key found for this signature in database

View file

@ -1,26 +1,44 @@
package resolver package resolver
import "sync" import (
"fmt"
"log"
"sync"
)
var ( var (
globalResolver *FastResolver globalResolver *FastResolver
resolverOnce sync.Once resolverOnce sync.Once
resolverErr error
) )
// GetGlobalResolver returns singleton resolver instance // GetGlobalResolver returns a singleton FastResolver instance.
// Sources.xz will only be parsed once per process.
func GetGlobalResolver(cacheDir, mirror, suite, component string) (*FastResolver, error) { func GetGlobalResolver(cacheDir, mirror, suite, component string) (*FastResolver, error) {
var err error
resolverOnce.Do(func() { resolverOnce.Do(func() {
log.Println("[resolver] Initializing global resolver (loading package index)")
r := NewFastResolver(cacheDir) r := NewFastResolver(cacheDir)
err = r.LoadIndex(mirror, suite, component) if err := r.LoadIndex(mirror, suite, component); err != nil {
if err != nil { resolverErr = fmt.Errorf("failed to load package index: %w", err)
return return
} }
globalResolver = r globalResolver = r
log.Println("[resolver] Global resolver initialized successfully")
}) })
return globalResolver, err if resolverErr != nil {
return nil, resolverErr
}
if globalResolver == nil {
return nil, fmt.Errorf("resolver initialization failed")
}
return globalResolver, nil
} }