Skip to content

Commit bf9bd9c

Browse files
committed
Replace custom set library by Skylib's sets (#1799)
1 parent 1bc0dd5 commit bf9bd9c

16 files changed

+61
-186
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33
*.swp
44
*.swo
55
__pycache__
6+
/.direnv
7+
/.envrc

haskell/c2hs.bzl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ load(
1818
"target_unique_name",
1919
)
2020
load(":private/set.bzl", "set")
21+
load("@bazel_skylib//lib:sets.bzl", "sets")
2122
load(":private/version_macros.bzl", "version_macro_includes")
2223

2324
def _c2hs_library_impl(ctx):
@@ -62,7 +63,7 @@ def _c2hs_library_impl(ctx):
6263
]
6364
args.add_all(chi_includes)
6465

65-
version_macro_headers = set.empty()
66+
version_macro_headers = sets.make()
6667
if ctx.attr.version:
6768
dep_info = gather_dep_info(ctx.attr.name, ctx.attr.deps)
6869
(version_macro_headers, version_macro_flags) = version_macro_includes(dep_info)
@@ -78,7 +79,7 @@ def _c2hs_library_impl(ctx):
7879
depset(cc.files),
7980
depset(hs.toolchain.bindir),
8081
depset(hs.toolchain.libdir),
81-
set.to_depset(version_macro_headers),
82+
depset(sets.to_list(version_macro_headers)),
8283
inputs,
8384
]),
8485
input_manifests = input_manifests,

