[OE-core] [PATCH 1/7] create_npm.py: add devDependencies to depends

Paul Eggleton paul.eggleton at linux.intel.com
Thu Mar 2 01:44:11 UTC 2017


Hi Anders,

On Thursday, 2 March 2017 6:19:55 AM NZDT Anders Darander wrote:
> Web applications built using e.g. angular2, usually requires that the
> packages in devDependencies are available.
> 
> Signed-off-by: Anders Darander <anders at chargestorm.se>
> ---
>  scripts/lib/recipetool/create_npm.py | 17 +++++++++++++----
>  1 file changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/scripts/lib/recipetool/create_npm.py
> b/scripts/lib/recipetool/create_npm.py index 3ba6de0..11b2950 100644
> --- a/scripts/lib/recipetool/create_npm.py
> +++ b/scripts/lib/recipetool/create_npm.py
> @@ -83,7 +83,7 @@ class NpmRecipeHandler(RecipeHandler):
>          extravalues['extrafiles']['lockdown.json'] = tmpfile
>          lines_before.append('NPM_LOCKDOWN :=
> "${THISDIR}/${PN}/lockdown.json"')
> 
> -    def _handle_dependencies(self, d, deps, optdeps, lines_before,
> srctree): +    def _handle_dependencies(self, d, deps, optdeps, devdeps,
> lines_before, srctree): import scriptutils
>          # If this isn't a single module we need to get the dependencies
>          # and add them to SRC_URI
> @@ -97,6 +97,10 @@ class NpmRecipeHandler(RecipeHandler):
>                          depdata = self.get_npm_data(dep, depver, d)
>                          if self.check_npm_optional_dependency(depdata):
>                              deplist[dep] = depdata
> +                    for dep, depver in devdeps.items():
> +                        depdata = self.get_npm_data(dep, depver, d)
> +                        if self.check_npm_optional_dependency(depdata):
> +                            deplist[dep] = depdata
>                      for dep, depver in deps.items():
>                          depdata = self.get_npm_data(dep, depver, d)
>                          deplist[dep] = depdata
> @@ -179,8 +183,8 @@ class NpmRecipeHandler(RecipeHandler):
>                  if 'homepage' in data:
>                      extravalues['HOMEPAGE'] = data['homepage']
> 
> -                deps, optdeps = self.get_npm_package_dependencies(data)
> -                updated = self._handle_dependencies(tinfoil.config_data,
> deps, optdeps, lines_before, srctree) +                deps, optdeps,
> devdeps = self.get_npm_package_dependencies(data) +                updated
> = self._handle_dependencies(tinfoil.config_data, deps, optdeps, devdeps,
> lines_before, srctree) if updated:
>                      # We need to redo the license stuff
>                      self._replace_license_vars(srctree, lines_before,
> handled, extravalues, tinfoil.config_data) @@ -277,15 +281,20 @@ class
> NpmRecipeHandler(RecipeHandler):
>      def get_npm_package_dependencies(self, pdata):
>          dependencies = pdata.get('dependencies', {})
>          optionalDependencies = pdata.get('optionalDependencies', {})
> +        devDependencies = pdata.get('devDependencies', {})
>          dependencies.update(optionalDependencies)
> +        dependencies.update(devDependencies)
>          depsfound = {}
>          optdepsfound = {}
> +        devdepsfound = {}
>          for dep in dependencies:
>              if dep in optionalDependencies:
>                  optdepsfound[dep] = dependencies[dep]
> +            elif dep in devDependencies:
> +                devdepsfound[dep] = dependencies[dep]
>              else:
>                  depsfound[dep] = dependencies[dep]
> -        return depsfound, optdepsfound
> +        return depsfound, optdepsfound, devdepsfound
> 
>      # FIXME this is effectively duplicated from lib/bb/fetch2/npm.py
>      # (split out from _getdependencies())

This worries me slightly - I've no familiarity with angular2 but AIUI in 
general the dev dependencies most often aren't needed, and may be onerous to 
pull in and build - should we really be pulling those in unconditionally?

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the Openembedded-core mailing list