MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / set_go_env

Method set_go_env

client/tool/util/toolenvset.py:29–80  ·  view source on GitHub ↗

自动识别机器go环境: 1. 优先使用本地机器环境中的Go环境 2. 本地机器没有go的话,便使用CodeDog自带的go环境 :param params: :param force_inner: 强制使用内置的go环境 :return:

(params, force_inner=False)

Source from the content-addressed store, hash-verified

27
28 @staticmethod
29 def set_go_env(params, force_inner=False):
30 """
31 自动识别机器go环境:
32 1. 优先使用本地机器环境中的Go环境
33 2. 本地机器没有go的话,便使用CodeDog自带的go环境
34 :param params:
35 :param force_inner: 强制使用内置的go环境
36 :return:
37 """
38 source_dir = params.source_dir
39 tool_name = params["tool_name"]
40 go_home = os.path.basename(os.environ.get("GO_HOME", None))
41 go_path = os.environ.get("GOPATH", None)
42 go_root = os.environ.get("GOROOT", None)
43
44 # 判断本地go环境是否可用
45 # 不可用,或者该机器没有go环境的话,便使用codedog维护的go环境
46 if force_inner or SubProcController(["go", "version"]).wait() != 0:
47 logger.info("建议客户将所有第三方依赖库存放到src/vendor目录下,这样可以保证编译时能够被依赖到。")
48 EnvSet().set_tool_env(
49 {
50 tool_name: {
51 "env_path": {"GOROOT": go_home},
52 "env_value": {},
53 "path": ["%s/bin" % go_home, f"{go_home}/go/bin"],
54 "tool_url": [],
55 }
56 }
57 )
58 if not go_path:
59 go_path = []
60 else:
61 # 可以在CodeDog平台上面设置GOPATH指向代码库内的目录
62 # 比如:GOPATH=$SOURCE_DIR/imcomm:$SOURCE_DIR:$SOURCE_DIR/third:$GOPATH
63 go_path = go_path.split(os.pathsep)
64 go_path.extend([os.path.join(settings.TOOL_BASE_DIR, "%s/go" % go_home), source_dir])
65 os.environ["GOPATH"] = os.pathsep.join(go_path)
66
67 if not go_root:
68 os.environ["GOROOT"] = os.path.join(settings.TOOL_BASE_DIR, go_home)
69 elif not go_path or not go_root:
70 # 机器有go环境,但没有设置GOPATH
71 logger.info(
72 "建议客户机器设置GOPATH指向go项目根目录和项目依赖路径,最好将所有第三方依赖库存放到项目的src/vendor目录下,保证项目编译通过,以及设置GOROOT指向go安装位置,以防工具执行失败。"
73 )
74
75 logger.info("当前使用的Go版本如下所示:")
76 SubProcController(
77 ["go", "version"], stdout_line_callback=subprocc_log, stderr_line_callback=subprocc_log
78 ).wait()
79 logger.info("GOROOT: %s", os.environ.get("GOROOT", ""))
80 logger.info("GOPATH: %s", os.environ.get("GOPATH", ""))
81
82 @staticmethod
83 def is_py_avail(pyname="python", version=None):

Callers 3

analyzeMethod · 0.80
compileMethod · 0.80
analyzeMethod · 0.80

Calls 4

EnvSetClass · 0.90
getMethod · 0.45
infoMethod · 0.45
set_tool_envMethod · 0.45

Tested by

no test coverage detected