()
| 813 | } |
| 814 | |
| 815 | func (p *Port) checkAllTools() error { |
| 816 | var allTools []string |
| 817 | buildConfig := p.MatchedConfig |
| 818 | for _, nameVersion := range buildConfig.DevDependencies { |
| 819 | port := Port{DevDep: true} |
| 820 | if err := port.Init(p.ctx, nameVersion); err != nil { |
| 821 | return err |
| 822 | } |
| 823 | |
| 824 | allTools = append(allTools, port.MatchedConfig.CheckTools()...) |
| 825 | } |
| 826 | for _, nameVersion := range buildConfig.Dependencies { |
| 827 | port := Port{DevDep: p.DevDep, HostDep: p.DevDep || p.HostDep} |
| 828 | if err := port.Init(p.ctx, nameVersion); err != nil { |
| 829 | return err |
| 830 | } |
| 831 | allTools = append(allTools, port.MatchedConfig.CheckTools()...) |
| 832 | } |
| 833 | |
| 834 | if p.ctx.CCacheEnabled() { |
| 835 | allTools = append(allTools, "ccache") |
| 836 | } |
| 837 | |
| 838 | allTools = append(allTools, p.MatchedConfig.CheckTools()...) |
| 839 | |
| 840 | // Validate tools exist and ensure tool paths are in PATH. |
| 841 | if err := buildtools.CheckTools(p.ctx, allTools...); err != nil { |
| 842 | return err |
| 843 | } |
| 844 | |
| 845 | // Refresh dynamic expression variables after tool detection because some |
| 846 | // ports rely on build_tools-provided paths during option expansion. |
| 847 | if exprVars := p.ctx.ExprVars(); exprVars != nil { |
| 848 | if buildtools.PythonTool != nil { |
| 849 | buildtools.PythonTool.RegisterExprVars(exprVars) |
| 850 | } |
| 851 | if buildtools.LLVMPath != "" { |
| 852 | llvmConfig := expr.If(runtime.GOOS == "windows", "llvm-config.exe", "llvm-config") |
| 853 | llvmRoot := fileio.ToRelPath(buildtools.LLVMPath) |
| 854 | exprVars.Put("LLVM_CONFIG", filepath.ToSlash(filepath.Join(llvmRoot, "bin", llvmConfig))) |
| 855 | } |
| 856 | } |
| 857 | |
| 858 | if p.MatchedConfig != nil { |
| 859 | p.putExprVars(*p.MatchedConfig) |
| 860 | p.MatchedConfig.ExprVars = p.exprVars |
| 861 | } |
| 862 | |
| 863 | return nil |
| 864 | } |
| 865 | |
| 866 | // collectAllDeps walks the full transitive dependency tree (deps + |
| 867 | // dev_deps) starting from p, returning a de-duplicated list of every |
no test coverage detected