@@ -129,6 +129,17 @@ _package_tag = tag_class(
129129 default = False ,
130130 doc = "Configuring a package makes it visible by default, unless `hidden` is set to True" ,
131131 ),
132+ "components_args" : attr .string_dict (
133+ doc = """ components_args: Defines map from component to cabal settings for that package.
134+ The cabal settings are a target of type `haskell_cabal_args`. Currently handles empty
135+ libraries and telling the build system to ignore `Setup.hs`.
136+ Use `lib` for the main library component, `exe:<exe-name>` for an executable component,
137+ and `lib:<sublib-name>` for a sublibrary.
138+ `exe` is a short-cut for `exe:<package-name>`.
139+ Either use the builtin "@rules_haskell//tools/cabal_args:empty_library", or create your own
140+ if necessary.
141+ """ ,
142+ ),
132143 },
133144)
134145
@@ -180,6 +191,8 @@ def _add_packages(conf, module, root_or_rules_haskell):
180191 if package_tag .components != ["DETECT_DEFAULT" ]:
181192 # Some packages have default components set
182193 conf .components [package_name ] = package_tag .components
194+ if package_tag .components_args :
195+ conf .components [package_name ] = package_tag .components_args
183196 if package_tag .components_dependencies :
184197 conf .components_dependencies [package_name ] = json .encode (package_tag .components_dependencies )
185198 if package_tag .extra_deps :
@@ -295,6 +308,7 @@ def _stack_snapshot_impl(mctx):
295308 extra_deps = {},
296309 components = {},
297310 components_dependencies = {},
311+ components_args = {},
298312 vendored_packages = {},
299313 )
300314
@@ -318,6 +332,7 @@ def _stack_snapshot_impl(mctx):
318332 kwargs ["flags" ] = packages_conf .flags
319333 kwargs ["components" ] = packages_conf .components
320334 kwargs ["components_dependencies" ] = packages_conf .components_dependencies
335+ kwargs ["components_args" ] = packages_conf .components_args
321336 kwargs ["extra_deps" ] = packages_conf .extra_deps
322337 kwargs ["vendored_packages" ] = packages_conf .vendored_packages
323338 kwargs ["name" ] = "stackage"
0 commit comments