@@ -648,7 +648,6 @@ def _build_haskell_lib(
648
648
md_file = md_file ,
649
649
pkgname = pkgname ,
650
650
worker = _persistent_worker (ctx ),
651
- worker_plugin = ctx .attrs ._worker_plugin if ctx .label .cell != "prelude" and ctx .attrs ._haskell_toolchain [HaskellToolchainInfo ].use_worker else None ,
652
651
)
653
652
solibs = {}
654
653
artifact_suffix = get_artifact_suffix (link_style , enable_profiling )
@@ -1224,7 +1223,6 @@ def haskell_binary_impl(ctx: AnalysisContext) -> list[Provider]:
1224
1223
md_file = md_file ,
1225
1224
worker = _persistent_worker (ctx ),
1226
1225
pkgname = pkgname ,
1227
- worker_plugin = ctx .attrs ._worker_plugin if hasattr (ctx .attrs , "_worker_plugin" ) else None ,
1228
1226
)
1229
1227
1230
1228
haskell_toolchain = ctx .attrs ._haskell_toolchain [HaskellToolchainInfo ]
@@ -1505,9 +1503,8 @@ worker = anon_rule(
1505
1503
"srcs_deps" : attrs .dict (attrs .string (), attrs .dep (), default = {}),
1506
1504
"srcs_envs" : attrs .dict (attrs .string (), attrs .string (), default = {}),
1507
1505
"template_deps" : attrs .list (attrs .dep (), default = []),
1508
- # N.B. the _worker_* attrs are only treated by the call site of the anon_target
1509
- "_worker_deps" : attrs .default_only (attrs .list (attrs .dep (), default = [])),
1510
- "_worker_srcs" : attrs .default_only (attrs .list (attrs .source (), default = [])),
1506
+ # N.B. allow_worker is only treated by the call site of the anon_target
1507
+ "allow_worker" : attrs .bool (),
1511
1508
}
1512
1509
| haskell_common .use_argsfile_at_link_arg ()
1513
1510
| native_common .link_style (),
@@ -1517,10 +1514,11 @@ worker = anon_rule(
1517
1514
)
1518
1515
1519
1516
def _persistent_worker (ctx : AnalysisContext ) -> WorkerInfo | None :
1520
- if ctx .label . cell == "prelude" :
1517
+ if not ctx .attrs . allow_worker :
1521
1518
return None
1522
1519
1523
- if not ctx .attrs ._haskell_toolchain [HaskellToolchainInfo ].use_worker :
1520
+ tc = ctx .attrs ._haskell_toolchain [HaskellToolchainInfo ]
1521
+ if not tc .use_worker :
1524
1522
return None
1525
1523
1526
1524
worker_target = ctx .actions .anon_target (
@@ -1530,21 +1528,22 @@ def _persistent_worker(ctx: AnalysisContext) -> WorkerInfo | None:
1530
1528
"_generate_target_metadata" : ctx .attrs ._generate_target_metadata ,
1531
1529
"_ghc_wrapper" : ctx .attrs ._ghc_wrapper ,
1532
1530
"_haskell_toolchain" : ctx .attrs ._haskell_toolchain ,
1533
- "deps" : ctx . attrs . _worker_deps ,
1531
+ "deps" : tc . worker_deps ,
1534
1532
"link_style" : "shared" ,
1535
1533
"name" : "prelude//haskell:worker" ,
1536
- "srcs" : ctx . attrs . _worker_srcs ,
1537
- "compiler_flags" : ctx . attrs . _worker_compiler_flags + [
1534
+ "srcs" : tc . worker_srcs_multiplexer if tc . use_worker_multiplexer else tc . worker_srcs ,
1535
+ "compiler_flags" : tc . worker_compiler_flags + [
1538
1536
"-O2" ,
1539
1537
],
1540
- "linker_flags" : ctx . attrs . _worker_compiler_flags + [
1538
+ "linker_flags" : [
1541
1539
"-dynamic" ,
1542
1540
"-rtsopts=all" ,
1543
1541
"-with-rtsopts=-K512M -H -I5 -T" ,
1544
1542
"-threaded" ,
1545
1543
"-O2" ,
1546
1544
],
1547
1545
"use_argsfile_at_link" : False ,
1546
+ "allow_worker" : False ,
1548
1547
},
1549
1548
)
1550
1549
return WorkerInfo (worker_target .artifact ("worker" ))
0 commit comments