Skip to content

Commit 916a3d6

Browse files
committed
Optimize package store symlink creation
1 parent fcad60f commit 916a3d6

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

npm/private/npm_package_store.bzl

Lines changed: 9 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,16 @@ 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+
target = dep_ref_def_package_store_directory.short_path[_PACKAGE_STORE_PREFIX_LEN:]
372375
for dep_ref_dep_alias in dep_ref_dep_aliases:
373376
# "node_modules/{package_store_root}/{package_store_name}/node_modules/{package}"
374377
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))
378+
symlink = ctx.actions.declare_symlink(dep_ref_dep_symlink_path)
379+
ctx.actions.symlink(
380+
output = symlink,
381+
target_path = ("../../.." if "/" in dep_ref_dep_alias else "../..") + target,
382+
)
383+
files.append(symlink)
376384
else:
377385
# We should _never_ get here
378386
fail("Internal error")

0 commit comments

Comments
 (0)