Hi jérémy, On Wed, Apr 24, 2013 at 11:13:57AM +0200, Jérémy Lal wrote: > (resending using another smtp, your mta rejected mine the first try) > > On 24/04/2013 06:23, Guido Günther wrote: > > Package: npm > > Followup-For: Bug #705236 > > > > I wonder if it would make sense to ship npm from nodejs itself? This > > would make sure these are in sync. cc: the nodejs maintainers for that. > > > > If not I'd be happy to NMU a new npm version. > > Cheers, > > I think it doesn't make sense packaging npm within nodejs, > - they are very different software > - npm depends on many other modules, nodejs doesn't > - the packaging work is very different
That's fine. I was just suggesting this since it might save some effort. Having it packaged separately is preferable of course. > There is still work to do on npm dependencies. Some of them > should better be left bundled in npm (because they are so bound > to npm and better alternatives exist, or because nobody would > use them anyway). > > I'll have some time to finish this job next month. If you can > help before, we can talk on #debian-js. I've attached my current diff here (excluding the upstream import of 1.2.18) that gave me a working (but far from lintian clean) version. I'll update it should I find some time to make some more progress. Cheers, -- Guido
diff --git a/debian/install b/debian/install index 2972590..25a1372 100644 --- a/debian/install +++ b/debian/install @@ -1,9 +1,8 @@ lib/*.js usr/share/npm/lib lib/utils/*.js usr/share/npm/lib/utils lib/utils/completion usr/share/npm/lib/utils -lib/utils/npm-registry-client usr/share/npm/lib/utils bin/*.js usr/share/npm/bin package.json usr/share/npm node_modules usr/share/npm debian/npmrc usr/share/npm -doc usr/share/npm \ No newline at end of file +doc usr/share/npm diff --git a/debian/patches/1001_sort_index_build.patch b/debian/patches/1001_sort_index_build.patch deleted file mode 100644 index 03b0101..0000000 --- a/debian/patches/1001_sort_index_build.patch +++ /dev/null @@ -1,15 +0,0 @@ -Description: Sort globbed files when building index of documentation. -Origin: upstream,https://github.com/isaacs/npm/commit/af6444fe -Forwarded: not-needed -Author: Jérémy Lal <kapo...@melix.org> -Last-Update: 2012-04-07 ---- a/scripts/index-build.js -+++ b/scripts/index-build.js -@@ -12,6 +12,7 @@ - - function done (which) { return function (er, docs) { - if (er) throw er -+ docs.sort(); - if (which === "api") apidocs = docs - else clidocs = docs - diff --git a/debian/patches/1002_only_use_numeric_UIDs_and_GIDs_in_spawn.patch b/debian/patches/1002_only_use_numeric_UIDs_and_GIDs_in_spawn.patch deleted file mode 100644 index 4b1640b..0000000 --- a/debian/patches/1002_only_use_numeric_UIDs_and_GIDs_in_spawn.patch +++ /dev/null @@ -1,45 +0,0 @@ -Description: Only use numeric UIDs and GIDs in spawn. -Origin: upstream,https://github.com/isaacs/npm/commit/76c7d93e -Forwarded: not-needed -Last-Update: 2012-09-09 ---- - lib/utils/exec.js | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) - ---- a/lib/utils/exec.js -+++ b/lib/utils/exec.js -@@ -11,6 +11,7 @@ - , myGID = process.getgid ? process.getgid() : null - , isRoot = process.getuid && myUID === 0 - , constants = require("constants") -+ , uidNumber = require("./uid-number.js") - - function exec (cmd, args, env, takeOver, cwd, uid, gid, cb) { - if (typeof cb !== "function") cb = gid, gid = null -@@ -34,6 +35,15 @@ - log.verbose(uid, "Setting uid from "+myUID) - log.verbose(new Error().stack, "stack at uid setting") - } -+ -+ if (isNaN(uid) || isNaN(gid)) { -+ // get the numeric values -+ return uidNumber(uid, gid, function (er, uid, gid) { -+ if (er) return cb(er) -+ exec(cmd, args, env, takeOver, cwd, uid, gid, cb) -+ }) -+ } -+ - log.silly(cmd+" "+args.map(JSON.stringify).join(" "), "exec") - var stdout = "" - , stderr = "" -@@ -94,8 +104,8 @@ - , env : env || process.env - , cwd : cwd || null } - , cp -- if (uid != null) opts.uid = uid -- if (gid != null) opts.gid = gid -+ if (!isNaN(uid)) opts.uid = uid -+ if (!isNaN(gid)) opts.gid = gid - if (!isNaN(opts.uid)) opts.uid = +opts.uid - if (!isNaN(opts.gid)) opts.gid = +opts.gid - var name = c +" "+ a.map(JSON.stringify).join(" ") diff --git a/debian/patches/2001_no-false-attribs.patch b/debian/patches/2001_no-false-attribs.patch index 1afb202..f722f74 100644 --- a/debian/patches/2001_no-false-attribs.patch +++ b/debian/patches/2001_no-false-attribs.patch @@ -6,19 +6,30 @@ Description: Comply with Expat+no-false-attribs license package to displays its own bug tracker instead. Forwarded: not-needed Author: Jérémy Lal <kapo...@melix.org> -Last-Update: 2012-03-13 +Last-Update: 2013-04-24 + +--- + lib/utils/error-handler.js | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/lib/utils/error-handler.js b/lib/utils/error-handler.js +index 88ce742..0d1bc94 100644 --- a/lib/utils/error-handler.js +++ b/lib/utils/error-handler.js -@@ -169,9 +169,9 @@ +@@ -229,11 +229,11 @@ function errorHandler (er) { + default: - log.error(er) - log.error(["You may report this log at:" -- ," <http://github.com/isaacs/npm/issues>" -- ,"or email it to:" -- ," <n...@googlegroups.com>" + log.error("", er.stack || er.message || er) +- log.error("", ["If you need help, you may report this log at:" +- ," <http://github.com/isaacs/npm/issues>" +- ,"or email it to:" +- ," <n...@googlegroups.com>" +- ].join("\n")) ++ log.error(["You may report this log at:" + ," <http://bugs.debian.org/npm>" + ,"or use" + ," reportbug --attach "+path.resolve("npm-debug.log")+" npm" - ].join("\n")) ++ ].join("\n")) + printStack = false break } diff --git a/debian/patches/2002_use_ruby_ronn.patch b/debian/patches/2002_use_ruby_ronn.patch index 2e0c266..135a0c8 100644 --- a/debian/patches/2002_use_ruby_ronn.patch +++ b/debian/patches/2002_use_ruby_ronn.patch @@ -3,6 +3,13 @@ Description: Use ruby-ronn to generate documentation Forwarded: not-needed Author: Jérémy Lal <kapo...@melix.org> Last-Update: 2012-04-07 + +--- + scripts/doc-build.sh | 42 ++++++------------------------------------ + 1 file changed, 6 insertions(+), 36 deletions(-) + +diff --git a/scripts/doc-build.sh b/scripts/doc-build.sh +index 9a66d4d..09033a0 100755 --- a/scripts/doc-build.sh +++ b/scripts/doc-build.sh @@ -1,37 +1,5 @@ @@ -43,7 +50,7 @@ Last-Update: 2012-04-07 src=$1 dest=$2 name=$(basename ${src%.*}) -@@ -42,7 +10,7 @@ +@@ -42,7 +10,7 @@ mkdir -p $(dirname $dest) case $dest in *.[13]) @@ -52,7 +59,7 @@ Last-Update: 2012-04-07 | sed "s|@VERSION@|$version|g" \ | perl -pi -e 's/npm\\-([^\(]*)\(1\)/npm help \1/g' \ | perl -pi -e 's/npm\\-([^\(]*)\(3\)/npm apihelp \1/g' \ -@@ -53,7 +21,7 @@ +@@ -53,7 +21,7 @@ case $dest in ;; *.html) (cat html/dochead.html && \ @@ -61,7 +68,7 @@ Last-Update: 2012-04-07 cat html/docfoot.html )\ | sed "s|@NAME@|$name|g" \ | sed "s|@DATE@|$date|g" \ -@@ -62,8 +30,10 @@ +@@ -62,8 +30,10 @@ case $dest in | perl -pi -e 's/npm-npm/npm/g' \ | perl -pi -e 's/([^"-])(npm-)?README(\(1\))?/\1<a href="..\/doc\/README.html">README<\/a>/g' \ | perl -pi -e 's/<title><a href="..\/doc\/README.html">README<\/a><\/title>/<title>README<\/title>/g' \ diff --git a/debian/patches/2003_fix_doc.patch b/debian/patches/2003_fix_doc.patch index f35b5f9..b6f00b0 100644 --- a/debian/patches/2003_fix_doc.patch +++ b/debian/patches/2003_fix_doc.patch @@ -2,9 +2,16 @@ Description: ruby-ronn does not handle h4 Forwarded: not-needed Author: Jérémy Lal <kapo...@melix.org> Last-Update: 2012-04-07 + +--- + doc/cli/folders.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/doc/cli/folders.md b/doc/cli/folders.md +index 2035861..416f3ce 100644 --- a/doc/cli/folders.md +++ b/doc/cli/folders.md -@@ -135,7 +135,7 @@ +@@ -135,7 +135,7 @@ prevented. Another optimization can be made by installing dependencies at the highest level possible, below the localized "target" folder. diff --git a/debian/patches/2004_remove_shebang.patch b/debian/patches/2004_remove_shebang.patch index 8a75435..c74c8c7 100644 --- a/debian/patches/2004_remove_shebang.patch +++ b/debian/patches/2004_remove_shebang.patch @@ -2,6 +2,13 @@ Description: remove shebang from completion script Forwarded: not-needed Author: Jérémy Lal <kapo...@melix.org> Last-Update: 2012-04-07 + +--- + lib/utils/completion.sh | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/lib/utils/completion.sh b/lib/utils/completion.sh +index d027590..da9818d 100755 --- a/lib/utils/completion.sh +++ b/lib/utils/completion.sh @@ -1,4 +1,3 @@ diff --git a/debian/patches/2005_index_build_dont_run_npm.patch b/debian/patches/2005_index_build_dont_run_npm.patch index 5a94193..f3dd181 100644 --- a/debian/patches/2005_index_build_dont_run_npm.patch +++ b/debian/patches/2005_index_build_dont_run_npm.patch @@ -3,9 +3,16 @@ Description: Do not run cli.js as it depends on many packages. Forwarded: not-needed Author: Jérémy Lal <kapo...@melix.org> Last-Update: 2012-04-07 + +--- + scripts/doc-build.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/doc-build.sh b/scripts/doc-build.sh +index 09033a0..b44b3a8 100755 --- a/scripts/doc-build.sh +++ b/scripts/doc-build.sh -@@ -4,7 +4,7 @@ +@@ -4,7 +4,7 @@ src=$1 dest=$2 name=$(basename ${src%.*}) date=$(date -u +'%Y-%M-%d %H:%m:%S') diff --git a/debian/patches/2006_rename_node_to_nodejs.patch b/debian/patches/2006_rename_node_to_nodejs.patch index a8bcedf..6cdc3d6 100644 --- a/debian/patches/2006_rename_node_to_nodejs.patch +++ b/debian/patches/2006_rename_node_to_nodejs.patch @@ -6,47 +6,18 @@ Forwarded: not-needed Author: Jérémy Lal <kapo...@melix.org> Last-Update: 2012-09-21 ---- a/test/packages/npm-test-shrinkwrap/test.sh -+++ b/test/packages/npm-test-shrinkwrap/test.sh -@@ -3,7 +3,7 @@ - # ensure that we get the npm being tested, not some global thing. - npmbin=$npm_config_prefix/bin/npm - npm () { -- node $npmbin "$@" -+ nodejs $npmbin "$@" - } - - # work around the weird env we're in, as part of npm's test ---- a/scripts/index-build.js -+++ b/scripts/index-build.js -@@ -1,4 +1,4 @@ --#!/usr/bin/env node -+#!/usr/bin/nodejs - var fs = require("fs") - , path = require("path") - , cli = path.resolve(__dirname, "..", "doc", "cli") ---- a/scripts/clean-old.sh -+++ b/scripts/clean-old.sh -@@ -26,7 +26,7 @@ - else - node="$NODE" - if [ "x$node" = "x" ]; then -- node=`which node` -+ node=`which nodejs` - fi - if [ "x$node" = "x" ]; then - echo "Can't find node to determine prefix. Aborting." ---- a/scripts/install.sh -+++ b/scripts/install.sh -@@ -42,7 +42,7 @@ - export npm_config_loglevel - - # make sure that node exists --node=`which node 2>&1` -+node=`which nodejs 2>&1` - ret=$? - if [ $ret -eq 0 ] && [ -x "$node" ]; then - (exit 0) +--- + Makefile | 17 +++++++++-------- + bin/npm-cli.js | 2 +- + cli.js | 2 +- + lib/utils/lifecycle.js | 5 ++++- + scripts/clean-old.sh | 2 +- + scripts/index-build.js | 2 +- + scripts/install.sh | 2 +- + 7 files changed, 18 insertions(+), 14 deletions(-) + +diff --git a/Makefile b/Makefile +index 82fa8b6..c014baa 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ @@ -55,7 +26,7 @@ Last-Update: 2012-09-21 markdowns = $(shell find doc -name '*.md' | grep -v 'index') README.md -@@ -33,23 +34,23 @@ +@@ -33,23 +34,23 @@ latest: @echo "Installing latest published npm" @echo "Use 'make install' or 'make link' to install the code" @echo "in this folder that you're looking at right now." @@ -84,7 +55,7 @@ Last-Update: 2012-09-21 doc: $(mandocs) $(htmldocs) -@@ -89,17 +90,17 @@ +@@ -89,17 +90,17 @@ html/api/%.html: doc/api/%.md html/dochead.html html/docfoot.html scripts/doc-bu scripts/doc-build.sh $< $@ doc/cli/index.md: $(markdowns) scripts/index-build.js scripts/doc-build.sh package.json @@ -92,8 +63,8 @@ Last-Update: 2012-09-21 + $(node) scripts/index-build.js > $@ node_modules/.bin/ronn: -- node cli.js install https://github.com/isaacs/ronnjs/tarball/master -+ $(node) cli.js install https://github.com/isaacs/ronnjs/tarball/master +- node cli.js install ronn ++ $(node) cli.js install ronn doc: man @@ -103,14 +74,10 @@ Last-Update: 2012-09-21 - node cli.js test + $(node) cli.js test - version: link - git add package.json &&\ ---- a/cli.js -+++ b/cli.js -@@ -1,2 +1,2 @@ --#!/usr/bin/env node -+#!/usr/bin/nodejs - require("./bin/npm-cli.js") + publish: link doc + @git push origin :v$(shell npm -v) || true +diff --git a/bin/npm-cli.js b/bin/npm-cli.js +index ef88735..8b2195d 100755 --- a/bin/npm-cli.js +++ b/bin/npm-cli.js @@ -1,4 +1,4 @@ @@ -119,17 +86,63 @@ Last-Update: 2012-09-21 ;(function () { // wrapper in case we're in module_context mode // windows: running "npm blah" in this folder will invoke WSH, not node. +diff --git a/cli.js b/cli.js +index 0df931e..f5a3f87 100755 +--- a/cli.js ++++ b/cli.js +@@ -1,2 +1,2 @@ +-#!/usr/bin/env node ++#!/usr/bin/nodejs + require("./bin/npm-cli.js") +diff --git a/lib/utils/lifecycle.js b/lib/utils/lifecycle.js +index 3f0042f..2642068 100644 --- a/lib/utils/lifecycle.js +++ b/lib/utils/lifecycle.js -@@ -153,7 +153,10 @@ - er.stage = stage - er.script = env.npm_lifecycle_script - er.pkgname = pkg.name -- return cb(er) -+ cb(er) -+ log.warn('', 'This failure might be due to the use of legacy binary "node"') -+ log.warn("For further explanations, please read\n/usr/share/doc/nodejs/README.Debian\n") -+ return - } else if (er) { - log.error(er, pkg._id+"."+stage) - log.error("failed, but continuing anyway", pkg._id+"."+stage) +@@ -164,7 +164,10 @@ function runPackageLifecycle (pkg, env, wd, unsafe, cb) { + er.stage = stage + er.script = env.npm_lifecycle_script + er.pkgname = pkg.name +- return cb(er) ++ var ret = cb(er) ++ log.warn('', 'This failure might be due to the use of legacy binary "node"') ++ log.warn("For further explanations, please read\n/usr/share/doc/nodejs/README.Debian\n") ++ return ret + } else if (er) { + log.error(pkg._id+"."+stage, er) + log.error(pkg._id+"."+stage, "continuing anyway") +diff --git a/scripts/clean-old.sh b/scripts/clean-old.sh +index cda80f2..d1b4110 100755 +--- a/scripts/clean-old.sh ++++ b/scripts/clean-old.sh +@@ -26,7 +26,7 @@ if [ "x$npm_config_prefix" != "x" ]; then + else + node="$NODE" + if [ "x$node" = "x" ]; then +- node=`which node` ++ node=`which nodejs` + fi + if [ "x$node" = "x" ]; then + echo "Can't find node to determine prefix. Aborting." +diff --git a/scripts/index-build.js b/scripts/index-build.js +index 551bb1d..4bd288e 100755 +--- a/scripts/index-build.js ++++ b/scripts/index-build.js +@@ -1,4 +1,4 @@ +-#!/usr/bin/env node ++#!/usr/bin/nodejs + var fs = require("fs") + , path = require("path") + , cli = path.resolve(__dirname, "..", "doc", "cli") +diff --git a/scripts/install.sh b/scripts/install.sh +index a8e588d..0abf69a 100755 +--- a/scripts/install.sh ++++ b/scripts/install.sh +@@ -42,7 +42,7 @@ fi + export npm_config_loglevel + + # make sure that node exists +-node=`which node 2>&1` ++node=`which nodejs 2>&1` + ret=$? + if [ $ret -eq 0 ] && [ -x "$node" ]; then + (exit 0) diff --git a/debian/patches/series b/debian/patches/series index f324ddb..1be41eb 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,5 +1,3 @@ -1001_sort_index_build.patch -1002_only_use_numeric_UIDs_and_GIDs_in_spawn.patch 2001_no-false-attribs.patch 2002_use_ruby_ronn.patch 2003_fix_doc.patch