Bug 907628 - npm missing requirement
Summary: npm missing requirement
Keywords:
Status: CLOSED DUPLICATE of bug 905814
Alias: None
Product: Fedora
Classification: Fedora
Component: npm
Version: rawhide
Hardware: Unspecified
OS: Linux
unspecified
urgent
Target Milestone: ---
Assignee: T.C. Hollingsworth
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-02-04 21:04 UTC by Jason Antman
Modified: 2013-02-05 17:08 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2013-02-04 21:58:28 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Jason Antman 2013-02-04 21:04:51 UTC
User-Agent:       Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0
Build Identifier: 

enable updates-testing on a fc18 machine. installation of npm fails with a missing dependency.



Reproducible: Always

Steps to Reproduce:
on fc18:
1. `yum --enablerepo=updates-testing install npm`

Actual Results:  
[...]
--> Finished Dependency Resolution
Error: Package: nodejs-form-data-0.0.6-2.fc18.noarch (updates-testing)
           Requires: npm(combined-stream) = 0.0.3


Expected Results:  
npm installs

I'm classifying this as urgent as this component is non-functional.

It appears that no nodejs-combined-stream package exists. I've looked in Koji, and it's not there at all, not simply missing from the fc18-updates-testing tag, so I assume this is broken on fc19 as well. 

The way I originally found this was when pulling down the fc19 RPMs for nodejs-* and npm and rebuilding in mock for centos-6-x86_64. Another issue discovered in that process is Koji knows about all of the npm(*) dependencies, but they don't appear in the spec file, and when I pulled down all of the SRPMs from Koji, npm rebuilt with no dependencies.

Comment 1 Jason Antman 2013-02-04 21:07:01 UTC
So to reiterate, I believe the nodejs-conbined-stream package simply isn't there. I manually pulled down nodejs-*, nodejs and npm from Koji to rebuild on Cent6, and it's not there.

Aside - T. C., I have working spec files for v8, node and npm on CentOS 6.1. I'm some of the way to working on 5.5 but in dependency hell. I'd be happy to clean up my changes and submit a patch if they might make it into EPEL.

