Skip to content

Commit

Permalink
Include package dbs of source loaded dependencies in unit files
Browse files Browse the repository at this point in the history
Package dbs are one of the few things that need to be transitively
included in a unit file. Fix the following case: There are two units A
and B, and A depends on B. B depends on an external dependency C. In
this case the unit file for A needs to include the package db for C. HLS
and GHC will not pick up the package db indirectly through B's unit
file. Fix this by passing a set of package-db-only HaskellReplDepInfo
when merging.
  • Loading branch information
iteratee committed Aug 9, 2024
1 parent c3dc0cf commit 6b3fdd2
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions haskell/repl.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ def _merge_HaskellReplLoadInfoMulti(root_info, load_infos):
java_deps = depset(transitive = java_deps),
)

def _merge_HaskellReplDepInfo(dep_infos):
def _merge_HaskellReplDepInfo(dep_infos, dep_infos_for_package_dbs = []):
package_ids = depset()
package_databases = depset()
interface_dirs = depset()
Expand All @@ -219,6 +219,9 @@ def _merge_HaskellReplDepInfo(dep_infos):
cc_infos.append(dep_info.cc_info)
runfiles.append(dep_info.runfiles)

for dep_info in dep_infos_for_package_dbs:
package_databases = depset(transitive = [package_databases, dep_info.package_databases])

return HaskellReplDepInfo(
direct_package_ids = [],
package_ids = package_ids,
Expand Down Expand Up @@ -409,7 +412,12 @@ def _create_HaskellMultiReplInfo(from_source, from_binary, collect_info):
for label in deps_list
if label in dep_infos and not sets.contains(local_labels, label)
]
merged_dep_info = _merge_HaskellReplDepInfo(dep_infos_to_merge)
dep_infos_for_package_dbs = [
dep_infos[label]
for label in deps_list
if label in dep_infos and sets.contains(local_labels, label)
]
merged_dep_info = _merge_HaskellReplDepInfo(dep_infos_to_merge, dep_infos_for_package_dbs)
if dep_info and not load_as_source:
dep_info_with_self = _merge_HaskellReplDepInfo([dep_info, merged_dep_info])
else:
Expand Down

0 comments on commit 6b3fdd2

Please sign in to comment.