diff options
Diffstat (limited to 'third_party/bazel/rules_haskell/haskell/private/packages.bzl')
-rw-r--r-- | third_party/bazel/rules_haskell/haskell/private/packages.bzl | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/third_party/bazel/rules_haskell/haskell/private/packages.bzl b/third_party/bazel/rules_haskell/haskell/private/packages.bzl deleted file mode 100644 index e35fbb2820b1..000000000000 --- a/third_party/bazel/rules_haskell/haskell/private/packages.bzl +++ /dev/null @@ -1,94 +0,0 @@ -"""Package list handling""" - -load(":private/set.bzl", "set") - -def pkg_info_to_compile_flags(pkg_info, for_plugin = False): - """Map package info to GHC command-line arguments. - - Args: - pkg_info: Package info collected by `ghc_info()`. - for_plugin: Whether the package is a plugin dependency. - - Returns: - The list of command-line arguments that should be passed to GHC. - """ - namespace = "plugin-" if for_plugin else "" - args = [ - # In compile.bzl, we pass this just before all -package-id - # arguments. Not doing so leads to bizarre compile-time failures. - # It turns out that equally, not doing so leads to bizarre - # link-time failures. See - # https://github.com/tweag/rules_haskell/issues/395. - "-hide-all-{}packages".format(namespace), - ] - - if not pkg_info.has_version: - args.extend([ - # Macro version are disabled for all packages by default - # and enabled for package with version - # see https://github.com/tweag/rules_haskell/issues/414 - "-fno-version-macros", - ]) - - for package in pkg_info.packages: - args.extend(["-{}package".format(namespace), package]) - - for package_id in pkg_info.package_ids: - args.extend(["-{}package-id".format(namespace), package_id]) - - for package_db in pkg_info.package_dbs: - args.extend(["-package-db", package_db]) - - return args - -def expose_packages(hs_info, lib_info, use_direct, use_my_pkg_id, custom_package_databases, version): - """ - Returns the information that is needed by GHC in order to enable haskell - packages. - - hs_info: is common to all builds - version: if the rule contains a version, we will export the CPP version macro - - All the other arguments are not understood well: - - lib_info: only used for repl and linter - use_direct: only used for repl and linter - use_my_pkg_id: only used for one specific task in compile.bzl - custom_package_databases: override the package_databases of hs_info, used only by the repl - """ - has_version = version != None and version != "" - - # Expose all prebuilt dependencies - # - # We have to remember to specify all (transitive) wired-in - # dependencies or we can't find objects for linking - # - # Set use_direct if hs_info does not have a direct_prebuilt_deps field. - packages = [] - for prebuilt_dep in set.to_list(hs_info.direct_prebuilt_deps if use_direct else hs_info.prebuilt_dependencies): - packages.append(prebuilt_dep.package) - - # Expose all bazel dependencies - package_ids = [] - for package in set.to_list(hs_info.package_ids): - # XXX: repl and lint uses this lib_info flags - # It is set to None in all other usage of this function - # TODO: find the meaning of this flag - if lib_info == None or package != lib_info.package_id: - # XXX: use_my_pkg_id is not None only in compile.bzl - if (use_my_pkg_id == None) or package != use_my_pkg_id: - package_ids.append(package) - - # Only include package DBs for deps, prebuilt deps should be found - # auto-magically by GHC - package_dbs = [] - for cache in set.to_list(hs_info.package_databases if not custom_package_databases else custom_package_databases): - package_dbs.append(cache.dirname) - - ghc_info = struct( - has_version = has_version, - packages = packages, - package_ids = package_ids, - package_dbs = package_dbs, - ) - return ghc_info |