From ae776220260f6d76d7dd447eb17c358a57124f10 Mon Sep 17 00:00:00 2001 From: visualfc Date: Fri, 7 Jun 2024 21:02:01 +0800 Subject: [PATCH] build: build runtime check skip --- internal/build/build.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/build/build.go b/internal/build/build.go index afd731cc..a7e910d7 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -145,11 +145,15 @@ func Do(args []string, conf *Config) { return rt[1].Types }) - pkgs := buildAllPkgs(prog, initial, mode, verbose) + pkgs := buildAllPkgs(prog, initial, nil, mode, verbose) var runtimeFiles []string if needRt { - dpkg := buildAllPkgs(prog, rt[:1], mode, verbose) + skip := make(map[string]bool) + for _, v := range pkgs { + skip[v.PkgPath] = true + } + dpkg := buildAllPkgs(prog, rt[:1], skip, mode, verbose) for _, pkg := range dpkg { if !strings.HasSuffix(pkg.ExportFile, ".ll") { continue @@ -188,7 +192,7 @@ func isNeedRuntimeOrPyInit(pkg *packages.Package) (needRuntime, needPyInit bool) return } -func buildAllPkgs(prog llssa.Program, initial []*packages.Package, mode Mode, verbose bool) (pkgs []*aPackage) { +func buildAllPkgs(prog llssa.Program, initial []*packages.Package, skip map[string]bool, mode Mode, verbose bool) (pkgs []*aPackage) { // Create SSA-form program representation. ssaProg, pkgs, errPkgs := allPkgs(initial, ssa.SanityCheckFunctions) ssaProg.Build() @@ -200,6 +204,10 @@ func buildAllPkgs(prog llssa.Program, initial []*packages.Package, mode Mode, ve } for _, aPkg := range pkgs { pkg := aPkg.Package + if skip[pkg.PkgPath] { + pkg.ExportFile = "" + continue + } switch kind, param := cl.PkgKindOf(pkg.Types); kind { case cl.PkgDeclOnly: // skip packages that only contain declarations