Skip to contentSkip to conversation

npm thoughts

DISCUSSION Trevor Woerner 4 participants 8 messages Feb 28, 2017 – Mar 6, 2017

lore
Share & tools
lore
#0 lore raw

Hi,

I was trying out devtool+npm with the electron quick-start node stuff and noticed some interesting results. This simple app can be found at
https://github.com/electron/electron-quick-start

According to https://wiki.yoctoproject.org/wiki/TipsAndTricks/NPM there are two ways to create a recipe for a node app using The Yocto Project's devtool:
1) by pointing devtool at the npm registry
2) by pointing devtool at the project's source code
It is also possible to:
3) point to a tarball of the project's source

Preparation for 2) is as follows:

	$ git clone git://github.com/electron/electron-quick-start

Further preparation for 3) continues:

	$ tar -c electron-quick-start/ > electron-quick-start.tar
	$ gzip electron-quick-start.tar

It is important to note that the following assumes morty. Master is messed up right now with the introduction of per-recipe sysroots (but is expected to get fixed eventually). The layers used are openembedded-core:morty, bitbake:1.32, and meta-openembedded:morty.

This app's package.json is:

	{
	  "name": "electron-quick-start",
	  "version": "1.0.0",
	  "description": "A minimal Electron application",
	  "main": "main.js",
	  "scripts": {
	    "start": "electron ."
	  },  
	  "repository": "https://github.com/electron/electron-quick-start",
	  "keywords": [
	    "Electron",
	    "quick",
	    "start",
	    "tutorial",
	    "demo"
	  ],  
	  "author": "GitHub",
	  "license": "CC0-1.0",
	  "devDependencies": {
	    "electron": "^1.4.1"
	  }
	}

Testing 3)

	$ . layers/openembedded-core/oe-init-build-env tarball layers/bitbake
	edit conf/bblayers.conf to add meta-openembedded/meta-oe
	$ devtool add electron-quick-start ~/npm/source/electron-quick-start.tar.gz

Here is the recipe devtool creates:
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional. # (Feel free to remove these comments when editing.)

SUMMARY = "A minimal Electron application"
# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is # your responsibility to verify that the values are complete and correct. #
# The following license files were not able to be identified and are # represented as "Unknown" below, you will need to check them yourself:
# LICENSE.md
#
LICENSE = "CC0-1.0"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c4bb4655ae0c8ab590a1aa591e3a80c5"

SRC_URI = "file:///z/npm/source/electron-quick-start.tar.gz"

NPM_LOCKDOWN := "${THISDIR}/${PN}/lockdown.json"

inherit npm

# Must be set after inherit npm since that itself sets S S = "${WORKDIR}/electron-quick-start.git" LICENSE_${PN} = "CC0-1.0"

$ bitbake electron-quick-start
$ tree tmp-glibc/work/i586-oe-linux/electron-quick-start/1.0.0-r0/packages-split/electron-quick-start electron-quick-start
└── usr
└── lib
└── node_modules
└── electron-quick-start
├── index.html
├── LICENSE.md
├── main.js
├── package.json
├── README.md
└── renderer.js

Testing 2)

	$ . layers/openembedded-core/oe-init-build-env clone layers/bitbake
	edit conf/bblayers.conf to add meta-openembedded/meta-oe
	$ devtool add electron-quick-start ~/npm/source/electron-quick-start.git

Here is the recipe:
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional. # (Feel free to remove these comments when editing.)

SUMMARY = "A minimal Electron application"
# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is # your responsibility to verify that the values are complete and correct. #
# The following license files were not able to be identified and are # represented as "Unknown" below, you will need to check them yourself:
# LICENSE.md
#
LICENSE = "CC0-1.0"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c4bb4655ae0c8ab590a1aa591e3a80c5"

SRC_URI = "git://github.com/electron/electron-quick-start.git"

# Modify these as desired
PV = "1.0.0+git${SRCPV}"
SRCREV = "f8ae670ce85ce7329580b1085e37abb62ea3566b"

NPM_LOCKDOWN := "${THISDIR}/${PN}/lockdown.json"

inherit npm

# Must be set after inherit npm since that itself sets S S = "${WORKDIR}/git"
LICENSE_${PN} = "CC0-1.0"

$ bitbake electron-quick-start
$ tree tmp-glibc/work/i586-oe-linux/electron-quick-start/1.0.0+git999-r0/packages-split/electron-quick-start tmp-glibc/work/i586-oe-linux/electron-quick-start/1.0.0+git999-r0/packages-split/electron-quick-start └── usr
└── lib
└── node_modules
└── electron-quick-start
├── index.html
├── LICENSE.md
├── main.js
├── package.json
├── README.md
└── renderer.js

