diff options
author | Böszörményi Zoltán <zboszor@pr.hu> | 2018-02-01 14:08:31 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-02-06 11:06:27 +0000 |
commit | fa9c077068a2acea04389fa2b44eb2e93548fce2 (patch) | |
tree | 6cc9a06620f102ef12060607ba475c263e849c50 | |
parent | d38e1e2c2ea4646b34ea6282d3d7620df5b0374b (diff) | |
download | poky-fa9c077068a2acea04389fa2b44eb2e93548fce2.tar.gz |
npm.bbclass: Node module name and recipe name can be different
Some NPM modules have the same name as their low level dependencies.
To prevent recipe naming conflicts, allow node module recipe names
to start with the "node-" prefix.
(From OE-Core rev: 6b417c7c3a38463c64756beae9817fa2a80fd09e)
Signed-off-by: Zoltán Böszörményi <zboszor@pr.hu>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/npm.bbclass | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/meta/classes/npm.bbclass b/meta/classes/npm.bbclass index 898a54eb50..c351ff0866 100644 --- a/meta/classes/npm.bbclass +++ b/meta/classes/npm.bbclass | |||
@@ -2,7 +2,15 @@ DEPENDS_prepend = "nodejs-native " | |||
2 | RDEPENDS_${PN}_prepend = "nodejs " | 2 | RDEPENDS_${PN}_prepend = "nodejs " |
3 | S = "${WORKDIR}/npmpkg" | 3 | S = "${WORKDIR}/npmpkg" |
4 | 4 | ||
5 | NPM_INSTALLDIR = "${D}${libdir}/node_modules/${PN}" | 5 | def node_pkgname(d): |
6 | bpn = d.getVar('BPN') | ||
7 | if bpn.startswith("node-"): | ||
8 | return bpn[5:] | ||
9 | return bpn | ||
10 | |||
11 | NPMPN ?= "${@node_pkgname(d)}" | ||
12 | |||
13 | NPM_INSTALLDIR = "${D}${libdir}/node_modules/${NPMPN}" | ||
6 | 14 | ||
7 | # function maps arch names to npm arch names | 15 | # function maps arch names to npm arch names |
8 | def npm_oe_arch_map(target_arch, d): | 16 | def npm_oe_arch_map(target_arch, d): |
@@ -46,7 +54,7 @@ npm_do_install() { | |||
46 | export HOME=${WORKDIR} | 54 | export HOME=${WORKDIR} |
47 | mkdir -p ${NPM_INSTALLDIR}/ | 55 | mkdir -p ${NPM_INSTALLDIR}/ |
48 | npm pack . | 56 | npm pack . |
49 | npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry ${PN}-${PV}.tgz | 57 | npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry ${NPMPN}-${PV}.tgz |
50 | if [ -d ${D}${prefix}/etc ] ; then | 58 | if [ -d ${D}${prefix}/etc ] ; then |
51 | # This will be empty | 59 | # This will be empty |
52 | rmdir ${D}${prefix}/etc | 60 | rmdir ${D}${prefix}/etc |
@@ -54,13 +62,13 @@ npm_do_install() { | |||
54 | } | 62 | } |
55 | 63 | ||
56 | python populate_packages_prepend () { | 64 | python populate_packages_prepend () { |
57 | instdir = d.expand('${D}${libdir}/node_modules/${PN}') | 65 | instdir = d.expand('${D}${libdir}/node_modules/${NPMPN}') |
58 | extrapackages = oe.package.npm_split_package_dirs(instdir) | 66 | extrapackages = oe.package.npm_split_package_dirs(instdir) |
59 | pkgnames = extrapackages.keys() | 67 | pkgnames = extrapackages.keys() |
60 | d.prependVar('PACKAGES', '%s ' % ' '.join(pkgnames)) | 68 | d.prependVar('PACKAGES', '%s ' % ' '.join(pkgnames)) |
61 | for pkgname in pkgnames: | 69 | for pkgname in pkgnames: |
62 | pkgrelpath, pdata = extrapackages[pkgname] | 70 | pkgrelpath, pdata = extrapackages[pkgname] |
63 | pkgpath = '${libdir}/node_modules/${PN}/' + pkgrelpath | 71 | pkgpath = '${libdir}/node_modules/${NPMPN}/' + pkgrelpath |
64 | # package names can't have underscores but npm packages sometimes use them | 72 | # package names can't have underscores but npm packages sometimes use them |
65 | oe_pkg_name = pkgname.replace('_', '-') | 73 | oe_pkg_name = pkgname.replace('_', '-') |
66 | expanded_pkgname = d.expand(oe_pkg_name) | 74 | expanded_pkgname = d.expand(oe_pkg_name) |
@@ -76,7 +84,7 @@ python populate_packages_prepend () { | |||
76 | } | 84 | } |
77 | 85 | ||
78 | FILES_${PN} += " \ | 86 | FILES_${PN} += " \ |
79 | ${libdir}/node_modules/${PN} \ | 87 | ${libdir}/node_modules/${NPMPN} \ |
80 | " | 88 | " |
81 | 89 | ||
82 | EXPORT_FUNCTIONS do_compile do_install | 90 | EXPORT_FUNCTIONS do_compile do_install |