haskell/cabal.bzl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ load(
2121
"truly_relativize",
2222
)
2323
load(":private/set.bzl", "set")
24+
load("@bazel_skylib//lib:sets.bzl", "sets")
2425
load(":private/validate_attrs.bzl", "typecheck_stackage_extradeps")
2526
load(":haddock.bzl", "generate_unified_haddock_info")
2627
load(
@@ -582,11 +583,11 @@ def _haskell_cabal_library_impl(ctx):
582583
hs_info = HaskellInfo(
583584
package_databases = depset([package_database], transitive = [dep_info.package_databases]),
584585
empty_lib_package_databases = dep_info.empty_lib_package_databases,
585-
version_macros = set.empty(),
586+
version_macros = sets.make(),
586587
source_files = depset(),
587588
boot_files = depset(),
588589
extra_source_files = depset(),
589-
import_dirs = set.empty(),
590+
import_dirs = sets.make(),
590591
hs_libraries = depset(
591592
direct = [lib for lib in [vanilla_library, dynamic_library, profiling_library] if lib],
592593
transitive = [dep_info.hs_libraries],
@@ -881,11 +882,11 @@ def _haskell_cabal_binary_impl(ctx):
881882
hs_info = HaskellInfo(
882883
package_databases = dep_info.package_databases,
883884
empty_lib_package_databases = dep_info.empty_lib_package_databases,
884-
version_macros = set.empty(),
885+
version_macros = sets.make(),
885886
source_files = depset(),
886887
boot_files = depset(),
887888
extra_source_files = depset(),
888-
import_dirs = set.empty(),
889+
import_dirs = sets.make(),
889890
hs_libraries = dep_info.hs_libraries,
890891
deps_hs_libraries = dep_info.deps_hs_libraries,
891892
empty_hs_libraries = dep_info.empty_hs_libraries,
@@ -1933,7 +1934,7 @@ def _stack_snapshot_impl(repository_ctx):
19331934
else:
19341935
visibility = sorted(
19351936
# use set to de-duplicate
1936-
set.to_list(set.from_list([
1937+
sets.to_list(sets.make([
19371938
str(vendored_packages[rdep].relative(":__pkg__"))
19381939
for rdep in reverse_deps[name]
19391940
if rdep in vendored_packages

haskell/doctest.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ load("@bazel_skylib//lib:dicts.bzl", "dicts")
44
load(":cc.bzl", "cc_interop_info", "ghc_cc_program_args")
55
load(":private/context.bzl", "haskell_context", "render_env")
66
load(":private/set.bzl", "set")
7+
load("@bazel_skylib//lib:sets.bzl", "sets")
78
load(
89
"@rules_haskell//haskell:providers.bzl",
910
"HaskellCcLibrariesInfo",
@@ -121,7 +122,7 @@ def _haskell_doctest_single(target, ctx):
121122

122123
if ctx.attr.modules:
123124
inputs = ctx.attr.modules
124-
args.add_all(set.to_list(hs_info.import_dirs), format_each = "-i%s")
125+
args.add_all(sets.to_list(hs_info.import_dirs), format_each = "-i%s")
125126
else:
126127
inputs = [source.path for source in hs_info.source_files.to_list()]
127128

haskell/experimental/private/module.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
load("@bazel_skylib//lib:paths.bzl", "paths")
2+
load("@bazel_skylib//lib:sets.bzl", "sets")
23
load("//haskell:private/path_utils.bzl", "infer_main_module")
34
load(
45
"//haskell:private/dependencies.bzl",
@@ -840,7 +841,7 @@ def build_haskell_modules(
840841
repl_info = struct(
841842
source_files = depset(source_files),
842843
boot_files = depset(boot_files),
843-
import_dirs = set.from_list(import_dirs),
844+
import_dirs = sets.make(import_dirs),
844845
user_compile_flags = user_compile_flags,
845846
),
846847
)

haskell/haddock.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ load(
1717
)
1818
load(":private/context.bzl", "haskell_context", "render_env")
1919
load(":private/set.bzl", "set")
20+
load("@bazel_skylib//lib:sets.bzl", "sets")
2021

2122
def generate_unified_haddock_info(this_package_id, this_package_haddock, this_package_html, deps):
2223
"""Collapse dependencies into a single `HaddockInfo`.

haskell/private/actions/compile.bzl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ load(
2525
"link_libraries",
2626
)
2727
load(":private/set.bzl", "set")
28+
load("@bazel_skylib//lib:sets.bzl", "sets")
2829
load("//haskell/experimental:providers.bzl", "HaskellModuleInfo")
2930
load(
3031
":private/actions/process_hsc_file.bzl",
@@ -161,7 +162,7 @@ def _compilation_defaults(
161162
# the two must both have the same root; i.e., both plain files,
162163
# both in bin_dir, or both in genfiles_dir.
163164

164-
import_dirs = set.from_list([
165+
import_dirs = sets.make([
165166
hs.src_root,
166167
paths.join(hs.bin_dir.path, hs.src_root),
167168
paths.join(hs.genfiles_dir.path, hs.src_root),
@@ -176,15 +177,15 @@ def _compilation_defaults(
176177
elif s.extension == "hsc":
177178
s0, idir = process_hsc_file(hs, cc, hsc_flags, hsc_inputs, s)
178179
source_files.append(s0)
179-
set.mutable_insert(import_dirs, idir)
180+
sets.insert(import_dirs, idir)
180181
elif s.extension in ["hs-boot", "lhs-boot"]:
181182
boot_files.append(s)
182183
else:
183184
source_files.append(s)
184185

185186
if s in import_dir_map:
186187
idir = import_dir_map[s]
187-
set.mutable_insert(import_dirs, idir)
188+
sets.insert(import_dirs, idir)
188189

189190
# Write the -optP flags to a parameter file because they can be very long on Windows
190191
# e.g. 27Kb for grpc-haskell

haskell/private/actions/process_hsc_file.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ load("@bazel_skylib//lib:paths.bzl", "paths")
44
load(":private/version_macros.bzl", "version_macro_includes")
55
load(":private/path_utils.bzl", "declare_compiled")
66
load(":private/set.bzl", "set")
7+
load("@bazel_skylib//lib:sets.bzl", "sets")
78

89
def process_hsc_file(hs, cc, hsc_flags, hsc_inputs, hsc_file):
910
"""Process a single hsc file.
@@ -108,6 +109,6 @@ def preprocess_hsc_flags_and_inputs(dep_info, user_compile_flags, version):
108109
if version:
109110
(version_macro_headers, version_macro_flags) = version_macro_includes(dep_info)
110111
hsc_flags += ["--cflag=" + x for x in version_macro_flags]
111-
hsc_inputs += set.to_list(version_macro_headers)
112+
hsc_inputs += sets.to_list(version_macro_headers)
112113

113114
return hsc_flags, hsc_inputs

haskell/private/actions/runghc.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ load(
1717
"link_libraries",
1818
)
1919
load("@bazel_skylib//lib:shell.bzl", "shell")
20+
load("@bazel_skylib//lib:sets.bzl", "sets")
2021

2122
def build_haskell_runghc(
2223
hs,
@@ -56,7 +57,7 @@ def build_haskell_runghc(
5657
)
5758

5859
if lib_info != None:
59-
for idir in set.to_list(hs_info.import_dirs):
60+
for idir in sets.to_list(hs_info.import_dirs):
6061
args += ["-i{0}".format(idir)]
6162

6263
link_libraries(

haskell/private/dependencies.bzl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ load(
44
"HaskellLibraryInfo",
55
)
66
load(":private/set.bzl", "set")
7+
load("@bazel_skylib//lib:sets.bzl", "sets")
78

89
def gather_dep_info(name, deps):
910
"""Collapse dependencies into a single `HaskellInfo`.
@@ -64,7 +65,7 @@ def gather_dep_info(name, deps):
6465
if HaskellInfo in dep
6566
])
6667

67-
import_dirs = set.empty()
68+
import_dirs = sets.make()
6869
for dep in deps:
6970
if HaskellInfo in dep:
7071
import_dirs = set.mutable_union(import_dirs, dep[HaskellInfo].import_dirs)
@@ -83,7 +84,7 @@ def gather_dep_info(name, deps):
8384
acc = HaskellInfo(
8485
package_databases = package_databases,
8586
empty_lib_package_databases = empty_lib_package_databases,
86-
version_macros = set.empty(),
87+
version_macros = sets.make(),
8788
hs_libraries = hs_libraries,
8889
deps_hs_libraries = deps_hs_libraries,
8990
empty_hs_libraries = empty_hs_libraries,

haskell/private/haskell_impl.bzl

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ load(
4545
)
4646
load(":private/pkg_id.bzl", "pkg_id")
4747
load(":private/set.bzl", "set")
48+
load("@bazel_skylib//lib:sets.bzl", "sets")
4849
load(":private/list.bzl", "list")
4950
load(":private/version_macros.bzl", "generate_version_macros")
5051
load(":providers.bzl", "GhcPluginInfo", "HaskellCoverageInfo")
@@ -285,7 +286,7 @@ def _haskell_binary_common_impl(ctx, is_test):
285286

286287
hs_info = HaskellInfo(
287288
package_databases = all_deps_info.package_databases,
288-
version_macros = set.empty(),
289+
version_macros = sets.make(),
289290
source_files = depset(transitive = [c.source_files, module_outputs.repl_info.source_files]),
290291
boot_files = depset(transitive = [c.boot_files, module_outputs.repl_info.boot_files]),
291292
extra_source_files = c.extra_source_files,
@@ -531,13 +532,13 @@ def haskell_library_impl(ctx):
531532

532533
# Validate that hidden modules appear as modules in src list or modules list, depending which appears:
533534
declared_modules = haskell_module_names if modules else module_map.keys()
534-
hidden_minus_declared_modules = set.difference(set.from_list(ctx.attr.hidden_modules), set.from_list(declared_modules))
535-
if not hidden_minus_declared_modules == set.empty():
536-
fail("""Hidden modules must be a subset of all modules, found additional hidden modules {}""".format(set.to_list(hidden_minus_declared_modules)))
535+
hidden_minus_declared_modules = sets.difference(sets.make(ctx.attr.hidden_modules), sets.make(declared_modules))
536+
if not hidden_minus_declared_modules == sets.make():
537+
fail("""Hidden modules must be a subset of all modules, found additional hidden modules {}""".format(sets.to_list(hidden_minus_declared_modules)))
537538

538-
exposed_modules = set.from_list(module_map.keys() + exposed_modules_reexports + haskell_module_names)
539-
set.mutable_difference(exposed_modules, set.from_list(other_modules))
540-
exposed_modules = set.to_list(exposed_modules)
539+
exposed_modules = sets.make(module_map.keys() + exposed_modules_reexports + haskell_module_names)
540+
exposed_modules = set.mutable_difference(exposed_modules, sets.make(other_modules))
541+
exposed_modules = sets.to_list(exposed_modules)
541542

542543
if non_empty:
543544
static_library = link_library_static(
@@ -598,14 +599,14 @@ def haskell_library_impl(ctx):
598599
transitive = [all_deps_info.interface_dirs, module_outputs.his, module_outputs.dyn_his],
599600
)
600601

601-
version_macros = set.empty()
602+
version_macros = sets.make()
602603
if version:
603604
package_name = hs.name
604605
if hasattr(ctx.attr, "package_name") and ctx.attr.package_name:
605606
package_name = ctx.attr.package_name
606-
version_macros = set.singleton(
607+
version_macros = sets.make([
607608
generate_version_macros(ctx, package_name, version),
608-
)
609+
])
609610

610611
empty_libs = _create_empty_library(hs, cc, posix, my_pkg_id, with_shared, with_profiling, empty_libs_dir)
611612

@@ -986,11 +987,11 @@ def haskell_import_impl(ctx):
986987
file
987988
for file in ctx.files.static_libraries + ctx.files.shared_libraries
988989
]
989-
version_macros = set.empty()
990+
version_macros = sets.make()
990991
if ctx.attr.version != None:
991-
version_macros = set.singleton(
992+
version_macros = sets.make([
992993
generate_version_macros(ctx, ctx.label.name, ctx.attr.version),
993-
)
994+
])
994995
hs_info = HaskellInfo(
995996
# XXX Empty set of conf and cache files only works for global db.
996997
package_databases = depset(),
@@ -999,7 +1000,7 @@ def haskell_import_impl(ctx):
9991000
source_files = depset(),
10001001
boot_files = depset(),
10011002
extra_source_files = depset(),
1002-
import_dirs = set.empty(),
1003+
import_dirs = sets.make(),
10031004
hs_libraries = depset(),
10041005
deps_hs_libraries = depset(),
10051006
empty_hs_libraries = depset(),

haskell/private/list.bzl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Helper functions on lists."""
22

33
load(":private/set.bzl", "set")
4+
load("@bazel_skylib//lib:sets.bzl", "sets")
45

56
def _dedup_on(f, list_):
67
"""deduplicate `list_` by comparing the result of applying
@@ -12,12 +13,12 @@ def _dedup_on(f, list_):
1213
dedup_on(compare_x, [struct(x=3), struct(x=4), struct(x=3)])
1314
=> [struct(x=3), struct(x=4)]
1415
"""
15-
seen = set.empty()
16+
seen = sets.make()
1617
deduped = []
1718
for el in list_:
1819
by = f(el)
19-
if not set.is_member(seen, by):
20-
set.mutable_insert(seen, by)
20+
if not sets.contains(seen, by):
21+
sets.insert(seen, by)
2122
deduped.append(el)
2223
return deduped
2324

haskell/private/path_utils.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
"""Utilities for module and path manipulations."""
22

33
load("@bazel_skylib//lib:paths.bzl", "paths")
4-
load(":private/set.bzl", "set")
4+
# load(":private/set.bzl", "set")
5+
load("@bazel_skylib//lib:sets.bzl", "sets")
56

67
def is_haskell_extension(extension):
78
"""Whether the given extension defines a Haskell source file."""

0 commit comments

Comments
 (0)