From b2482f54f71616ab54b0f58992ee4118ebe08fad Mon Sep 17 00:00:00 2001 From: Ben Patterson Date: Thu, 14 Aug 2014 10:21:35 -0400 Subject: [PATCH] Check for npm registry and set it if necessary. If paver is being run by a user that is not the same as the user that installed npm on the guest machine, then paver install_prereqs fails with the following error: ---> pavelib.prereqs.install_node_prereqs npm config set registry http://registry.npmjs.org/ npm ERR! Error: EPERM, chown '/home/jenkins/.npmrc' npm ERR! { [Error: EPERM, chown '/home/jenkins/.npmrc'] errno: 50, code: 'EPERM', path: '/home/jenkins/.npmrc' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! System Linux 3.2.0-23-generic npm ERR! command "/usr/bin/node" "/usr/bin/npm" "config" "set" "registry" "http://registry.npmjs.org/" npm ERR! cwd /home/jenkins/shallow-clone npm ERR! node -v v0.10.30 npm ERR! npm -v 1.4.21 npm ERR! path /home/jenkins/.npmrc npm ERR! code EPERM npm ERR! errno 50 npm ERR! stack Error: EPERM, chown '/home/jenkins/.npmrc' npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /home/jenkins/shallow-clone/npm-debug.log npm ERR! not ok code 0 Captured Task Output: --------------------- ---> pavelib.prereqs.install_prereqs ---> pavelib.prereqs.install_ruby_prereqs ---> pavelib.prereqs.install_node_prereqs npm config set registry http://registry.npmjs.org/ Build failed running pavelib.prereqs.install_prereqs: Subprocess return code: 50 This change is a workaround. It will first see if the value is set. In the case that is it not set, it will attempt to set it. (It will then fail; however, re-running the task will subsequently be successful.) --- pavelib/prereqs.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pavelib/prereqs.py b/pavelib/prereqs.py index c0efdff3a8..096c242409 100644 --- a/pavelib/prereqs.py +++ b/pavelib/prereqs.py @@ -102,9 +102,11 @@ def ruby_prereqs_installation(): def node_prereqs_installation(): """ - Installs Node prerequisites + Configures npm and installs Node prerequisites """ - sh("npm config set registry {}".format(NPM_REGISTRY)) + sh("test `npm config get registry` = \"{reg}\" || " + "(echo setting registry; npm config set registry" + " {reg})".format(reg=NPM_REGISTRY)) sh('npm install')