1*c8dee2aaSAndroid Build Coastguard Worker# A helper function to get the go platform string of the Bazel host. 2*c8dee2aaSAndroid Build Coastguard Worker# This can be used to do cross-platform go compilations. 3*c8dee2aaSAndroid Build Coastguard Worker# Example: 4*c8dee2aaSAndroid Build Coastguard Worker# $ bazelisk run //bazel:go_platform 5*c8dee2aaSAndroid Build Coastguard Worker# darwin_arm64 6*c8dee2aaSAndroid Build Coastguard Workerpy_binary( 7*c8dee2aaSAndroid Build Coastguard Worker name = "go_platform", 8*c8dee2aaSAndroid Build Coastguard Worker srcs = ["go_platform.py"], 9*c8dee2aaSAndroid Build Coastguard Worker data = ["@go_sdk//:bin/go"], 10*c8dee2aaSAndroid Build Coastguard Worker tags = ["no-remote"], # Need the platform of the host 11*c8dee2aaSAndroid Build Coastguard Worker) 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker_GO_PLATFORM = """ 14*c8dee2aaSAndroid Build Coastguard Workerimport os 15*c8dee2aaSAndroid Build Coastguard Workerimport subprocess 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker# https://bazel.build/reference/be/make-variables#predefined_label_variables 18*c8dee2aaSAndroid Build Coastguard Workergo_exe = os.path.abspath("$(execpath @go_sdk//:bin/go)") 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Workerresult = subprocess.run([ 21*c8dee2aaSAndroid Build Coastguard Worker go_exe, 22*c8dee2aaSAndroid Build Coastguard Worker "version", 23*c8dee2aaSAndroid Build Coastguard Worker], capture_output=True, encoding="utf-8") 24*c8dee2aaSAndroid Build Coastguard Worker 25*c8dee2aaSAndroid Build Coastguard Worker# e.g. go version go1.18 darwin/arm64 26*c8dee2aaSAndroid Build Coastguard Workeros_arch = result.stdout.strip().split(" ")[3] 27*c8dee2aaSAndroid Build Coastguard Worker# e.g. darwin/arm64 28*c8dee2aaSAndroid Build Coastguard Workerprint(os_arch.replace("/", "_")) 29*c8dee2aaSAndroid Build Coastguard Worker""" 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Workergenrule( 32*c8dee2aaSAndroid Build Coastguard Worker name = "create_go_platform_script", 33*c8dee2aaSAndroid Build Coastguard Worker outs = ["go_platform.py"], 34*c8dee2aaSAndroid Build Coastguard Worker cmd = "echo '%s' > $@" % _GO_PLATFORM, 35*c8dee2aaSAndroid Build Coastguard Worker tools = [ 36*c8dee2aaSAndroid Build Coastguard Worker "@go_sdk//:bin/go", 37*c8dee2aaSAndroid Build Coastguard Worker ], 38*c8dee2aaSAndroid Build Coastguard Worker) 39