[OE-core] [PATCH] npm.bbclass: Stop packagenames containing underscores from being generated

brendan.le.foll at intel.com brendan.le.foll at intel.com
Tue Apr 12 09:58:39 UTC 2016


From: Brendan Le Foll <brendan.le.foll at intel.com>

Package names cannot contain underscores yet some npm modules use them as part
of the name, replace them with hyphens in the package name.

Signed-off-by: Brendan Le Foll <brendan.le.foll at intel.com>
---
 meta/classes/npm.bbclass | 6 ++++--
 meta/lib/oe/package.py   | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/meta/classes/npm.bbclass b/meta/classes/npm.bbclass
index 33ff5e3..9843e87 100644
--- a/meta/classes/npm.bbclass
+++ b/meta/classes/npm.bbclass
@@ -28,7 +28,9 @@ python populate_packages_prepend () {
     for pkgname in pkgnames:
         pkgrelpath, pdata = extrapackages[pkgname]
         pkgpath = '${libdir}/node_modules/${PN}/' + pkgrelpath
-        expanded_pkgname = d.expand(pkgname)
+        # package names can't have underscores but npm packages sometimes use them
+        oe_pkg_name = pkgname.replace('_', '-')
+        expanded_pkgname = d.expand(oe_pkg_name)
         d.setVar('FILES_%s' % expanded_pkgname, pkgpath)
         if pdata:
             version = pdata.get('version', None)
@@ -37,7 +39,7 @@ python populate_packages_prepend () {
             description = pdata.get('description', None)
             if description:
                 d.setVar('SUMMARY_%s' % expanded_pkgname, description.replace(u"\u2018", "'").replace(u"\u2019", "'").encode("utf8"))
-    d.appendVar('RDEPENDS_%s' % d.getVar('PN', True), ' %s' % ' '.join(pkgnames))
+    d.appendVar('RDEPENDS_%s' % d.getVar('PN', True), ' %s' % ' '.join(pkgnames).replace('_', '-'))
 }
 
 FILES_${PN} += " \
diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
index dea443d..2887689 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -143,7 +143,7 @@ def npm_split_package_dirs(pkgdir):
                     if pathitem == 'node_modules':
                         continue
                     pkgitems.append(pathitem)
-                pkgname = '-'.join(pkgitems)
+                pkgname = '-'.join(pkgitems).replace('_', '-')
                 pkgfile = os.path.join(root, dn, 'package.json')
                 data = None
                 if os.path.exists(pkgfile):
-- 
2.8.0




More information about the Openembedded-core mailing list