@@ -381,7 +381,8 @@ def go_context(
381
381
importpath = None ,
382
382
importmap = None ,
383
383
embed = None ,
384
- importpath_aliases = None ):
384
+ importpath_aliases = None ,
385
+ go_context_data = None ):
385
386
"""Returns an API used to build Go code.
386
387
387
388
See /go/toolchains.rst#go-context
@@ -390,26 +391,33 @@ def go_context(
390
391
attr = ctx .attr
391
392
toolchain = ctx .toolchains [GO_TOOLCHAIN ]
392
393
cgo_context_info = None
394
+ go_context_info = None
393
395
go_config_info = None
394
396
stdlib = None
395
- coverdata = None
396
- nogo = None
397
- if hasattr (attr , "_go_context_data" ):
398
- go_context_data = _flatten_possibly_transitioned_attr (attr ._go_context_data )
397
+
398
+ if go_context_data == None :
399
+ if hasattr (attr , "_go_context_data" ):
400
+ go_context_data = _flatten_possibly_transitioned_attr (attr ._go_context_data )
401
+ if CgoContextInfo in go_context_data :
402
+ cgo_context_info = go_context_data [CgoContextInfo ]
403
+ go_config_info = go_context_data [GoConfigInfo ]
404
+ stdlib = go_context_data [GoStdLib ]
405
+ go_context_info = go_context_data [GoContextInfo ]
406
+ if getattr (attr , "_cgo_context_data" , None ) and CgoContextInfo in attr ._cgo_context_data :
407
+ cgo_context_info = attr ._cgo_context_data [CgoContextInfo ]
408
+ if getattr (attr , "cgo_context_data" , None ) and CgoContextInfo in attr .cgo_context_data :
409
+ cgo_context_info = attr .cgo_context_data [CgoContextInfo ]
410
+ if hasattr (attr , "_go_config" ):
411
+ go_config_info = attr ._go_config [GoConfigInfo ]
412
+ if hasattr (attr , "_stdlib" ):
413
+ stdlib = _flatten_possibly_transitioned_attr (attr ._stdlib )[GoStdLib ]
414
+ else :
415
+ go_context_data = _flatten_possibly_transitioned_attr (go_context_data )
399
416
if CgoContextInfo in go_context_data :
400
417
cgo_context_info = go_context_data [CgoContextInfo ]
401
418
go_config_info = go_context_data [GoConfigInfo ]
402
419
stdlib = go_context_data [GoStdLib ]
403
- coverdata = go_context_data [GoContextInfo ].coverdata
404
- nogo = go_context_data [GoContextInfo ].nogo
405
- if getattr (attr , "_cgo_context_data" , None ) and CgoContextInfo in attr ._cgo_context_data :
406
- cgo_context_info = attr ._cgo_context_data [CgoContextInfo ]
407
- if getattr (attr , "cgo_context_data" , None ) and CgoContextInfo in attr .cgo_context_data :
408
- cgo_context_info = attr .cgo_context_data [CgoContextInfo ]
409
- if hasattr (attr , "_go_config" ):
410
- go_config_info = attr ._go_config [GoConfigInfo ]
411
- if hasattr (attr , "_stdlib" ):
412
- stdlib = _flatten_possibly_transitioned_attr (attr ._stdlib )[GoStdLib ]
420
+ go_context_info = go_context_data [GoContextInfo ]
413
421
414
422
mode = get_mode (ctx , toolchain , cgo_context_info , go_config_info )
415
423
@@ -515,8 +523,8 @@ def go_context(
515
523
importpath_aliases = importpath_aliases ,
516
524
pathtype = pathtype ,
517
525
cgo_tools = cgo_tools ,
518
- nogo = nogo ,
519
- coverdata = coverdata ,
526
+ nogo = go_context_info . nogo if go_context_info else None ,
527
+ coverdata = go_context_info . coverdata if go_context_info else None ,
520
528
coverage_enabled = ctx .configuration .coverage_enabled ,
521
529
coverage_instrumented = ctx .coverage_instrumented (),
522
530
env = env ,
0 commit comments