Skip to content

IOError building terser-webpack-plugin #40

Description

@paulyoung
...
Creating binaries in /nix/store/mf3mihgd2mizk237p7ngh5swn5qfviq6-terser-webpack-plugin-1.1.0-nodejs-8.12.0/bin
bin_name: terser-webpack-plugin
bin_abs_path: /nix/store/mf3mihgd2mizk237p7ngh5swn5qfviq6-terser-webpack-plugin-1.1.0-nodejs-8.12.0/lib/node_modules/terser-webpack-plugin
Traceback (most recent call last):
  File "/nix/store/zd4zda85991mrwaw8q53g1dxy3rrg24y-node-build-tools/bin/install-binaries", line 59, in <module>
    with open(bin_abs_path) as f:
IOError: [Errno 21] Is a directory: u'/nix/store/mf3mihgd2mizk237p7ngh5swn5qfviq6-terser-webpack-plugin-1.1.0-nodejs-8.12.0/lib/node_modules/terser-webpack-plugin'
...

The bin_name: ... and bin_abs_path: ... lines are due to the following local changes:

diff --git a/nix/nix-node-packages/nodeLib/tools/install-binaries b/nix/nix-node-packages/nodeLib/tools/install-binaries
index 12de49b1..aec19510 100755
--- a/nix/nix-node-packages/nodeLib/tools/install-binaries
+++ b/nix/nix-node-packages/nodeLib/tools/install-binaries
@@ -44,11 +44,13 @@ print("Creating binaries in {}".format(bin_folder))

 for bin_name, bin_path in _bin.items():
     bin_name = (bin_name or "").strip()
+    print("bin_name: {}".format(bin_name))
     if bin_name == "":
         sys.exit("Blank binary name for package {}".format(pname))
     # Get the absolute path of the script being pointed to.
     bin_abs_path = normpath(join(out_dir, "lib", "node_modules",
                             package["name"], bin_path))
+    print("bin_abs_path: {}".format(bin_abs_path))
     if not exists(bin_abs_path):
         sys.exit("Package {} version {} declares a binary {} at path {}, "
                  "but there is no such file at that path.".format(

Here's some output from a package that builds correctly, for comparison:

...
Creating binaries in /nix/store/r4pv9vvrr6b18ymwmbcqm6hbhm1709ka-webpack-cli-3.1.2-nodejs-8.12.0/bin
bin_name: webpack-cli
bin_abs_path: /nix/store/r4pv9vvrr6b18ymwmbcqm6hbhm1709ka-webpack-cli-3.1.2-nodejs-8.12.0/lib/node_modules/webpack-cli/bin/cli.js
...

The package.json says "bin": "", at https://github.com/webpack-contrib/terser-webpack-plugin/blob/v1.1.0/package.json#L10

It seems as if the checks here are insufficient:

for bin_name, bin_path in _bin.items():
bin_name = (bin_name or "").strip()
if bin_name == "":
sys.exit("Blank binary name for package {}".format(pname))
# Get the absolute path of the script being pointed to.
bin_abs_path = normpath(join(out_dir, "lib", "node_modules",
package["name"], bin_path))
if not exists(bin_abs_path):
sys.exit("Package {} version {} declares a binary {} at path {}, "
"but there is no such file at that path.".format(
package["name"], package["version"], bin_name, bin_path))

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions