diff options
Diffstat (limited to 'third_party/bazel/rules_haskell/haskell/import.bzl')
-rw-r--r-- | third_party/bazel/rules_haskell/haskell/import.bzl | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/third_party/bazel/rules_haskell/haskell/import.bzl b/third_party/bazel/rules_haskell/haskell/import.bzl deleted file mode 100644 index a79a9cff7b3d..000000000000 --- a/third_party/bazel/rules_haskell/haskell/import.bzl +++ /dev/null @@ -1,118 +0,0 @@ -"""Importing prebuilt packages into bazel""" - -load("@bazel_skylib//lib:paths.bzl", "paths") -load( - "@io_tweag_rules_haskell//haskell:providers.bzl", - "HaddockInfo", - "HaskellInfo", - "HaskellLibraryInfo", - "empty_HaskellCcInfo", -) -load(":private/context.bzl", "haskell_context") -load(":private/path_utils.bzl", "copy_all", "link_forest", "ln") -load(":private/set.bzl", "set") -load(":private/version_macros.bzl", "generate_version_macros") - -def _haskell_import_impl(ctx): - hs = haskell_context(ctx) - - package_cache = ctx.actions.declare_file( - paths.join("package.conf.d", "package.cache"), - ) - - local_package_confs = link_forest( - ctx = ctx, - srcs = ctx.attr.package_confs.files, - sibling = package_cache, - ) - - local_haddock_html = ctx.actions.declare_directory("haddock-html") - copy_all( - ctx = ctx, - srcs = ctx.attr.haddock_html.files, - dest = local_haddock_html, - ) - - ctx.actions.run( - outputs = [package_cache], - inputs = local_package_confs, - mnemonic = "HaskellCreatePackageCache", - executable = hs.tools.ghc_pkg, - arguments = [ - "recache", - "--package-db", - package_cache.dirname, - ], - ) - ln(ctx, package_cache, ctx.outputs.cache) - - dependencies_caches = set.singleton(package_cache) - for dep in ctx.attr.deps: - if HaskellInfo in dep: - set.mutable_union(dependencies_caches, dep[HaskellInfo].package_databases) - - deps_ids = [ - dep[HaskellLibraryInfo].package_id - for dep in ctx.attr.deps - if HaskellLibraryInfo in dep - ] - - version_macros = set.empty() - if ctx.attr.version != None: - version_macros = set.singleton( - generate_version_macros(ctx, hs.name, ctx.attr.version), - ) - - libInfo = HaskellLibraryInfo( - package_id = ctx.attr.package_id, - version = ctx.attr.version, - ) - buildInfo = HaskellInfo( - package_ids = set.from_list([ctx.attr.package_id] + deps_ids), - package_databases = dependencies_caches, - version_macros = version_macros, - import_dirs = [], - source_files = set.empty(), - extra_source_files = set.empty(), - static_libraries = [], - static_libraries_prof = [], - dynamic_libraries = set.empty(), - interface_dirs = set.empty(), - compile_flags = [], - prebuilt_dependencies = set.empty(), - direct_prebuilt_deps = set.empty(), - cc_dependencies = empty_HaskellCcInfo(), - transitive_cc_dependencies = empty_HaskellCcInfo(), - ) - html_files = ctx.attr.haddock_html.files.to_list() - transitive_html = {ctx.attr.package_id: local_haddock_html} if html_files != [] else {} - interface_files = ctx.attr.haddock_interfaces.files.to_list() - transitive_haddocks = {ctx.attr.package_id: interface_files[0]} if interface_files != [] else {} - - haddockInfo = HaddockInfo( - package_id = ctx.attr.package_id, - transitive_html = transitive_html, - transitive_haddocks = transitive_haddocks, - ) - return [buildInfo, libInfo, haddockInfo] - -haskell_import = rule( - _haskell_import_impl, - attrs = dict( - package_id = attr.string(doc = "Workspace unique package identifier"), - deps = attr.label_list(doc = "Haskell dependencies for the package"), - version = attr.string(doc = "Package version."), - haddock_interfaces = attr.label(doc = "List of haddock interfaces"), - haddock_html = attr.label(doc = "List of haddock html dirs"), - package_confs = attr.label(doc = "List of ghc-pkg package.conf files"), - _version_macros = attr.label( - executable = True, - cfg = "host", - default = Label("@io_tweag_rules_haskell//haskell:version_macros"), - ), - ), - outputs = { - "cache": "%{name}-cache", - }, - toolchains = ["@io_tweag_rules_haskell//haskell:toolchain"], -) |