npm: accept unspecified versions in package.json

Our current emulation mandates that the package.json contains a version
field. Some packages may not provide it when they are not published to
the registry. The actual `npm pack` would allow such packages, so
should we.

This patch adds a default value to allow building such packages.

This applies for instance to this package which doesn't declare a
version:
 - 23701a555a/package.json (L2)

v3:
 - Split bitbake npmsw.py modification in another commit

Co-authored-by: Tanguy Raufflet <tanguy.raufflet@savoirfairelinux.com>
(From OE-Core rev: 470c4c027c2b8bbecf23aa63650a22a312de9aa6)

Signed-off-by: Tanguy Raufflet <tanguy.raufflet@savoirfairelinux.com>
Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Enguerrand de Ribaucourt 2024-08-12 14:28:26 +02:00 committed by Richard Purdie
parent ec86853a26
commit 1053035cbc

View File

@ -72,8 +72,10 @@ def npm_pack(env, srcdir, workdir):
j = json.load(f)
# base does not really matter and is for documentation purposes
# only. But the 'version' part must exist because other parts of
# only. But the 'version' part must exist because other parts of
# the bbclass rely on it.
if 'version' not in j:
j['version'] = '0.0.0-unknown'
base = j['name'].split('/')[-1]
tarball = os.path.join(workdir, "%s-%s.tgz" % (base, j['version']));