blob: 282df88fefa5b590ce01cb66fcad25ac1f5f7e4d [file] [log] [blame]
diff --git a/npm/private/npm_package_store.bzl b/npm/private/npm_package_store.bzl
index 9ab33e56..46446bd9 100644
--- a/npm/private/npm_package_store.bzl
+++ b/npm/private/npm_package_store.bzl
@@ -198,23 +198,14 @@ def _npm_package_store_impl(ctx):
if utils.is_tarball_extension(src_directory.extension):
# npm packages are always published with one top-level directory inside the tarball, tho the name is not predictable
# we can use the --strip-components 1 argument with tar to strip one directory level
- args = ctx.actions.args()
- args.add("--extract")
- args.add("--no-same-owner")
- args.add("--no-same-permissions")
- args.add("--strip-components")
- args.add(str(1))
- args.add("--file")
- args.add(src_directory.path)
- args.add("--directory")
- args.add(virtual_store_directory.path)
-
bsdtar = ctx.toolchains["@aspect_bazel_lib//lib:tar_toolchain_type"]
- ctx.actions.run(
- executable = bsdtar.tarinfo.binary,
+ ctx.actions.run_shell(
+ tools = [bsdtar.tarinfo.binary],
inputs = depset(direct = [src_directory], transitive = [bsdtar.default.files]),
outputs = [virtual_store_directory],
- arguments = [args],
+ command = bsdtar.tarinfo.binary.path + " --extract --no-same-owner --no-same-permissions --strip-components 1 --file " +
+ src_directory.path + " --directory " +
+ virtual_store_directory.path + " && find " + virtual_store_directory.path + " -type d -exec chmod 755 {} \\;",
mnemonic = "NpmPackageExtract",
progress_message = "Extracting npm package {}@{}".format(package, version),
)