Skip to content

Commit 33b0187

Browse files
committed
Optimize package store symlink creation
1 parent fcad60f commit 33b0187

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

npm/private/npm_package_store.bzl

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ If set, takes precendance over the package version in the `NpmPackageInfo` src.
157157
),
158158
}
159159

160+
_PACKAGE_STORE_PREFIX_LEN = len("node_modules/" + utils.package_store_root)
161+
160162
def _npm_package_store_impl(ctx):
161163
if ctx.attr.src:
162164
if NpmPackageInfo in ctx.attr.src:
@@ -369,10 +371,21 @@ deps of npm_package_store must be in the same package.""" % (ctx.label.package,
369371
actual_dep = deps_map[dep_ref_dep_package_store_name]
370372
dep_ref_def_package_store_directory = actual_dep[NpmPackageStoreInfo].package_store_directory
371373
if dep_ref_def_package_store_directory:
374+
375+
prefix_len = _PACKAGE_STORE_PREFIX_LEN
376+
if ctx.label.package:
377+
prefix_len += len(ctx.label.package) + 1
378+
target = dep_ref_def_package_store_directory.short_path[prefix_len:]
379+
372380
for dep_ref_dep_alias in dep_ref_dep_aliases:
373381
# "node_modules/{package_store_root}/{package_store_name}/node_modules/{package}"
374382
dep_ref_dep_symlink_path = "node_modules/{}/{}/node_modules/{}".format(utils.package_store_root, dep_package_store_name, dep_ref_dep_alias)
375-
files.append(utils.make_symlink(ctx, dep_ref_dep_symlink_path, dep_ref_def_package_store_directory.path))
383+
symlink = ctx.actions.declare_symlink(dep_ref_dep_symlink_path)
384+
ctx.actions.symlink(
385+
output = symlink,
386+
target_path = ("../../.." if "/" in dep_ref_dep_alias else "../..") + target,
387+
)
388+
files.append(symlink)
376389
else:
377390
# We should _never_ get here
378391
fail("Internal error")

0 commit comments

Comments
 (0)