Skip to content
This repository has been archived by the owner on Feb 27, 2024. It is now read-only.

generated file is incomplete #21

Open
AladdiX opened this issue Apr 27, 2015 · 16 comments
Open

generated file is incomplete #21

AladdiX opened this issue Apr 27, 2015 · 16 comments

Comments

@AladdiX
Copy link

AladdiX commented Apr 27, 2015

I'm running npm2nix on my package.json and it finishes without errors, but I'm getting a file that looks like this :

{ self, fetchurl, fetchgit ? null, lib }:

{

I have node v0.12.2 and npm2nix 5.8.1 installed.

@jamesthompson
Copy link

@AladdiX I saw this same behavior... It turned out it was a typo for me, I had Latest rather than latest. This at least fixed it for me. I'm brand new to the program, so I'm not sure that's going to help in your case... but it has to be worth a shot...

@bobvanderlinden
Copy link
Member

I have the same problem with the package.json from popcorntime.

This is with npm2nix 5.12.0 from nixpkgs.

@offlinehacker
Copy link
Contributor

Yes, thats probably because of the changes in npm format, which now supports something like github:owner/repo and similar ways to specifiy git/github repos. I will have to fix npm2nix soon, because we also depend on it. And yeah, everytime npm2nix fails, it generates only header, so there is some other error, besides the empty file.

Too bad i have to fix it every few months(but it's the only thing we have and code is a bit of mess, and yeah coffescript), we will have to figure out simpler and more solid solution for new npm2nix, any ideas?

@bobvanderlinden
Copy link
Member

Hmm, one problem I found was that optjs has a version that is incompatible with the latest semver (3.2.1-boom, notice the -boom. 3.2.1-boom doesn't satisfy the * spec), sigh. The semver version used by the stable npm version works alright, the version used by npm2nix at the moment does not. Should I do a PR to downgrade semver to the right version (~4.2.0 vs ~4.3.0)?

The generated nix file is still not complete though, I'll investigate further.

I see how you'd have to fix things every few months. This really is quite annoying. If npm had some kind of library that handles most of what you're doing in npm2nix, that might be better. Though, from what I've found they don't.

@offlinehacker
Copy link
Contributor

Yeah, i think it should be save to downgrade semver if it fixes the
problem. We still need to find better solution for npm2nix. Is there any
nice way we could get dependencies after doing "npm install"?

On Sun, Jun 7, 2015 at 9:20 PM Bob van der Linden notifications@github.com
wrote:

Hmm, one problem I found was that optjs has a version that is
incompatible with the latest semver (3.2.1-boom, notice the -boom.
3.2.1-boom doesn't satisfy the * spec), sigh. The semver version used by
the stable npm version works alright, the version used by npm2nix at the
moment does not. Should I do a PR to downgrade semver to the right version (
~4.2.0 vs ~4.3.0)?

The generated nix file is still not complete though, I'll investigate
further.

I see how you'd have to fix things every few months. This really is quite
annoying. If npm had some kind of library that handles most of what you're
doing in npm2nix, that might be better. Though, from what I've found they
don't.


Reply to this email directly or view it on GitHub
#21 (comment).

@bobvanderlinden
Copy link
Member

I've submitted #24, which solved the problem of a incomplete output for me. It should also give a better indication why the file isn't complete yet (if this is still a problem), because one of the packages is stuck fetching the necessairy data. With the PR it'll show which packages still seem to be fetching at that time.

@bobvanderlinden
Copy link
Member

@offlinehacker npm ls shows all installed dependencies in node_modules, each with their version number. This could be of use. Not sure if parsing npm ls is the right way or whether we could use npm's code to get the same information in a better format.

@offlinehacker
Copy link
Contributor

It might be sane to add a feature to "npm ls" to output json, this solves a
part of the problem, the other part is fetching dependencies, but this is
clearly more simple problem. I will check if there are any other issues
with taking this approach and write a tool.

On Sun, Jun 7, 2015 at 11:35 PM Bob van der Linden notifications@github.com
wrote:

@offlinehacker https://github.com/offlinehacker npm ls shows all
installed dependencies in node_modules, each with their version number.
This could be of use. Not sure if parsing npm ls is the right way or
whether we could use npm's code to get the same information in a better
format.


Reply to this email directly or view it on GitHub
#21 (comment).

@bobvanderlinden
Copy link
Member

"npm ls" outputs all packages in a recursive tree. You do see the dependencies that way.

What is still missing is the hashes for the targz files. It would be nice if npm could download only the targz files, so that npm2nix can hash them. Not sure what a good approach would be for this though. Maybe those files are available in some cache?

EDIT: Having it in JSON would be a nice approach I think.
Found it: npm ls --json

@offlinehacker
Copy link
Contributor

And hashes for git repos i guess too...

On Sun, Jun 7, 2015 at 11:47 PM Bob van der Linden notifications@github.com
wrote:

"npm ls" outputs all packages in a recursive tree. You do see the
dependencies that way.

What is still missing is the hashes for the targz files. It would be nice
if npm could download only the targz files, so that npm2nix can hash them.
Not sure what a good approach would be for this though. Maybe those files
are available in some cache?


Reply to this email directly or view it on GitHub
#21 (comment).

@bobvanderlinden
Copy link
Member

Oh right, I forgot about those. Since git repos as dependencies aren't the norm it doesn't matter much to retrieve them seperately.

As for targz files: here is the cache: ~/.npm/log-symbols/1.0.2/package.tgz

@bobvanderlinden
Copy link
Member

I've created #25 so that we can focus on reusing npm there. I hope this issue is solved with #24.

@wmertens
Copy link

I'm really looking forward to #25, sounds like the right way to do things! In the mean time, is there a way to get the error from npm2nix so we know where to dig?

@lucabrunox
Copy link

Any news? Nodejs is rather unusable without npm2nix. The latest nixos unstable as of NixOS/nixpkgs@1357692 still has this issue.

@offlinehacker
Copy link
Contributor

We have to make a new implementation, current one is broken by design and
by code. I will not have time before next weekend, but i need this too, so
i will make an attempt then if noone else will do it before.

On Thu, Aug 20, 2015 at 9:31 PM lethalman notifications@github.com wrote:

Any news? Node packages are rather unusable without npm2nix. The latest
nixos unstable as of 1357692 still has this issue.


Reply to this email directly or view it on GitHub
#21 (comment).

@bobvanderlinden
Copy link
Member

@offlinehacker What about the shrinkwrap idea? Is that a viable solution or is it something to avoid?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants