* [PATCH 1/3] fetch2/npm: fix indentation
2016-03-07 4:27 [PATCH 0/3] npm fetcher fixes Paul Eggleton
@ 2016-03-07 4:27 ` Paul Eggleton
2016-03-07 4:27 ` [PATCH 2/3] fetch2/npm: handle alternative dependency syntax Paul Eggleton
2016-03-07 4:27 ` [PATCH 3/3] fetch2/npm: ignore unknown headers in tarballs Paul Eggleton
2 siblings, 0 replies; 4+ messages in thread
From: Paul Eggleton @ 2016-03-07 4:27 UTC (permalink / raw)
To: bitbake-devel
No code changes, just fix to use four spaces.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
lib/bb/fetch2/npm.py | 44 ++++++++++++++++++++++----------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/lib/bb/fetch2/npm.py b/lib/bb/fetch2/npm.py
index f99b308..59312f4 100644
--- a/lib/bb/fetch2/npm.py
+++ b/lib/bb/fetch2/npm.py
@@ -57,10 +57,10 @@ class Npm(FetchMethod):
logger.debug(1, "NpmFetch: %s", msg)
def clean(self, ud, d):
- logger.debug(2, "Calling cleanup %s" % ud.pkgname)
- bb.utils.remove(ud.localpath, False)
- bb.utils.remove(ud.pkgdatadir, True)
- bb.utils.remove(ud.fullmirror, False)
+ logger.debug(2, "Calling cleanup %s" % ud.pkgname)
+ bb.utils.remove(ud.localpath, False)
+ bb.utils.remove(ud.pkgdatadir, True)
+ bb.utils.remove(ud.fullmirror, False)
def urldata_init(self, ud, d):
"""
@@ -105,32 +105,32 @@ class Npm(FetchMethod):
runfetchcmd(command, d, quiet)
def _unpackdep(self, ud, pkg, data, destdir, dldir, d):
- file = data[pkg]['tgz']
- logger.debug(2, "file to extract is %s" % file)
- if file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'):
+ file = data[pkg]['tgz']
+ logger.debug(2, "file to extract is %s" % file)
+ if file.endswith('.tgz') or file.endswith('.tar.gz') or file.endswith('.tar.Z'):
cmd = 'tar xz --strip 1 --no-same-owner -f %s/%s' % (dldir, file)
- else:
+ else:
bb.fatal("NPM package %s downloaded not a tarball!" % file)
- # Change to subdir before executing command
- save_cwd = os.getcwd()
- if not os.path.exists(destdir):
- os.makedirs(destdir)
- os.chdir(destdir)
- path = d.getVar('PATH', True)
- if path:
+ # Change to subdir before executing command
+ save_cwd = os.getcwd()
+ if not os.path.exists(destdir):
+ os.makedirs(destdir)
+ os.chdir(destdir)
+ path = d.getVar('PATH', True)
+ if path:
cmd = "PATH=\"%s\" %s" % (path, cmd)
- bb.note("Unpacking %s to %s/" % (file, os.getcwd()))
- ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
- os.chdir(save_cwd)
+ bb.note("Unpacking %s to %s/" % (file, os.getcwd()))
+ ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
+ os.chdir(save_cwd)
- if ret != 0:
+ if ret != 0:
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
- if 'deps' not in data[pkg]:
+ if 'deps' not in data[pkg]:
return
- for dep in data[pkg]['deps']:
- self._unpackdep(ud, dep, data[pkg]['deps'], "%s/node_modules/%s" % (destdir, dep), dldir, d)
+ for dep in data[pkg]['deps']:
+ self._unpackdep(ud, dep, data[pkg]['deps'], "%s/node_modules/%s" % (destdir, dep), dldir, d)
def unpack(self, ud, destdir, d):
--
2.5.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 2/3] fetch2/npm: handle alternative dependency syntax
2016-03-07 4:27 [PATCH 0/3] npm fetcher fixes Paul Eggleton
2016-03-07 4:27 ` [PATCH 1/3] fetch2/npm: fix indentation Paul Eggleton
@ 2016-03-07 4:27 ` Paul Eggleton
2016-03-07 4:27 ` [PATCH 3/3] fetch2/npm: ignore unknown headers in tarballs Paul Eggleton
2 siblings, 0 replies; 4+ messages in thread
From: Paul Eggleton @ 2016-03-07 4:27 UTC (permalink / raw)
To: bitbake-devel
npm allows you to specify a dependency as a Github username+path, or
omit the version entirely. You can hit these if you don't use a
shrinkwrap file, with the result that the code later fails due to the
output of "npm view" being empty; so handle this lazily by just ignoring
this part of the dependency if it's not really a version.
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
lib/bb/fetch2/npm.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/bb/fetch2/npm.py b/lib/bb/fetch2/npm.py
index 59312f4..761c2e0 100644
--- a/lib/bb/fetch2/npm.py
+++ b/lib/bb/fetch2/npm.py
@@ -144,13 +144,15 @@ class Npm(FetchMethod):
def _getdependencies(self, pkg, data, version, d, ud):
pkgfullname = pkg
- if version:
+ if version != '*' and not '/' in version:
pkgfullname += "@%s" % version
logger.debug(2, "Calling getdeps on %s" % pkg)
fetchcmd = "npm view %s dist.tarball --registry %s" % (pkgfullname, ud.registry)
output = runfetchcmd(fetchcmd, d, True)
# npm may resolve multiple versions
outputarray = output.strip().splitlines()
+ if not outputarray:
+ raise FetchError("The command '%s' returned no output" % fetchcmd)
# we just take the latest version npm resolved
#logger.debug(2, "Output URL is %s - %s - %s" % (ud.basepath, ud.basename, ud.localfile))
outputurl = outputarray[len(outputarray)-1].rstrip()
--
2.5.0
^ permalink raw reply related [flat|nested] 4+ messages in thread