[OE-core] [PATCH v4 00/13] NPM refactoring
Jean-Marie LEMETAYER
jean-marie.lemetayer at savoirfairelinux.com
Fri Jan 17 16:45:56 UTC 2020
Hi folks and happy new year,
For readability here is a link if you want the history of this patchset:
http://lists.openembedded.org/pipermail/openembedded-core/2019-December/290298.html
--- V4
The patches can be found here:
https://github.com/savoirfairelinux/openembedded-core/tree/npm-refactoring-v4
- Two fetchers are available: npm and npmsw
- The npm fetcher is used to fetch a single package from a registry.
- The npmsw fetcher is used to fetch the dependencies of a package. It uses a
npm shrinkwrap file to list the dependencies. The file can be edited
manually if some dependencies needs to be updated.
- Both fetcher are independent.
For example you can have a main package using npm:
SRC_URI = "npm://registry.url;package=foobar;version=1.0.0 \
npmsw://${THISDIR}/npm-shrinkwrap.json"
The main package can also be fetched another way without changing anything:
SRC_URI = "git://github.com/foo/bar.git;protocol=https \
npmsw://${THISDIR}/npm-shrinkwrap.json"
- The npm class is in charge of executing the 'npm install'. This installation
is executed completely offline. The package sources can be patched safely
before the build.
- The npm class populates a local npm cache during the do_configure task. As
this step can take time the support of a progress bar have been added.
- The devtool and recipetool scripts have been updated to match the new
fetchers and class. The licences are handled and split by dependencies.
- Both fetcher, the recipe creation and the recipe build are covered by tests.
- Using devtool I have successfully generated and built recipe for:
- My test application:
https://github.com/savoirfairelinux/node-server-example
- The angular cli which will be used to build angular applications:
https://cli.angular.io
- The mozilla iot gateway which is a big project with a lot of dependencies:
https://github.com/mozilla-iot/gateway
To build this project you have to manually add this line in the recipe:
DEPENDS = "nanomsg sqlite3 libuv"
Jean-Marie LEMETAYER (13):
classes/npm: refactor the npm class
classes/npm: restrict the build to be offline
classes/npm: use the local node headers
classes/npm: use the native python
classes/npm: force to rebuild the prebuild addons
devtool: npm: rename npm command line options
recipetool/create_npm: refactor the npm recipe creation handler
recipetool/create_npm: handle the licenses of the dependencies
lib/oe/package: remove unneeded npm_split_package_dirs function
devtool/standard: npm: update the append file
recipetool/create: npm: remove the 'noverify' url parameter
oeqa/selftest/recipetool: add npm recipe creation test
oeqa/selftest/devtool: add npm recipe build test
meta/classes/npm.bbclass | 360 ++++++++++++---
meta/lib/oe/package.py | 33 --
meta/lib/oeqa/selftest/cases/devtool.py | 20 +
meta/lib/oeqa/selftest/cases/recipetool.py | 25 +
scripts/lib/devtool/standard.py | 18 +-
scripts/lib/recipetool/create.py | 10 +-
scripts/lib/recipetool/create_npm.py | 514 +++++++++------------
7 files changed, 564 insertions(+), 416 deletions(-)
--
2.20.1
More information about the Openembedded-core
mailing list