diff options
author | Anders Darander <anders@chargestorm.se> | 2017-03-13 11:01:52 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-03-22 11:35:20 +0000 |
commit | 6fa0fda1165f05adc9d971a8c873dbbd4ba18d6a (patch) | |
tree | 2980ee319648c05dbe042860d007b1da23dbd342 /scripts/lib/recipetool/create_npm.py | |
parent | 2b52d7ebc0a1dea68bfad8dcb048778ab00c631d (diff) | |
download | poky-6fa0fda1165f05adc9d971a8c873dbbd4ba18d6a.tar.gz |
devtool/recipetill: npm install of devDependencies
Web applications built using e.g. angular2, usually requires that the
packages in devDependencies are available.
Thus, add an option '--fetch-dev' to both devtool add and recipetool, to
add npm packages in devDependencies to DEPENDS.
(From OE-Core rev: f246f820d53b459596fde6758a09f7a0d7db7c4c)
Signed-off-by: Anders Darander <anders@chargestorm.se>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/recipetool/create_npm.py')
-rw-r--r-- | scripts/lib/recipetool/create_npm.py | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/scripts/lib/recipetool/create_npm.py b/scripts/lib/recipetool/create_npm.py index 158029fa04..a21502679e 100644 --- a/scripts/lib/recipetool/create_npm.py +++ b/scripts/lib/recipetool/create_npm.py | |||
@@ -101,7 +101,7 @@ class NpmRecipeHandler(RecipeHandler): | |||
101 | extravalues['extrafiles']['lockdown.json'] = tmpfile | 101 | extravalues['extrafiles']['lockdown.json'] = tmpfile |
102 | lines_before.append('NPM_LOCKDOWN := "${THISDIR}/${PN}/lockdown.json"') | 102 | lines_before.append('NPM_LOCKDOWN := "${THISDIR}/${PN}/lockdown.json"') |
103 | 103 | ||
104 | def _handle_dependencies(self, d, deps, optdeps, lines_before, srctree): | 104 | def _handle_dependencies(self, d, deps, optdeps, devdeps, lines_before, srctree): |
105 | import scriptutils | 105 | import scriptutils |
106 | # If this isn't a single module we need to get the dependencies | 106 | # If this isn't a single module we need to get the dependencies |
107 | # and add them to SRC_URI | 107 | # and add them to SRC_URI |
@@ -115,6 +115,10 @@ class NpmRecipeHandler(RecipeHandler): | |||
115 | depdata = self.get_npm_data(dep, depver, d) | 115 | depdata = self.get_npm_data(dep, depver, d) |
116 | if self.check_npm_optional_dependency(depdata): | 116 | if self.check_npm_optional_dependency(depdata): |
117 | deplist[dep] = depdata | 117 | deplist[dep] = depdata |
118 | for dep, depver in devdeps.items(): | ||
119 | depdata = self.get_npm_data(dep, depver, d) | ||
120 | if self.check_npm_optional_dependency(depdata): | ||
121 | deplist[dep] = depdata | ||
118 | for dep, depver in deps.items(): | 122 | for dep, depver in deps.items(): |
119 | depdata = self.get_npm_data(dep, depver, d) | 123 | depdata = self.get_npm_data(dep, depver, d) |
120 | deplist[dep] = depdata | 124 | deplist[dep] = depdata |
@@ -197,8 +201,9 @@ class NpmRecipeHandler(RecipeHandler): | |||
197 | if 'homepage' in data: | 201 | if 'homepage' in data: |
198 | extravalues['HOMEPAGE'] = data['homepage'] | 202 | extravalues['HOMEPAGE'] = data['homepage'] |
199 | 203 | ||
200 | deps, optdeps = self.get_npm_package_dependencies(data) | 204 | fetchdev = extravalues['fetchdev'] or None |
201 | updated = self._handle_dependencies(tinfoil.config_data, deps, optdeps, lines_before, srctree) | 205 | deps, optdeps, devdeps = self.get_npm_package_dependencies(data, fetchdev) |
206 | updated = self._handle_dependencies(tinfoil.config_data, deps, optdeps, devdeps, lines_before, srctree) | ||
202 | if updated: | 207 | if updated: |
203 | # We need to redo the license stuff | 208 | # We need to redo the license stuff |
204 | self._replace_license_vars(srctree, lines_before, handled, extravalues, tinfoil.config_data) | 209 | self._replace_license_vars(srctree, lines_before, handled, extravalues, tinfoil.config_data) |
@@ -293,18 +298,26 @@ class NpmRecipeHandler(RecipeHandler): | |||
293 | 298 | ||
294 | # FIXME this is effectively duplicated from lib/bb/fetch2/npm.py | 299 | # FIXME this is effectively duplicated from lib/bb/fetch2/npm.py |
295 | # (split out from _getdependencies()) | 300 | # (split out from _getdependencies()) |
296 | def get_npm_package_dependencies(self, pdata): | 301 | def get_npm_package_dependencies(self, pdata, fetchdev): |
297 | dependencies = pdata.get('dependencies', {}) | 302 | dependencies = pdata.get('dependencies', {}) |
298 | optionalDependencies = pdata.get('optionalDependencies', {}) | 303 | optionalDependencies = pdata.get('optionalDependencies', {}) |
299 | dependencies.update(optionalDependencies) | 304 | dependencies.update(optionalDependencies) |
305 | if fetchdev: | ||
306 | devDependencies = pdata.get('devDependencies', {}) | ||
307 | dependencies.update(devDependencies) | ||
308 | else: | ||
309 | devDependencies = {} | ||
300 | depsfound = {} | 310 | depsfound = {} |
301 | optdepsfound = {} | 311 | optdepsfound = {} |
312 | devdepsfound = {} | ||
302 | for dep in dependencies: | 313 | for dep in dependencies: |
303 | if dep in optionalDependencies: | 314 | if dep in optionalDependencies: |
304 | optdepsfound[dep] = dependencies[dep] | 315 | optdepsfound[dep] = dependencies[dep] |
316 | elif dep in devDependencies: | ||
317 | devdepsfound[dep] = dependencies[dep] | ||
305 | else: | 318 | else: |
306 | depsfound[dep] = dependencies[dep] | 319 | depsfound[dep] = dependencies[dep] |
307 | return depsfound, optdepsfound | 320 | return depsfound, optdepsfound, devdepsfound |
308 | 321 | ||
309 | # FIXME this is effectively duplicated from lib/bb/fetch2/npm.py | 322 | # FIXME this is effectively duplicated from lib/bb/fetch2/npm.py |
310 | # (split out from _getdependencies()) | 323 | # (split out from _getdependencies()) |