Testing 1)

	$ . layers/openembedded-core/oe-init-build-env registry layers/bitbake/
	edit conf/bblayers.conf to add meta-openembedded/meta-oe
	$ devtool add electron-quick-start "npm://registry.npmjs.org;name=electron-quick-start;version=1.0.0"
	this step runs for a while then fails because it can't find the license "MIT/X11"
	Here is the recipe when if finishes:
		# Recipe created by recipetool
		# This is the basis of a recipe and may need further editing in order to be fully functional.
		# (Feel free to remove these comments when editing.)

		SUMMARY = "A minimal Electron application"
		HOMEPAGE = "https://github.com/atom/electron-quick-start#readme"
		# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is
		# your responsibility to verify that the values are complete and correct.
		#
		# NOTE: multiple licenses have been detected; if that is correct you should separate
		# these in the LICENSE value using & if the multiple licenses all apply, or | if there
		# is a choice between the multiple licenses. If in doubt, check the accompanying
		# documentation to determine which situation is applicable.
		#
		# The following license files were not able to be identified and are
		# represented as "Unknown" below, you will need to check them yourself:
		#   LICENSE.md
		#   node_modules/electron-updater/node_modules/unzip/node_modules/fstream/LICENSE
		#   node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/LICENSE
		#   node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md
		#   node_modules/electron-updater/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/LICENSE
		#   node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/LICENSE
		#   node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/node_modules/buffer-shims/license.md
		#   node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/node_modules/process-nextick-args/license.md
		#   node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/LICENSE.md
		#   node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/LICENSE
		#   node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md
		#   node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/node_modules/buffer-shims/license.md
		#   node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/LICENSE
		#   node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/node_modules/buffer-shims/license.md
		#   node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/node_modules/process-nextick-args/license.md
		#   node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/LICENSE
		#   node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/node_modules/buffer-shims/license.md
		#   node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/node_modules/process-nextick-args/license.md
		#   node_modules/electron-updater/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md
		#   Squirrel.Mac/script/LICENSE.md
		#   Squirrel.Mac/External/OHHTTPStubs/LICENSE
		#   Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/Carthage/Checkouts/Quick/LICENSE
		#   Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/Carthage/Checkouts/Quick/Externals/Nimble/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/Carthage/Checkouts/Nimble/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/script/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/Quick/LICENSE
		#   Squirrel.Mac/Carthage/Checkouts/Quick/Externals/Nimble/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/Nimble/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/Mantle/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/Mantle/Carthage/Checkouts/Quick/LICENSE
		#   Squirrel.Mac/Carthage/Checkouts/Mantle/Carthage/Checkouts/Quick/Externals/Nimble/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/Mantle/Carthage/Checkouts/Nimble/LICENSE.md
		#   Squirrel.Mac/Carthage/Checkouts/Mantle/script/LICENSE.md
		#
		LICENSE = "ISC & BSD & Unknown & MIT/X11 & MIT"
		LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c4bb4655ae0c8ab590a1aa591e3a80c5 \
				    file://node_modules/electron-updater/LICENSE;md5=71a52831f2bbba1383d42d9390458df8 \
				    file://node_modules/electron-updater/node_modules/commander/LICENSE;md5=25851d4d10d6611a12d5571dab945a00 \
				    file://node_modules/electron-updater/node_modules/commander/node_modules/graceful-readlink/LICENSE;md5=b0270ddb7ee6643eee76e80113234806 \
				    file://node_modules/electron-updater/node_modules/unzip/LICENSE;md5=46cc96ae87cdaa8f9ec33480b548dce5 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/setimmediate/LICENSE.txt;md5=af19eaafbc6aa0d2c97538dcfb6db94a \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/readable-stream/LICENSE;md5=d7351a4fc8e956f1a68413490d5e655e \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/LICENSE;md5=fcf5cfdc777e49f11402422c72a86f43 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/LICENSE;md5=6126e36127d20ec0e2f637204a5c68ff \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/LICENSE;md5=46cc96ae87cdaa8f9ec33480b548dce5 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/readable-stream/LICENSE;md5=d7351a4fc8e956f1a68413490d5e655e \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/readable-stream/node_modules/string_decoder/LICENSE;md5=fcf5cfdc777e49f11402422c72a86f43 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/readable-stream/node_modules/core-util-is/LICENSE;md5=6126e36127d20ec0e2f637204a5c68ff \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/readable-stream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/setimmediate/LICENSE.txt;md5=af19eaafbc6aa0d2c97538dcfb6db94a \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/LICENSE;md5=e3c4bafaf8e85046af71466220bd0eb3 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/node_modules/readable-stream/LICENSE;md5=d7351a4fc8e956f1a68413490d5e655e \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE;md5=fcf5cfdc777e49f11402422c72a86f43 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/node_modules/readable-stream/node_modules/core-util-is/LICENSE;md5=6126e36127d20ec0e2f637204a5c68ff \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/node_modules/readable-stream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/match-stream/LICENSE;md5=e3c4bafaf8e85046af71466220bd0eb3 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/match-stream/node_modules/readable-stream/LICENSE;md5=d7351a4fc8e956f1a68413490d5e655e \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/match-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE;md5=fcf5cfdc777e49f11402422c72a86f43 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/match-stream/node_modules/readable-stream/node_modules/core-util-is/LICENSE;md5=6126e36127d20ec0e2f637204a5c68ff \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/match-stream/node_modules/readable-stream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/LICENSE;md5=8ce909f9cccb74a7c6f2720930d072c1 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/fs.realpath/LICENSE;md5=062470525c8e380f8567f665ef554d11 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE;md5=aea1cde69645f4b99be4ff7ca9abcce1 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md;md5=7fa99ddc3424107350ca6e9a24552085 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/LICENSE;md5=90a3ca01a5efed8b813a81c6c8fa2e63 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/once/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/once/node_modules/wrappy/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/LICENSE;md5=b2d989bc186e7f6b418a5fdd5cc0b56b \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/LICENSE;md5=aea1cde69645f4b99be4ff7ca9abcce1 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/LICENSE;md5=0f6546e91538ce8c26b2da1623705c62 \
				    file://node_modules/electron-updater/node_modules/tar-stream/LICENSE;md5=9befe7026bf915886cd566a98117c80e \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/xtend/LICENCE;md5=96bcdf84e670aafacac9e094bce29ac9 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/LICENSE;md5=a67a7926e54316d90c14f74f71080977 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/node_modules/buffer-shims/license.md;md5=e04ef9ec24d382b7576c997066a44835 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/node_modules/util-deprecate/LICENSE;md5=b7c99ef4b0f3ad9911a52219947f8cf0 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE;md5=fcf5cfdc777e49f11402422c72a86f43 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/node_modules/process-nextick-args/license.md;md5=216769dac98a78ec088ee7cc6fad1dfa \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/readable-stream/node_modules/core-util-is/LICENSE;md5=6126e36127d20ec0e2f637204a5c68ff \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/end-of-stream/LICENSE;md5=9befe7026bf915886cd566a98117c80e \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once/node_modules/wrappy/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/LICENSE.md;md5=e58dc7a94bb9decf6a7b2ff97d22b213 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/LICENSE;md5=a67a7926e54316d90c14f74f71080977 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE;md5=fcf5cfdc777e49f11402422c72a86f43 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/LICENSE;md5=b7c99ef4b0f3ad9911a52219947f8cf0 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md;md5=216769dac98a78ec088ee7cc6fad1dfa \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/node_modules/buffer-shims/license.md;md5=e04ef9ec24d382b7576c997066a44835 \
				    file://node_modules/electron-updater/node_modules/tar-stream/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE;md5=6126e36127d20ec0e2f637204a5c68ff \
				    file://node_modules/electron-updater/node_modules/spin/LICENSE.txt;md5=31f0289eb4d139200326604d10b9e21b \
				    file://node_modules/electron-updater/node_modules/semver/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/minimist/LICENSE;md5=aea1cde69645f4b99be4ff7ca9abcce1 \
				    file://node_modules/electron-updater/node_modules/got/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/unzip-response/license;md5=5b422d6bf88afe88977d04f8bdd4959c \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/license;md5=2a8369b875113ae53aa6c5bb39a58d3c \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/pinkie-promise/license;md5=be72c3ad86c1c4e9578a1945b082b17d \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/pinkie-promise/node_modules/pinkie/license;md5=be72c3ad86c1c4e9578a1945b082b17d \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/LICENSE;md5=a67a7926e54316d90c14f74f71080977 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/node_modules/buffer-shims/license.md;md5=e04ef9ec24d382b7576c997066a44835 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/node_modules/util-deprecate/LICENSE;md5=b7c99ef4b0f3ad9911a52219947f8cf0 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE;md5=fcf5cfdc777e49f11402422c72a86f43 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/node_modules/process-nextick-args/license.md;md5=216769dac98a78ec088ee7cc6fad1dfa \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/read-all-stream/node_modules/readable-stream/node_modules/core-util-is/LICENSE;md5=6126e36127d20ec0e2f637204a5c68ff \
				    file://node_modules/electron-updater/node_modules/got/node_modules/prepend-http/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/pinkie-promise/license;md5=be72c3ad86c1c4e9578a1945b082b17d \
				    file://node_modules/electron-updater/node_modules/got/node_modules/pinkie-promise/node_modules/pinkie/license;md5=be72c3ad86c1c4e9578a1945b082b17d \
				    file://node_modules/electron-updater/node_modules/got/node_modules/parse-json/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/parse-json/node_modules/error-ex/LICENSE;md5=e67c75e89656b80fd99cb7d30fb43102 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/parse-json/node_modules/error-ex/node_modules/is-arrayish/LICENSE;md5=e67c75e89656b80fd99cb7d30fb43102 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/LICENSE;md5=9befe7026bf915886cd566a98117c80e \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/stream-shift/LICENSE;md5=42014010547e55bd3bcac2fec8c45624 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/LICENSE;md5=a67a7926e54316d90c14f74f71080977 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/node_modules/buffer-shims/license.md;md5=e04ef9ec24d382b7576c997066a44835 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/node_modules/util-deprecate/LICENSE;md5=b7c99ef4b0f3ad9911a52219947f8cf0 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/node_modules/string_decoder/LICENSE;md5=fcf5cfdc777e49f11402422c72a86f43 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/node_modules/process-nextick-args/license.md;md5=216769dac98a78ec088ee7cc6fad1dfa \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/readable-stream/node_modules/core-util-is/LICENSE;md5=6126e36127d20ec0e2f637204a5c68ff \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/got/node_modules/duplexify/node_modules/end-of-stream/node_modules/once/node_modules/wrappy/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/got/node_modules/node-status-codes/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/is-stream/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/is-redirect/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/is-plain-obj/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/create-error-class/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/got/node_modules/object-assign/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/glob/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/path-is-absolute/license;md5=a12ebca0510a773644101a99a867d210 \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/once/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/minimatch/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE;md5=aea1cde69645f4b99be4ff7ca9abcce1 \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md;md5=7fa99ddc3424107350ca6e9a24552085 \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/inherits/LICENSE;md5=5b2ef2247af6d355ae9d9f988092d470 \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/inflight/LICENSE;md5=90a3ca01a5efed8b813a81c6c8fa2e63 \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/inflight/node_modules/once/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/inflight/node_modules/once/node_modules/wrappy/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE;md5=82703a69f6d7411dde679954c2fd9dca \
				    file://node_modules/electron-updater/node_modules/async/LICENSE;md5=dc113e0fc4029c29942399ad22425402 \
				    file://node_modules/electron-updater/node_modules/appdirectory/LICENSE.md;md5=19b6cbfe48611ec68354aa02bf266b8a \
				    file://node_modules/electron-plugins/LICENSE;md5=71a52831f2bbba1383d42d9390458df8 \
				    file://node_modules/electron-plugins/node_modules/async/LICENSE;md5=dc113e0fc4029c29942399ad22425402 \
				    file://node_modules/electron-plugins/node_modules/appdirectory/LICENSE.md;md5=19b6cbfe48611ec68354aa02bf266b8a \
				    file://Squirrel.Mac/LICENSE;md5=128544b123235edfd1f1b0fcd835836b \
				    file://Squirrel.Mac/script/LICENSE.md;md5=0e5338dfdadf532bf261f0ff3b50e5c2 \
				    file://Squirrel.Mac/External/OHHTTPStubs/LICENSE;md5=02de072e1ba982f28a1af1385d484172 \
				    file://Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/LICENSE.md;md5=5543b4fe42a4a7723b1e010dc924c78a \
				    file://Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/Carthage/Checkouts/Quick/LICENSE;md5=579f318fc6783f299f5731c4a6c958d4 \
				    file://Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/Carthage/Checkouts/Quick/Externals/Nimble/LICENSE.md;md5=7177dcbba5a41d09e055d6d14add394f \
				    file://Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/Carthage/Checkouts/Nimble/LICENSE.md;md5=7177dcbba5a41d09e055d6d14add394f \
				    file://Squirrel.Mac/Carthage/Checkouts/ReactiveCocoa/script/LICENSE.md;md5=0e5338dfdadf532bf261f0ff3b50e5c2 \
				    file://Squirrel.Mac/Carthage/Checkouts/Quick/LICENSE;md5=579f318fc6783f299f5731c4a6c958d4 \
				    file://Squirrel.Mac/Carthage/Checkouts/Quick/Externals/Nimble/LICENSE.md;md5=7177dcbba5a41d09e055d6d14add394f \
				    file://Squirrel.Mac/Carthage/Checkouts/Nimble/LICENSE.md;md5=7177dcbba5a41d09e055d6d14add394f \
				    file://Squirrel.Mac/Carthage/Checkouts/Mantle/LICENSE.md;md5=7c732bf6e317d77c4350da48b0438900 \
				    file://Squirrel.Mac/Carthage/Checkouts/Mantle/Carthage/Checkouts/Quick/LICENSE;md5=579f318fc6783f299f5731c4a6c958d4 \
				    file://Squirrel.Mac/Carthage/Checkouts/Mantle/Carthage/Checkouts/Quick/Externals/Nimble/LICENSE.md;md5=7177dcbba5a41d09e055d6d14add394f \
				    file://Squirrel.Mac/Carthage/Checkouts/Mantle/Carthage/Checkouts/Nimble/LICENSE.md;md5=7177dcbba5a41d09e055d6d14add394f \
				    file://Squirrel.Mac/Carthage/Checkouts/Mantle/script/LICENSE.md;md5=0e5338dfdadf532bf261f0ff3b50e5c2"

		SRC_URI = "npm://registry.npmjs.org;name=electron-quick-start;version=${PV}"

		NPM_SHRINKWRAP := "${THISDIR}/${PN}/npm-shrinkwrap.json"
		NPM_LOCKDOWN := "${THISDIR}/${PN}/lockdown.json"

		inherit npm

		# Must be set after inherit npm since that itself sets S
		S = "${WORKDIR}/npmpkg"
		LICENSE_${PN}-electron-plugins-appdirectory = "MIT"
		LICENSE_${PN}-electron-plugins-async = "MIT"
		LICENSE_${PN}-electron-plugins = "MIT"
		LICENSE_${PN}-electron-updater-appdirectory = "MIT"
		LICENSE_${PN}-electron-updater-async = "MIT"
		LICENSE_${PN}-electron-updater-commander-graceful-readlink = "MIT"
		LICENSE_${PN}-electron-updater-commander = "MIT"
		LICENSE_${PN}-electron-updater-glob-inflight-once-wrappy = "ISC"
		LICENSE_${PN}-electron-updater-glob-inflight-once = "ISC"
		LICENSE_${PN}-electron-updater-glob-inflight-wrappy = "ISC"
		LICENSE_${PN}-electron-updater-glob-inflight = "ISC"
		LICENSE_${PN}-electron-updater-glob-inherits = "ISC"
		LICENSE_${PN}-electron-updater-glob-minimatch-brace-expansion-balanced-match = "MIT"
		LICENSE_${PN}-electron-updater-glob-minimatch-brace-expansion-concat-map = "MIT"
		LICENSE_${PN}-electron-updater-glob-minimatch-brace-expansion = "MIT"
		LICENSE_${PN}-electron-updater-glob-minimatch = "ISC"
		LICENSE_${PN}-electron-updater-glob-once-wrappy = "ISC"
		LICENSE_${PN}-electron-updater-glob-once = "ISC"
		LICENSE_${PN}-electron-updater-glob-path-is-absolute = "MIT"
		LICENSE_${PN}-electron-updater-glob = "ISC"
		LICENSE_${PN}-electron-updater-got-create-error-class-capture-stack-trace = "MIT"
		LICENSE_${PN}-electron-updater-got-create-error-class-inherits = "ISC"
		LICENSE_${PN}-electron-updater-got-create-error-class = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-end-of-stream-once-wrappy = "ISC"
		LICENSE_${PN}-electron-updater-got-duplexify-end-of-stream-once = "ISC"
		LICENSE_${PN}-electron-updater-got-duplexify-end-of-stream = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-inherits = "ISC"
		LICENSE_${PN}-electron-updater-got-duplexify-readable-stream-buffer-shims = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-readable-stream-core-util-is = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-readable-stream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-got-duplexify-readable-stream-isarray = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-readable-stream-process-nextick-args = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-readable-stream-string-decoder = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-readable-stream-util-deprecate = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-readable-stream = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify-stream-shift = "MIT"
		LICENSE_${PN}-electron-updater-got-duplexify = "MIT"
		LICENSE_${PN}-electron-updater-got-is-plain-obj = "MIT"
		LICENSE_${PN}-electron-updater-got-is-redirect = "MIT"
		LICENSE_${PN}-electron-updater-got-is-stream = "MIT"
		LICENSE_${PN}-electron-updater-got-lowercase-keys = "MIT"
		LICENSE_${PN}-electron-updater-got-node-status-codes = "MIT"
		LICENSE_${PN}-electron-updater-got-object-assign = "MIT"
		LICENSE_${PN}-electron-updater-got-parse-json-error-ex-is-arrayish = "MIT"
		LICENSE_${PN}-electron-updater-got-parse-json-error-ex = "MIT"
		LICENSE_${PN}-electron-updater-got-parse-json = "MIT"
		LICENSE_${PN}-electron-updater-got-pinkie-promise-pinkie = "MIT"
		LICENSE_${PN}-electron-updater-got-pinkie-promise = "MIT"
		LICENSE_${PN}-electron-updater-got-prepend-http = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-pinkie-promise-pinkie = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-pinkie-promise = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-readable-stream-buffer-shims = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-readable-stream-core-util-is = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-readable-stream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-got-read-all-stream-readable-stream-isarray = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-readable-stream-process-nextick-args = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-readable-stream-string-decoder = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-readable-stream-util-deprecate = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream-readable-stream = "MIT"
		LICENSE_${PN}-electron-updater-got-read-all-stream = "MIT"
		LICENSE_${PN}-electron-updater-got-timed-out = "MIT"
		LICENSE_${PN}-electron-updater-got-unzip-response = "MIT"
		LICENSE_${PN}-electron-updater-got = "MIT"
		LICENSE_${PN}-electron-updater-minimist = "MIT"
		LICENSE_${PN}-electron-updater-semver = "ISC"
		LICENSE_${PN}-electron-updater-spin = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-bl-readable-stream-buffer-shims = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-bl-readable-stream-core-util-is = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-bl-readable-stream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-tar-stream-bl-readable-stream-isarray = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-bl-readable-stream-process-nextick-args = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-bl-readable-stream-string-decoder = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-bl-readable-stream-util-deprecate = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-bl-readable-stream = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-bl = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-end-of-stream-once-wrappy = "ISC"
		LICENSE_${PN}-electron-updater-tar-stream-end-of-stream-once = "ISC"
		LICENSE_${PN}-electron-updater-tar-stream-end-of-stream = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-readable-stream-buffer-shims = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-readable-stream-core-util-is = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-readable-stream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-tar-stream-readable-stream-isarray = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-readable-stream-process-nextick-args = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-readable-stream-string-decoder = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-readable-stream-util-deprecate = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-readable-stream = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream-xtend = "MIT"
		LICENSE_${PN}-electron-updater-tar-stream = "MIT"
		LICENSE_${PN}-electron-updater-unzip-binary-buffers = "Unknown"
		LICENSE_${PN}-electron-updater-unzip-binary-chainsaw-traverse = "MIT/X11"
		LICENSE_${PN}-electron-updater-unzip-binary-chainsaw = "MIT/X11"
		LICENSE_${PN}-electron-updater-unzip-binary = "MIT"
		LICENSE_${PN}-electron-updater-unzip-fstream-graceful-fs-natives = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-graceful-fs = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-mkdirp-minimist = "MIT"
		LICENSE_${PN}-electron-updater-unzip-fstream-mkdirp = "MIT"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-fs.realpath = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-inflight-once-wrappy = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-inflight-once = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-inflight-wrappy = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-inflight = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-inherits = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-minimatch-brace-expansion-balanced-match = "MIT"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-minimatch-brace-expansion-concat-map = "MIT"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-minimatch-brace-expansion = "MIT"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-minimatch = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-once-wrappy = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-once = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob-path-is-absolute = "MIT"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf-glob = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream-rimraf = "ISC"
		LICENSE_${PN}-electron-updater-unzip-fstream = "BSD"
		LICENSE_${PN}-electron-updater-unzip-match-stream-buffers = "Unknown"
		LICENSE_${PN}-electron-updater-unzip-match-stream-readable-stream-core-util-is = "MIT"
		LICENSE_${PN}-electron-updater-unzip-match-stream-readable-stream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-unzip-match-stream-readable-stream-isarray = "MIT"
		LICENSE_${PN}-electron-updater-unzip-match-stream-readable-stream-string-decoder = "MIT"
		LICENSE_${PN}-electron-updater-unzip-match-stream-readable-stream = "MIT"
		LICENSE_${PN}-electron-updater-unzip-match-stream = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-over = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-readable-stream-core-util-is = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-readable-stream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-unzip-pullstream-readable-stream-isarray = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-readable-stream-string-decoder = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-readable-stream = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-setimmediate = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-slice-stream-readable-stream-core-util-is = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-slice-stream-readable-stream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-unzip-pullstream-slice-stream-readable-stream-isarray = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-slice-stream-readable-stream-string-decoder = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-slice-stream-readable-stream = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream-slice-stream = "MIT"
		LICENSE_${PN}-electron-updater-unzip-pullstream = "MIT"
		LICENSE_${PN}-electron-updater-unzip-readable-stream-core-util-is = "MIT"
		LICENSE_${PN}-electron-updater-unzip-readable-stream-inherits = "ISC"
		LICENSE_${PN}-electron-updater-unzip-readable-stream-isarray = "MIT"
		LICENSE_${PN}-electron-updater-unzip-readable-stream-string-decoder = "MIT"
		LICENSE_${PN}-electron-updater-unzip-readable-stream = "MIT"
		LICENSE_${PN}-electron-updater-unzip-setimmediate = "MIT"
		LICENSE_${PN}-electron-updater-unzip = "MIT"
		LICENSE_${PN}-electron-updater = "MIT"
		LICENSE_${PN} = "Unknown MIT"

	$ bitbake electron-quick-start
	$ tree -L 6 tmp-glibc/work/i586-oe-linux/electron-quick-start/1.0.0-r0/packages-split/electron-quick-start
	tmp-glibc/work/i586-oe-linux/electron-quick-start/1.0.0-r0/packages-split/electron-quick-start
	└── usr
	    └── lib
		└── node_modules
		    └── electron-quick-start
			├── electron-quick-start-1.0.0.tgz
			├── index.html
			├── LICENSE.md
			├── main.js
			├── package.json
			├── README.md
			└── Squirrel.Mac
			    ├── Cartfile
			    ├── Cartfile.private
			    ├── Cartfile.resolved
			    ├── Carthage
			    ├── External
			    ├── LICENSE
			    ├── README.md
			    ├── script
			    ├── Squirrel
			    ├── SquirrelTests
			    ├── Squirrel.xcodeproj
			    ├── TestApplication
			    └── TestService
