From patchwork Mon Jul 8 13:33:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Enguerrand de Ribaucourt X-Patchwork-Id: 46087 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D5FBC3DA44 for ; Mon, 8 Jul 2024 13:34:08 +0000 (UTC) Received: from mail.savoirfairelinux.com (mail.savoirfairelinux.com [208.88.110.44]) by mx.groups.io with SMTP id smtpd.web10.79893.1720445646243342246 for ; Mon, 08 Jul 2024 06:34:06 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@savoirfairelinux.com header.s=DFC430D2-D198-11EC-948E-34200CB392D2 header.b=AwqHRl2t; spf=pass (domain: savoirfairelinux.com, ip: 208.88.110.44, mailfrom: enguerrand.de-ribaucourt@savoirfairelinux.com) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id 93A729C5D29; Mon, 8 Jul 2024 09:34:05 -0400 (EDT) Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10032) with ESMTP id uh8SmcDV1fVT; Mon, 8 Jul 2024 09:34:04 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.savoirfairelinux.com (Postfix) with ESMTP id D47C79C5D41; Mon, 8 Jul 2024 09:34:04 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.savoirfairelinux.com D47C79C5D41 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=savoirfairelinux.com; s=DFC430D2-D198-11EC-948E-34200CB392D2; t=1720445644; bh=xoS5t+T7O5m1fzVdpWs5yqbgUURDaFF8MDl2PM00L9s=; h=From:To:Date:Message-Id:MIME-Version; b=AwqHRl2tDvfvw3xfOcZtWQVflT/PM/y+ZZ/PT4HmRxv3AA8gs0kcxczEV4yKMO6e5 BsXQPeg5IAwS/h8gycAKI+e4US61CcYcc0q4VV4ciTvShCuInlJvjLPwY4nSO5TzEP 78ezGybAYMXQSD9fdo+uGfEnGXwDsuidBJLhqCE7HAXI/Hw+kx7/rvxq6bRm4YLNnn Tg8FYp9HMg0Es6iHZwKEFypjUsCKhEPZEGqznsXZnnVs50orgjaEXnYjasYQ0/CgPl sNrM4vJGPgtqz7PtMzSuwXrHLL+P4pUD3S/tmlgGNiPZJZC+kKD7idD6H1t+uDrxK3 PB462t+3Fw2Yg== X-Virus-Scanned: amavis at mail.savoirfairelinux.com Received: from mail.savoirfairelinux.com ([127.0.0.1]) by localhost (mail.savoirfairelinux.com [127.0.0.1]) (amavis, port 10026) with ESMTP id yusLkGDCk1sZ; Mon, 8 Jul 2024 09:34:04 -0400 (EDT) Received: from sfl-deribaucourt.rennes.sfl (80-15-101-118.ftth.fr.orangecustomers.net [80.15.101.118]) by mail.savoirfairelinux.com (Postfix) with ESMTPSA id 1FDD09C5D1A; Mon, 8 Jul 2024 09:34:04 -0400 (EDT) From: Enguerrand de Ribaucourt To: bitbake-devel@lists.openembedded.org Cc: tanguy.raufflet@savoirfairelinux.com, richard.purdie@linuxfoundation.org, Enguerrand de Ribaucourt Subject: [PATCH v2 2/4] npm: accept unspecified versions in package.json Date: Mon, 8 Jul 2024 15:33:55 +0200 Message-Id: <20240708133357.306422-3-enguerrand.de-ribaucourt@savoirfairelinux.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240708133357.306422-1-enguerrand.de-ribaucourt@savoirfairelinux.com> References: <20240708133357.306422-1-enguerrand.de-ribaucourt@savoirfairelinux.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 08 Jul 2024 13:34:08 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/bitbake-devel/message/16403 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 default values to allow building such packages. For the shrinkwrap, we can actually use the resolved field which contains the exact source, including the revision, to pass integrity tests. This applies for instance to this package which doesn't declare a version: - https://github.com/cockpit-project/cockpit/blob/23701a555a5af13f998ee4c7526d27fdb5669d63/package.json#L2 Co-authored-by: Tanguy Raufflet Signed-off-by: Tanguy Raufflet Signed-off-by: Enguerrand de Ribaucourt --- bitbake/lib/bb/fetch2/npmsw.py | 2 +- meta/classes-recipe/npm.bbclass | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bitbake/lib/bb/fetch2/npmsw.py b/bitbake/lib/bb/fetch2/npmsw.py index 018e0ad546..044f5b96f8 100644 --- a/bitbake/lib/bb/fetch2/npmsw.py +++ b/bitbake/lib/bb/fetch2/npmsw.py @@ -97,7 +97,7 @@ class NpmShrinkWrap(FetchMethod): integrity = params.get("integrity", None) resolved = params.get("resolved", None) - version = params.get("version", None) + version = params.get("version", params.get("resolved", None)) # Handle registry sources if is_semver(version) and integrity: diff --git a/meta/classes-recipe/npm.bbclass b/meta/classes-recipe/npm.bbclass index 91da3295f2..a73ff29be8 100644 --- a/meta/classes-recipe/npm.bbclass +++ b/meta/classes-recipe/npm.bbclass @@ -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']));