Skip to content

Commit c3a21b3

Browse files
committed
wip
1 parent c5b5153 commit c3a21b3

3 files changed

Lines changed: 43 additions & 32 deletions

File tree

python/private/pypi/generate_whl_library_build_bazel.bzl

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ load(":labels.bzl", "DATA_LABEL", "DIST_INFO_LABEL", "EXTRACTED_WHEEL_FILES", "P
2020
# These are functions on how to render particular args, should be reused across all rendering
2121
# invocations to make things easier.
2222
_RENDER_FNS = {
23+
"aliases": render.list,
2324
"copy_executables": render.dict,
2425
"copy_files": render.dict,
2526
"data": render.list,
@@ -109,15 +110,6 @@ def generate_whl_library_build_bazel(
109110
namespace_package_files = namespace_package_files,
110111
visibility = visibility,
111112
)
112-
from_requires_kwargs = dict(
113-
name = metadata_name,
114-
version = metadata_version,
115-
requires_dist = requires_dist,
116-
extras = extras,
117-
group_deps = group_deps,
118-
dep_template = dep_template,
119-
group_name = group_name,
120-
)
121113

122114
# NOTE, if users specify annotations, the wheel downloads are not reused this
123115
# is to ensure that we don't break users config and also to ensure that we
@@ -147,14 +139,25 @@ def generate_whl_library_build_bazel(
147139
),
148140
]
149141

150-
if config_load:
151-
loads.append("""load("{}", "{}")""".format(config_load, "packages"))
152-
from_requires_kwargs["include"] = "packages"
142+
if dep_template:
143+
from_requires_kwargs = dict(
144+
name = metadata_name,
145+
version = metadata_version,
146+
requires_dist = requires_dist,
147+
extras = extras,
148+
group_deps = group_deps,
149+
dep_template = dep_template,
150+
group_name = group_name,
151+
)
153152

154-
macro_parts.append(render.call(
155-
"whl_library_from_requires_dist",
156-
**_render(**from_requires_kwargs)
157-
))
153+
if config_load:
154+
loads.append("""load("{}", "{}")""".format(config_load, "packages"))
155+
from_requires_kwargs["include"] = "packages"
156+
157+
macro_parts.append(render.call(
158+
"whl_library_from_requires_dist",
159+
**_render(**from_requires_kwargs)
160+
))
158161

159162
contents = "\n".join(
160163
[
@@ -174,6 +177,7 @@ def generate_whl_library_deps_build_bazel(
174177
version,
175178
config_load,
176179
dep_template,
180+
entry_points,
177181
extras,
178182
group_deps,
179183
group_name,
@@ -200,31 +204,24 @@ def generate_whl_library_deps_build_bazel(
200204
dep_template = dep_template,
201205
group_name = group_name,
202206
src_pkg = str(whl_library),
203-
)
204-
205-
macro_parts = [
206-
render.call(
207-
"alias",
208-
**_render(
209-
name = target,
210-
actual = str(whl_library.same_package_label(target)),
211-
)
212-
)
213-
for target in [
207+
aliases = [
214208
DATA_LABEL,
215209
DIST_INFO_LABEL,
216210
EXTRACTED_WHEEL_FILES,
217-
]
218-
]
211+
] + [
212+
"bin/{}".format(entry_point)
213+
for entry_point in entry_points
214+
],
215+
)
219216

220217
if config_load:
221218
loads.append("""load("{}", "{}")""".format(config_load, "packages"))
222219
from_requires_kwargs["include"] = "packages"
223220

224-
macro_parts.append(render.call(
221+
macro_parts = [render.call(
225222
"whl_library_from_requires_dist",
226223
**_render(**from_requires_kwargs)
227-
))
224+
)]
228225

229226
contents = _TEMPLATE.format(
230227
loads = "\n".join(loads),

python/private/pypi/whl_library.bzl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ def _whl_library_impl(rctx):
442442
sdist_filename = sdist_filename,
443443
dep_template = rctx.attr.dep_template or "@{}{{name}}//:{{target}}".format(
444444
rctx.attr.repo_prefix,
445-
),
445+
) if rctx.attr.dep_template or rctx.attr.repo_prefix else "",
446446
config_load = rctx.attr.config_load,
447447
metadata_name = metadata.name,
448448
metadata_version = metadata.version,
@@ -631,6 +631,11 @@ def _whl_library_deps_impl(rctx):
631631
# Load the METADATA file from a different repository
632632
metadata_path = rctx.path(rctx.attr.whl_library.same_package_label("METADATA"))
633633
metadata = parse_whl_metadata(rctx.read(metadata_path))
634+
entry_points = _get_entry_points(
635+
rctx,
636+
rctx.path(metadata_path).dirname.get_child("site-packages"),
637+
metadata,
638+
)
634639

635640
if not (metadata.name and metadata.version):
636641
logger.fail("Failed to parse METADATA from {}".format(rctx.attr.whl_library))
@@ -644,6 +649,7 @@ def _whl_library_deps_impl(rctx):
644649
extras = rctx.attr.extras,
645650
group_deps = rctx.attr.group_deps,
646651
group_name = rctx.attr.group_name,
652+
entry_points = [e["name"] for e in entry_points.values()],
647653
requires_dist = metadata.requires_dist,
648654
whl_library = rctx.attr.whl_library,
649655
)

python/private/pypi/whl_library_targets.bzl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ def whl_library_targets(
120120
dependencies_with_markers = {},
121121
group_name = "",
122122
native = native,
123+
aliases = [],
123124
src_pkg = Label("//:BUILD.bazel"),
124125
rules = struct(
125126
copy_file = copy_file,
@@ -231,6 +232,13 @@ def whl_library_targets(
231232
visibility = impl_vis,
232233
)
233234

235+
for target in aliases:
236+
native.alias(
237+
name = target,
238+
actual = src_pkg.same_package_label(target),
239+
visibility = ["//visibility:public"],
240+
)
241+
234242
def _config_settings(dependencies_with_markers, rules, **kwargs):
235243
"""Generate config settings for the targets.
236244

0 commit comments

Comments
 (0)