#1 lore raw

My first thought is that "devtool add ..." shouldn't act differently depending on whether it is pointed at a checkout of the code or whether it is pointed at the code's npm repository.

#2 lore raw
In reply to Trevor Woerner

Ideally "devtool add ..." wouldn't choke and crash when it encounters a LICENSE string it doesn't understand. When parsing license strings from random places on The Internet it's inevitable odd things will come up :-)

#5 lore raw
In reply to Trevor Woerner

In face-to-face conversations there was an expressed opinion that it would be great if npm had a "--dry-run" -type option to list off the dependencies of a package.json file.

As it turns out, it does!

	$ npm install --dry-run
	[email protected] /z/npm/source/electron-quick-start.git
	└─┬ [email protected] 
	  ├─┬ [email protected] 
	  │ ├─┬ [email protected] 
	  │ │ └── [email protected] 
	  │ ├─┬ [email protected] 
	  │ │ ├── [email protected] 
	  │ │ ├── [email protected] 
	  │ │ ├── [email protected] 
	  │ │ ├── [email protected] 
	  │ │ └─┬ [email protected] 
	  │ │   └─┬ [email protected] 
	  │ │     ├── [email protected] 
	  │ │     ├─┬ [email protected] 
	  │ │     │ └── [email protected] 
	  │ │     ├─┬ [email protected] 
	  │ │     │ └─┬ [email protected] 
	  │ │     │   ├── [email protected] 
	  │ │     │   └── [email protected] 
	  │ │     └── [email protected] 
	  │ ├── [email protected] 
	  │ ├── [email protected] 
	  │ ├─┬ [email protected] 
	  │ │ ├─┬ [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ └─┬ [email protected] 
	  │ │ │   ├─┬ [email protected] 
	  │ │ │   │ └── [email protected] 
	  │ │ │   ├── [email protected] 
	  │ │ │   ├─┬ [email protected] 
	  │ │ │   │ ├─┬ [email protected] 
	  │ │ │   │ │ └── [email protected] 
	  │ │ │   │ └── [email protected] 
	  │ │ │   ├── [email protected] 
	  │ │ │   ├─┬ [email protected] 
	  │ │ │   │ ├── [email protected] 
	  │ │ │   │ ├─┬ [email protected] 
	  │ │ │   │ │ └── [email protected] 
	  │ │ │   │ └─┬ [email protected] 
	  │ │ │   │   ├─┬ [email protected] 
	  │ │ │   │   │ └── [email protected] 
	  │ │ │   │   └── [email protected] 
	  │ │ │   ├── [email protected] 
	  │ │ │   ├─┬ [email protected] 
	  │ │ │   │ ├── [email protected] 
	  │ │ │   │ └─┬ [email protected] 
	  │ │ │   │   ├─┬ [email protected] 
	  │ │ │   │   │ ├─┬ [email protected] 
	  │ │ │   │   │ │ └─┬ [email protected] 
	  │ │ │   │   │ │   └── [email protected] 
	  │ │ │   │   │ ├── [email protected] 
	  │ │ │   │   │ └─┬ [email protected] 
	  │ │ │   │   │   └── [email protected] 
	  │ │ │   │   └── [email protected] 
	  │ │ │   ├─┬ [email protected] 
	  │ │ │   │ ├─┬ [email protected] 
	  │ │ │   │ │ └─┬ [email protected] 
	  │ │ │   │ │   └── [email protected] 
	  │ │ │   │ └── [email protected] 
	  │ │ │   └── [email protected] 
	  │ │ ├─┬ [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ └─┬ [email protected] 
	  │ │ │   ├─┬ [email protected] 
	  │ │ │   │ └── [email protected] 
	  │ │ │   └─┬ [email protected] 
	  │ │ │     └── [email protected] 
	  │ │ ├─┬ [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├─┬ [email protected] 
	  │ │ │ │ └── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├─┬ [email protected] 
	  │ │ │ │ └── [email protected] 
	  │ │ │ ├─┬ [email protected] 
	  │ │ │ │ ├─┬ [email protected] 
	  │ │ │ │ │ ├── [email protected] 
	  │ │ │ │ │ ├── [email protected] 
	  │ │ │ │ │ ├── [email protected] 
	  │ │ │ │ │ └── [email protected] 
	  │ │ │ │ ├─┬ [email protected] 
	  │ │ │ │ │ └── [email protected] 
	  │ │ │ │ └─┬ [email protected] 
	  │ │ │ │   ├── [email protected] 
	  │ │ │ │   ├─┬ [email protected] 
	  │ │ │ │   │ └── [email protected] 
	  │ │ │ │   ├── [email protected] 
	  │ │ │ │   └── [email protected] 
	  │ │ │ ├─┬ [email protected] 
	  │ │ │ │ ├── [email protected] 
	  │ │ │ │ ├── [email protected] 
	  │ │ │ │ ├── [email protected] 
	  │ │ │ │ └── [email protected] 
	  │ │ │ ├─┬ [email protected] 
	  │ │ │ │ ├── [email protected] 
	  │ │ │ │ ├─┬ [email protected] 
	  │ │ │ │ │ ├── [email protected] 
	  │ │ │ │ │ ├── [email protected] 
	  │ │ │ │ │ └── [email protected] 
	  │ │ │ │ └─┬ [email protected] 
	  │ │ │ │   ├── [email protected] 
	  │ │ │ │   ├── [email protected] 
	  │ │ │ │   ├── [email protected] 
	  │ │ │ │   ├─┬ [email protected] 
	  │ │ │ │   │ └── [email protected] 
	  │ │ │ │   ├── [email protected] 
	  │ │ │ │   ├─┬ [email protected] 
	  │ │ │ │   │ └── [email protected] 
	  │ │ │ │   ├── [email protected] 
	  │ │ │ │   ├── [email protected] 
	  │ │ │ │   └── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├─┬ [email protected] 
	  │ │ │ │ └── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ ├─┬ [email protected] 
	  │ │ │ │ └── [email protected] 
	  │ │ │ ├── [email protected] 
	  │ │ │ └── [email protected] 
	  │ │ ├─┬ [email protected] 
	  │ │ │ └─┬ [email protected] 
	  │ │ │   ├── [email protected] 
	  │ │ │   ├─┬ [email protected] 
	  │ │ │   │ └── [email protected] 
	  │ │ │   └─┬ [email protected] 
	  │ │ │     └── [email protected] 
	  │ │ └── [email protected] 
	  │ ├─┬ [email protected] 
	  │ │ └─┬ [email protected] 
	  │ │   └── [email protected] 
	  │ ├─┬ [email protected] 
	  │ │ ├── [email protected] 
	  │ │ ├── [email protected] 
	  │ │ └── [email protected] 
	  │ ├── [email protected] 
	  │ └─┬ [email protected] 
	  │   └── [email protected] 
	  └─┬ [email protected] 
	    ├─┬ [email protected] 
	    │ ├── [email protected] 
	    │ ├─┬ [email protected] 
	    │ │ ├── [email protected] 
	    │ │ ├── [email protected] 
	    │ │ ├── [email protected] 
	    │ │ ├── [email protected] 
	    │ │ └── [email protected] 
	    │ └── [email protected] 
	    ├── [email protected] 
	    ├─┬ [email protected] 
	    │ └── [email protected] 
	    └─┬ [email protected] 
	      └─┬ [email protected] 
		└── [email protected]
#3 lore raw
In reply to Trevor Woerner

Hi Trevor,

Quoted 3 lines · Trevor Woerner

Ideally "devtool add ..." wouldn't choke and crash when it encounters a LICENSE string it doesn't understand. When parsing license strings from random places on The Internet it's inevitable odd things will come up :-)

Yeah, it even seems to get very upset for rather non-obscure things like lodash or redux. I ran into that too and will try to have a look.

Greetz

Signature · 19 lines
Josef Holzmayr
Software Developer Embedded Systems

Tel: +49 8444 9204-48
Fax: +49 8444 9204-50

R-S-I Elektrotechnik GmbH & Co. KG
Woelkestrasse 11
D-85301 Schweitenkirchen
www.rsi-elektrotechnik.de
———————————————
Amtsgericht Ingolstadt – GmbH: HRB 191328 – KG: HRA 170393
Geschäftsführer: Dr.-Ing. Michael Sorg, Dipl.-Ing. Franz Sorg
Ust-IdNr: DE 128592548

_____________________________________________________________
Amtsgericht Ingolstadt - GmbH: HRB 191328 - KG: HRA 170363
Geschäftsführer: Dr.-Ing. Michael Sorg, Dipl.-Ing. Franz Sorg
USt-IdNr.: DE 128592548
#6 lore raw
In reply to Trevor Woerner

Additional packaging/dependency thoughts:

Using the devtool mechanism to create a recipe basically packs up all dependencies. While this is a relatively easy solution to make sure that the resulting package is functional, I can see some issues:
- Dependency tracking via bitbake is virtually nonexistent. How would one package a npm thing to use other, already packaged dependencies?
- I see problems in the reproductibility of the builds when relying on npmjs as upstream server. Packages come and go there sometimes. Is there a way to redirect dependencies to a custom hosted mirror?
- Given the current situation, the best practise seems to be to have package.json take care of the needed modules, and have it handle that. Means in my opinion that there should be as little npm-based stuff installed as possible. Exactly one, in the optimal case. Downside: this means a second dependency tracking is layered under bitbake. No good that sounds....

my $.02

Signature · 19 lines
Josef Holzmayr
Software Developer Embedded Systems

Tel: +49 8444 9204-48
Fax: +49 8444 9204-50

R-S-I Elektrotechnik GmbH & Co. KG
Woelkestrasse 11
D-85301 Schweitenkirchen
www.rsi-elektrotechnik.de
———————————————
Amtsgericht Ingolstadt – GmbH: HRB 191328 – KG: HRA 170393
Geschäftsführer: Dr.-Ing. Michael Sorg, Dipl.-Ing. Franz Sorg
Ust-IdNr: DE 128592548

_____________________________________________________________
Amtsgericht Ingolstadt - GmbH: HRB 191328 - KG: HRA 170363
Geschäftsführer: Dr.-Ing. Michael Sorg, Dipl.-Ing. Franz Sorg
USt-IdNr.: DE 128592548
#7 lore raw
Quoted 6 lines · Josef Holzmayr

- Given the current situation, the best practise seems to be to have package.json take care of the needed modules, and have it handle that. Means in my opinion that there should be as little npm-based stuff installed as possible. Exactly one, in the optimal case. Downside: this means a second dependency tracking is layered under bitbake. No good that sounds....

I've been looking into this for the past few days. Unfortunately, it looks like we do need a generic, extensible mechanism for dealing with the likes of npm, cargo (i.e. rust), and 'go get' and similar things.

I've just set up a minimal MEAN project on my machine, and npm pulled in 1087 dependencies just so it could run. This is not 'wrong', it's simply where the world of software development is heading. It's just so much nicer to get a project started and running this way, than the old way of writing Makefiles and installing development dependencies by hand into the system. But it does create a headache for distributions, and those who need reproducible builds.

I'll write down my ideas (and maybe even a design proposal!) in a few days about this.

Alex

#4 lore raw
In reply to Trevor Woerner
Quoted 3 lines · Trevor Woerner

Ideally "devtool add ..." wouldn't choke and crash when it encounters a LICENSE string it doesn't understand. When parsing license strings from random places on The Internet it's inevitable odd things will come up :-)

I recently also stumbled upon this. I've got patch series out, that improves the situation for all the cases *I* stumbled upon.

Cheers,
Anders

Signature · 2 lines
Anders Darander, Senior System Architect
ChargeStorm AB / eStorm AB