From fa9c077068a2acea04389fa2b44eb2e93548fce2 Mon Sep 17 00:00:00 2001 From: Böszörményi Zoltán Date: Thu, 1 Feb 2018 14:08:31 +0100 Subject: npm.bbclass: Node module name and recipe name can be different MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/classes/npm.bbclass | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'meta/classes/npm.bbclass') 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 " RDEPENDS_${PN}_prepend = "nodejs " S = "${WORKDIR}/npmpkg" -NPM_INSTALLDIR = "${D}${libdir}/node_modules/${PN}" +def node_pkgname(d): + bpn = d.getVar('BPN') + if bpn.startswith("node-"): + return bpn[5:] + return bpn + +NPMPN ?= "${@node_pkgname(d)}" + +NPM_INSTALLDIR = "${D}${libdir}/node_modules/${NPMPN}" # function maps arch names to npm arch names def npm_oe_arch_map(target_arch, d): @@ -46,7 +54,7 @@ npm_do_install() { export HOME=${WORKDIR} mkdir -p ${NPM_INSTALLDIR}/ npm pack . - npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry ${PN}-${PV}.tgz + npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} --target_arch=${NPM_ARCH} --production --no-registry ${NPMPN}-${PV}.tgz if [ -d ${D}${prefix}/etc ] ; then # This will be empty rmdir ${D}${prefix}/etc @@ -54,13 +62,13 @@ npm_do_install() { } python populate_packages_prepend () { - instdir = d.expand('${D}${libdir}/node_modules/${PN}') + instdir = d.expand('${D}${libdir}/node_modules/${NPMPN}') extrapackages = oe.package.npm_split_package_dirs(instdir) pkgnames = extrapackages.keys() d.prependVar('PACKAGES', '%s ' % ' '.join(pkgnames)) for pkgname in pkgnames: pkgrelpath, pdata = extrapackages[pkgname] - pkgpath = '${libdir}/node_modules/${PN}/' + pkgrelpath + pkgpath = '${libdir}/node_modules/${NPMPN}/' + pkgrelpath # package names can't have underscores but npm packages sometimes use them oe_pkg_name = pkgname.replace('_', '-') expanded_pkgname = d.expand(oe_pkg_name) @@ -76,7 +84,7 @@ python populate_packages_prepend () { } FILES_${PN} += " \ - ${libdir}/node_modules/${PN} \ + ${libdir}/node_modules/${NPMPN} \ " EXPORT_FUNCTIONS do_compile do_install -- cgit v1.2.3-54-g00ecf