Comment 2 T.C. Hollingsworth 2013-02-04 21:58:28 UTC
(In reply to comment #0)
> It appears that no nodejs-combined-stream package exists. I've looked in
> Koji, and it's not there at all, not simply missing from the
> fc18-updates-testing tag, so I assume this is broken on fc19 as well. 

That's right, it still needs a reviewer:
https://bugzilla.redhat.com/show_bug.cgi?id=891183

> The way I originally found this was when pulling down the fc19 RPMs for
> nodejs-* and npm and rebuilding in mock for centos-6-x86_64. Another issue
> discovered in that process is Koji knows about all of the npm(*)
> dependencies, but they don't appear in the spec file, and when I pulled down
> all of the SRPMs from Koji, npm rebuilt with no dependencies.

npm(foo) Provides and Requires are automatically generated by RPM using code shipped in the nodejs-devel package.  You'll need to put nodejs and nodejs-devel in your mock buildroot for the dependencies to show up. (This is enforced in every spec file by the BuildRequires: nodejs-devel.) You can do this by either by adding a repo to your config or using the awesome mockchain tool [1].

(In reply to comment #1)
> Aside - T. C., I have working spec files for v8, node and npm on CentOS 6.1.
> I'm some of the way to working on 5.5 but in dependency hell. I'd be happy
> to clean up my changes and submit a patch if they might make it into EPEL.

I definitely want to support EPEL, but haven't had time to wrangle with it, so any help is welcome.

[1] http://skvidal.wordpress.com/2012/04/20/mockchain-use-cases-and-examples/

*** This bug has been marked as a duplicate of bug 905814 ***

Comment 3 Jason Antman 2013-02-05 15:13:00 UTC
T.C., sorry for opening a dupe for something that was already known.

I can confirm that mock is installing nodejs-devel (pulled in through the buildrequires in the SRPM I'm feeding it), but my finished RPM requires still only list six items, including bash, sh, env, /usr/bin/node, and two rpmlib's. What I'm seeing is none of those dependencies listed, but a bunch of broken symlinks owned by "npm":
[root@jnkjvmadm1 ~]# rpm -ql npm | grep "/usr/lib/node_modules/npm/node_modules"
/usr/lib/node_modules/npm/node_modules
/usr/lib/node_modules/npm/node_modules/abbrev
/usr/lib/node_modules/npm/node_modules/ansi
/usr/lib/node_modules/npm/node_modules/archy
/usr/lib/node_modules/npm/node_modules/block-stream
/usr/lib/node_modules/npm/node_modules/chownr
/usr/lib/node_modules/npm/node_modules/fstream
/usr/lib/node_modules/npm/node_modules/fstream-npm
/usr/lib/node_modules/npm/node_modules/glob
/usr/lib/node_modules/npm/node_modules/graceful-fs
/usr/lib/node_modules/npm/node_modules/inherits
/usr/lib/node_modules/npm/node_modules/ini
/usr/lib/node_modules/npm/node_modules/init-package-json
/usr/lib/node_modules/npm/node_modules/lockfile
/usr/lib/node_modules/npm/node_modules/lru-cache
/usr/lib/node_modules/npm/node_modules/minimatch
/usr/lib/node_modules/npm/node_modules/mkdirp
/usr/lib/node_modules/npm/node_modules/node-gyp
/usr/lib/node_modules/npm/node_modules/nopt
/usr/lib/node_modules/npm/node_modules/npm-registry-client
/usr/lib/node_modules/npm/node_modules/npmconf
/usr/lib/node_modules/npm/node_modules/npmlog
/usr/lib/node_modules/npm/node_modules/once
/usr/lib/node_modules/npm/node_modules/opener
/usr/lib/node_modules/npm/node_modules/osenv
/usr/lib/node_modules/npm/node_modules/read
/usr/lib/node_modules/npm/node_modules/read-installed
/usr/lib/node_modules/npm/node_modules/read-package-json
/usr/lib/node_modules/npm/node_modules/request
/usr/lib/node_modules/npm/node_modules/retry
/usr/lib/node_modules/npm/node_modules/rimraf
/usr/lib/node_modules/npm/node_modules/semver
/usr/lib/node_modules/npm/node_modules/slide
/usr/lib/node_modules/npm/node_modules/tar
/usr/lib/node_modules/npm/node_modules/uid-number
/usr/lib/node_modules/npm/node_modules/which

[root@jnkjvmadm1 ~]# ls -l /usr/lib/node_modules/npm/node_modules
total 0
lrwxrwxrwx 1 root root 28 Feb  4 12:51 abbrev -> /usr/lib/node_modules/abbrev
lrwxrwxrwx 1 root root 26 Feb  4 12:51 ansi -> /usr/lib/node_modules/ansi
lrwxrwxrwx 1 root root 27 Feb  4 12:51 archy -> /usr/lib/node_modules/archy
lrwxrwxrwx 1 root root 34 Feb  4 12:51 block-stream -> /usr/lib/node_modules/block-stream
lrwxrwxrwx 1 root root 28 Feb  4 12:51 chownr -> /usr/lib/node_modules/chownr
lrwxrwxrwx 1 root root 29 Feb  4 12:51 fstream -> /usr/lib/node_modules/fstream
lrwxrwxrwx 1 root root 33 Feb  4 12:51 fstream-npm -> /usr/lib/node_modules/fstream-npm
lrwxrwxrwx 1 root root 26 Feb  4 12:51 glob -> /usr/lib/node_modules/glob
lrwxrwxrwx 1 root root 33 Feb  4 12:51 graceful-fs -> /usr/lib/node_modules/graceful-fs
lrwxrwxrwx 1 root root 30 Feb  4 12:51 inherits -> /usr/lib/node_modules/inherits
lrwxrwxrwx 1 root root 25 Feb  4 12:51 ini -> /usr/lib/node_modules/ini
lrwxrwxrwx 1 root root 39 Feb  4 12:51 init-package-json -> /usr/lib/node_modules/init-package-json
lrwxrwxrwx 1 root root 30 Feb  4 12:51 lockfile -> /usr/lib/node_modules/lockfile
lrwxrwxrwx 1 root root 31 Feb  4 12:51 lru-cache -> /usr/lib/node_modules/lru-cache
lrwxrwxrwx 1 root root 31 Feb  4 12:51 minimatch -> /usr/lib/node_modules/minimatch
lrwxrwxrwx 1 root root 28 Feb  4 12:51 mkdirp -> /usr/lib/node_modules/mkdirp
lrwxrwxrwx 1 root root 30 Feb  4 12:51 node-gyp -> /usr/lib/node_modules/node-gyp
lrwxrwxrwx 1 root root 26 Feb  4 12:51 nopt -> /usr/lib/node_modules/nopt
lrwxrwxrwx 1 root root 29 Feb  4 12:51 npmconf -> /usr/lib/node_modules/npmconf
lrwxrwxrwx 1 root root 28 Feb  4 12:51 npmlog -> /usr/lib/node_modules/npmlog
lrwxrwxrwx 1 root root 41 Feb  4 12:51 npm-registry-client -> /usr/lib/node_modules/npm-registry-client
lrwxrwxrwx 1 root root 26 Feb  4 12:51 once -> /usr/lib/node_modules/once
lrwxrwxrwx 1 root root 28 Feb  4 12:51 opener -> /usr/lib/node_modules/opener
lrwxrwxrwx 1 root root 27 Feb  4 12:51 osenv -> /usr/lib/node_modules/osenv
lrwxrwxrwx 1 root root 26 Feb  4 12:51 read -> /usr/lib/node_modules/read
lrwxrwxrwx 1 root root 36 Feb  4 12:51 read-installed -> /usr/lib/node_modules/read-installed
lrwxrwxrwx 1 root root 39 Feb  4 12:51 read-package-json -> /usr/lib/node_modules/read-package-json
lrwxrwxrwx 1 root root 29 Feb  4 12:51 request -> /usr/lib/node_modules/request
lrwxrwxrwx 1 root root 27 Feb  4 12:51 retry -> /usr/lib/node_modules/retry
lrwxrwxrwx 1 root root 28 Feb  4 12:51 rimraf -> /usr/lib/node_modules/rimraf
lrwxrwxrwx 1 root root 28 Feb  4 12:51 semver -> /usr/lib/node_modules/semver
lrwxrwxrwx 1 root root 27 Feb  4 12:51 slide -> /usr/lib/node_modules/slide
lrwxrwxrwx 1 root root 25 Feb  4 12:51 tar -> /usr/lib/node_modules/tar
lrwxrwxrwx 1 root root 32 Feb  4 12:51 uid-number -> /usr/lib/node_modules/uid-number
lrwxrwxrwx 1 root root 27 Feb  4 12:51 which -> /usr/lib/node_modules/which

Comment 4 Jason Antman 2013-02-05 17:08:33 UTC
T. C.,

In both my build and the current one I'm pulling in on fc18 from updates-testing, the macros.nodejs file and the /usr/lib/rpm files are in the nodejs package, not nodejs-devel. But that shouldn't really be an issue. However, I just can't figure out how the dependencies are supposed to be generated - or more specifically, where /usr/lib/rpm/nodejs.req is supposed to be called for npm. I see the reqs in the package in fc18 updates-testing, but don't get them when I rebuild the SRPM on my mock on cent6... even though I've confirmed that nodejs and nodejs-devel are installed via `mock shell` and build.log, and confirmed that script is there. I *have* confirmed that if I run nodejs.req manually and feed it the path to the npm package.json file, the deps come out right. 

I guess I'll quit updating this and try to figure things out...


Note You need to log in before you can comment on or make changes to this bug.