Skip to content

Commit 43b056d

Browse files
michalmuskalafacebook-github-bot
authored andcommitted
erlang: don't store ebin in build_environment
Summary: This is not necessary. We're not using the direct ebin directories anywhere. Thrird-party use-cases should use the whole app dir, rather than depending on this detail Reviewed By: TheGeorge, TD5 Differential Revision: D74187188 fbshipit-source-id: 0e2b0488926842419f50d6f744059c24334c9493
1 parent 4850770 commit 43b056d

File tree

5 files changed

+6
-19
lines changed

5 files changed

+6
-19
lines changed

prelude/erlang/erlang_application.bzl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,6 @@ def build_app_info(
458458
app_file = multidict_projection_key(build_environments, "app_files", name),
459459
priv_dir = multidict_projection_key(build_environments, "priv_dirs", name),
460460
include_dir = multidict_projection_key(build_environments, "include_dirs", name),
461-
ebin_dir = multidict_projection_key(build_environments, "ebin_dirs", name),
462461
private_include_dir = multidict_projection(build_environments, "private_include_dir"),
463462
private_includes = multidict_projection(build_environments, "private_includes"),
464463
deps_files = multidict_projection(build_environments, "deps_files"),

prelude/erlang/erlang_build.bzl

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ BuildEnvironment = record(
4646
priv_dirs = field(PathArtifactMapping, {}),
4747
include_dirs = field(PathArtifactMapping, {}),
4848
private_include_dir = field(list[Artifact], []),
49-
ebin_dirs = field(PathArtifactMapping, {}),
5049
deps_files = field(PathArtifactMapping, {}),
5150
app_files = field(PathArtifactMapping, {}),
5251
# convenience storrage
@@ -75,7 +74,6 @@ def _prepare_build_environment(
7574
"""Prepare build environment and collect the context from all dependencies."""
7675
priv_dirs = {}
7776
include_dirs = {}
78-
ebin_dirs = {}
7977
deps_files = {}
8078
includes = {}
8179
beams = {}
@@ -108,7 +106,6 @@ def _prepare_build_environment(
108106

109107
# collect dirs
110108
priv_dirs[name] = dep_info.priv_dir[toolchain.name]
111-
ebin_dirs[name] = dep_info.ebin_dir[toolchain.name]
112109

113110
# collect app files
114111
app_files[name] = dep_info.app_file[toolchain.name]
@@ -145,7 +142,6 @@ def _prepare_build_environment(
145142
beams = beams,
146143
priv_dirs = priv_dirs,
147144
include_dirs = include_dirs,
148-
ebin_dirs = ebin_dirs,
149145
deps_files = deps_files,
150146
app_files = app_files,
151147
input_mapping = input_mapping,
@@ -175,7 +171,6 @@ def _generate_input_mapping(build_environment: BuildEnvironment, input_artifacts
175171
priv_dirs = build_environment.priv_dirs,
176172
include_dirs = build_environment.include_dirs,
177173
private_include_dir = build_environment.private_include_dir,
178-
ebin_dirs = build_environment.ebin_dirs,
179174
deps_files = build_environment.deps_files,
180175
app_files = build_environment.app_files,
181176
app_includes = build_environment.app_includes,
@@ -244,7 +239,6 @@ def _generate_include_artifacts(
244239
# copied fields
245240
beams = build_environment.beams,
246241
priv_dirs = build_environment.priv_dirs,
247-
ebin_dirs = build_environment.ebin_dirs,
248242
app_beams = build_environment.app_beams,
249243
app_files = build_environment.app_files,
250244
input_mapping = build_environment.input_mapping,
@@ -261,20 +255,19 @@ def _generate_beam_artifacts(
261255
name: str,
262256
src_artifacts: list[Artifact]) -> BuildEnvironment:
263257
# anchor for ebin dir
264-
anchor = _make_dir_anchor(ctx, paths.join(_build_dir(toolchain), name, "ebin"))
258+
ebin = paths.join(_build_dir(toolchain), name, "ebin")
265259

266-
beam_mapping = {
267-
module_name(src): ctx.actions.declare_output(beam_path(anchor, src))
268-
for src in src_artifacts
269-
}
260+
beam_mapping = {}
261+
for erl in src_artifacts:
262+
module = module_name(erl)
263+
beam_mapping[module] = ctx.actions.declare_output(ebin, module + ".beam")
270264

271265
# dep files
272266
deps_files = _get_deps_files(ctx, toolchain, src_artifacts, build_environment.deps_files)
273267

274268
updated_build_environment = BuildEnvironment(
275269
# updated fields
276270
beams = _merge(beam_mapping, build_environment.beams),
277-
ebin_dirs = _add(build_environment.ebin_dirs, name, anchor.artifact),
278271
deps_files = deps_files,
279272
app_beams = beam_mapping,
280273
# copied fields
@@ -317,7 +310,6 @@ def _generate_chunk_artifacts(
317310
priv_dirs = build_environment.priv_dirs,
318311
include_dirs = build_environment.include_dirs,
319312
private_include_dir = build_environment.private_include_dir,
320-
ebin_dirs = build_environment.ebin_dirs,
321313
deps_files = build_environment.deps_files,
322314
app_files = build_environment.app_files,
323315
app_includes = build_environment.app_includes,
@@ -813,7 +805,6 @@ def _peek_private_includes(
813805
beams = build_environment.beams,
814806
priv_dirs = build_environment.priv_dirs,
815807
include_dirs = build_environment.include_dirs,
816-
ebin_dirs = build_environment.ebin_dirs,
817808
deps_files = build_environment.deps_files,
818809
app_files = build_environment.app_files,
819810
app_includes = build_environment.app_includes,

prelude/erlang/erlang_info.bzl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ ErlangAppInfo = provider(
5454
# references to ankers for the relevant directories for the application
5555
"priv_dir",
5656
"private_include_dir",
57-
"ebin_dir",
5857
# applications that are in path but not build by buck2 are virtual
5958
# the use-case for virtual apps are OTP applications that are shipeped
6059
# with the Erlang distribution

prelude/erlang/erlang_otp_application.bzl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ def _erlang_otp_application_impl(ctx: AnalysisContext) -> list[Provider]:
7979
priv_dir = None,
8080
include_dir = None,
8181
private_include_dir = None,
82-
ebin_dir = None,
8382
virtual = True,
8483
app_folder = None,
8584
),

prelude/erlang/erlang_tests.bzl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ def erlang_test_impl(ctx: AnalysisContext) -> list[Provider]:
155155
priv_dirs = pre_build_environment.priv_dirs,
156156
include_dirs = pre_build_environment.include_dirs,
157157
private_include_dir = pre_build_environment.private_include_dir,
158-
ebin_dirs = pre_build_environment.ebin_dirs,
159158
deps_files = pre_build_environment.deps_files,
160159
app_files = pre_build_environment.app_files,
161160
# convenience storrage
@@ -192,7 +191,7 @@ def erlang_test_impl(ctx: AnalysisContext) -> list[Provider]:
192191
[suite],
193192
)
194193

195-
ebin_dir = paths.dirname(build_environment.ebin_dirs["tests"].short_path)
194+
ebin_dir = paths.dirname(build_environment.beams[suite_name].short_path)
196195

197196
suite_data = paths.join(ebin_dir, suite_name + "_data")
198197
data_dir = _build_resource_dir(ctx, ctx.attrs.resources, suite_data)

0 commit comments

Comments
 (0)