From 7f89068f26a934daf7e3104b8486f2ffbaa2847e Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sat, 2 May 2026 03:32:43 +0900 Subject: [PATCH] cmd/pkgserver: use IR cache for ident This removes requirement to open full cache. Signed-off-by: Ophestra --- cmd/pkgserver/index.go | 7 ++++--- cmd/pkgserver/main.go | 28 ++++------------------------ 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/cmd/pkgserver/index.go b/cmd/pkgserver/index.go index 1dcdd27f..536fd83a 100644 --- a/cmd/pkgserver/index.go +++ b/cmd/pkgserver/index.go @@ -50,7 +50,7 @@ type metadata struct { } // populate deterministically populates packageIndex, optionally with a report. -func (index *packageIndex) populate(cache *pkg.Cache, report *rosa.Report) (err error) { +func (index *packageIndex) populate(report *rosa.Report) (err error) { if report != nil { defer report.HandleAccess(&err)() index.handleAccess = report.HandleAccess @@ -58,6 +58,7 @@ func (index *packageIndex) populate(cache *pkg.Cache, report *rosa.Report) (err var work [rosa.PresetUnexportedStart]*metadata index.names = make(map[string]*metadata) + ir := pkg.NewIR() for p := range rosa.PresetUnexportedStart { m := metadata{ p: p, @@ -72,8 +73,8 @@ func (index *packageIndex) populate(cache *pkg.Cache, report *rosa.Report) (err m.Version = "" } - if cache != nil && report != nil { - id := cache.Ident(rosa.Std.Load(p)) + if report != nil { + id := ir.Ident(rosa.Std.Load(p)) m.ids = pkg.Encode(id.Value()) m.status, m.Size = report.ArtifactOf(id) m.HasReport = m.Size >= 0 diff --git a/cmd/pkgserver/main.go b/cmd/pkgserver/main.go index 6889dfe1..c1ca4c94 100644 --- a/cmd/pkgserver/main.go +++ b/cmd/pkgserver/main.go @@ -10,12 +10,9 @@ import ( "syscall" "time" - "hakurei.app/check" "hakurei.app/cmd/pkgserver/internal/ui" "hakurei.app/command" - "hakurei.app/internal/pkg" "hakurei.app/internal/rosa" - "hakurei.app/message" ) const shutdownTimeout = 15 * time.Second @@ -25,17 +22,14 @@ func main() { log.SetPrefix("pkgserver: ") var ( - flagBaseDir string - flagAddr string + flagAddr string ) ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP) defer stop() - msg := message.New(log.Default()) c := command.New(os.Stderr, log.Printf, "pkgserver", func(args []string) error { var ( - cache *pkg.Cache report *rosa.Report ) switch len(args) { @@ -43,17 +37,8 @@ func main() { break case 1: - baseDir, err := check.NewAbs(flagBaseDir) - if err != nil { - return err - } - - cache, err = pkg.Open(ctx, msg, 0, 0, 0, baseDir) - if err != nil { - return err - } - defer cache.Close() - + var err error + rosa.DropCaches(rosa.OptLLVMNoLTO) report, err = rosa.OpenReport(args[0]) if err != nil { return err @@ -61,12 +46,11 @@ func main() { default: return errors.New("pkgserver requires 1 argument") - } var index packageIndex index.search = make(searchCache) - if err := index.populate(cache, report); err != nil { + if err := index.populate(report); err != nil { return err } ticker := time.NewTicker(1 * time.Minute) @@ -98,10 +82,6 @@ func main() { }() return server.ListenAndServe() }).Flag( - &flagBaseDir, - "b", command.StringFlag(""), - "base directory for cache", - ).Flag( &flagAddr, "addr", command.StringFlag(":8067"), "TCP network address to listen on",