From patchwork Wed Apr 6 08:18:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Babic X-Patchwork-Id: 1613841 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20210112 header.b=dsb9un17; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::63d; helo=mail-ej1-x63d.google.com; envelope-from=swupdate+bncbcxploxj6ikrb4ezwwjamgqe7z7prpq@googlegroups.com; receiver=) Received: from mail-ej1-x63d.google.com (mail-ej1-x63d.google.com [IPv6:2a00:1450:4864:20::63d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KYHTw1f1vz9sFq for ; Wed, 6 Apr 2022 18:19:00 +1000 (AEST) Received: by mail-ej1-x63d.google.com with SMTP id jx2-20020a170907760200b006dfc374c502sf796387ejc.7 for ; Wed, 06 Apr 2022 01:18:59 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1649233137; cv=pass; d=google.com; s=arc-20160816; b=wyTQ5V2GxhS1SVWBpNI4n3XNXohg3R99ACYqCiGeYCiBjEPzqtt1bb/ffG/dNyyb/q no4Uh5lIWwdBFTUKHWrOcynXoRZmPfhk1JcgP+alCcnle8bFjoHsNm5zRgjMc583ll/4 Ex686hLZ4Jr9MqAOrYiT6J7EgEu8wfNJvzcx1pqFidnDARpp5jKF1ePYGyuzeWW/bhw8 pqOIzP8wJlEgWU6eO2vffvyz/YdRwxP5+GdcHc21UGeaKPzuVcT8zkqUJpJ7G16Nyvnw kofVFVZml/jdV5T3p6sW/TiiujeBCnOmJ+r8Gu26FVkevu5shQQzEjLWvGKaWpKQMt+L na9A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=s4xlcJ79xPzqNtxRi9b7ZtmGNlCMVmDipCa+ui6Qnnk=; b=VU5J36R/mxR58tS3vDsRMwI6RlZ6U9nDcsCS0lvnokG1PDyV5u27QoSLem5DFFyPdz JUe22XTb88HzUi8aYUyzBaZh6sf6uM76DLmMo9xS1zCkGEX1Yi89M1iKGaElUoi+z2Te Ic3Hc+Rve7lCnSLndTZeBs07tBt0oEH6ZtwB0QQr4Gxe7BazPC45bSscnWahDFyPOcf1 XSYBFmNfeHfsV42Ekt7kqzl73nzcFOxiHP7kBj0kuPtTcjx5srrnBP4Ai94jz42v9qxu NpVJMtPc7mFXvsZRHahPwEPtgrsF17TvN0aLgl85sF+8qdKM3QfYY2YAAgbS14vxp+sS moMg== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=s4xlcJ79xPzqNtxRi9b7ZtmGNlCMVmDipCa+ui6Qnnk=; b=dsb9un17jUqh6E74sQZU2VxELKVyJcMYDXXJVEUZ2xM6n+kjEqY28ddlYIy9i3DrH0 dOjE9n874a+SC4uosZukLjwsP9JzWq176PhprwphjFZ2ofXMh7A+F0J6Idt/kKimpOl9 yo0dWOwfn1CZzviB55oauMCrytAd5H5g1zxOIzsqvMv6CEMpnH2HMbljqfxJIGv42qTu 98JotYrHIYAmNHQbD1dHck7juokAM/eAA08Yl2HP5+i49o7qca2yBluYUNVtWPW0S4S2 OzXsUMnX/8ZbRAzP07CjFqfpE4f/hHvO+OogBVkaie1nhOBDpjJ/93znD+BIckMYxFcf iWxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=s4xlcJ79xPzqNtxRi9b7ZtmGNlCMVmDipCa+ui6Qnnk=; b=YWT/hHt236m0ZHbolqtzqjyAmty63pDRcwRjWsbYDbUhQsOiuHvZTMx1trs2hjetFo mCqUjMkftiDNR64f7RJd6qbMKLUwZUAOmDf9KjJ11qLmguvkaUyBvuDkFNHPYnr7KDWD r+UD9iIWqmwwybZNg9aXiK2EbaIJ3l3rL0DWTKqMZMv3ina0M5jLWuNi12QETomyC82v 5BqDN/qmXYWL0YAcQdzd1rhf7h7iEotq02b04iGtLDBY3gvKTRfVnWSqw/Djmt/xq+vq mEN0NMp3eHfcVQGN0eg9ly8L2l0yTeJRAhlWW4xWo/s+khuDizTqgAsYmevDz3kgC9Hk /5uQ== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOAM532I9xIJHlebIaA9fbB2BK1oIHNwqEcRD+BGeBzX5mIibn6E/tRT 8lUTv5r2nEhqgg1Ln/3rDLw= X-Google-Smtp-Source: ABdhPJwCZM/HfxuelShqn2Oo8H4Gs9Yn8ZWG7OqC60FhHZXT2hUrJd/EIpv8EgEq/rcnuF/jEANetw== X-Received: by 2002:a17:907:1606:b0:6df:f528:4033 with SMTP id hb6-20020a170907160600b006dff5284033mr7070310ejc.433.1649233137044; Wed, 06 Apr 2022 01:18:57 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a17:907:629d:b0:6b2:5d23:3c7a with SMTP id nd29-20020a170907629d00b006b25d233c7als2345021ejc.4.gmail; Wed, 06 Apr 2022 01:18:56 -0700 (PDT) X-Received: by 2002:a17:907:7245:b0:6e4:b142:f736 with SMTP id ds5-20020a170907724500b006e4b142f736mr7352311ejc.58.1649233136047; Wed, 06 Apr 2022 01:18:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649233136; cv=none; d=google.com; s=arc-20160816; b=yOn/+cT8+g/FjEWXsiMq3Fn7nCZUtVeejHBhInJ0c77t7c3lPcNUWY8ZwpbqIh5i/C KJLiAg9ld1pFA7vWc6f0f8S7kssGfOdMwVaW9xpElt8MzF9OoTZlkckBVVAzrKQ2yPsV zxoFQfU1uJkuPAqd9IpvHln1EazRbut7C19xgEreqF5XWR36/s8k0TTlMc7Nmxu8X1VK t4+khSjrRgvJR0+hZ75BOkD4c1U26xEMyA2r6wCRXnU1vw251KVMhO2YuM0RFPI2hrLi 6fiAUHLUY/nOkZ+ygXh/dM0jdQOJKt+8s1ahD30OJmoLS8GU6CGtudALmNQdrHq4kyhp KuaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=MH5PnZlSIsOs8qLKtzaZUnamVUZQRVniRJ9Im+oonhc=; b=XytZuM043t0cWAY3Qq+BsorTkAKgzRIdltMQ8MQWcBHWOv0M/YrVD+r5VLd1cz5DKC jwDIPZQKMUETT+U+jkpqQgnM1Kj3219Xn0UNa/pYWWCX9zENabYa3DMOT6Llghk5KWV1 BVxPqgDJ7ZQQLORCFoB0LKid8Gwnk7NbyS1oHyYwm9VIvINw9TVNCYqs0kSZYXoDS5XK miSNcM9RzcrAmP18If5ptEMCyqB/73hHkDKZ793IQDULezoMbWo9fUl4tFn+RHh1VN1a BzY8cGufB4ocD97/MQvdDOVdGhy9K5sQXkTbzC5AF1ckFecZ3VKQ7bn8wRXBS7BhHoIJ ar2w== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de Received: from mail-out.m-online.net (mail-out.m-online.net. [212.18.0.9]) by gmr-mx.google.com with ESMTPS id d8-20020a50e408000000b00418f6042d64si984502edm.1.2022.04.06.01.18.56 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 01:18:56 -0700 (PDT) Received-SPF: neutral (google.com: 212.18.0.9 is neither permitted nor denied by domain of sbabic@denx.de) client-ip=212.18.0.9; Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4KYHTq5gM2z1r1ff; Wed, 6 Apr 2022 10:18:55 +0200 (CEST) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4KYHTq5Tqcz1qqkJ; Wed, 6 Apr 2022 10:18:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id djRqW649krZI; Wed, 6 Apr 2022 10:18:54 +0200 (CEST) Received: from babic.homelinux.org (host-88-217-136-221.customer.m-online.net [88.217.136.221]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPS; Wed, 6 Apr 2022 10:18:54 +0200 (CEST) Received: from localhost (mail.babic.homelinux.org [127.0.0.1]) by babic.homelinux.org (Postfix) with ESMTP id 35C9745400DB; Wed, 6 Apr 2022 10:18:54 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at babic.homelinux.org Received: from babic.homelinux.org ([IPv6:::1]) by localhost (mail.babic.homelinux.org [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id OeRwbufQ7Sdr; Wed, 6 Apr 2022 10:18:51 +0200 (CEST) Received: from paperino.fritz.box (paperino.fritz.box [192.168.178.48]) by babic.homelinux.org (Postfix) with ESMTP id 2BBF44542CF8; Wed, 6 Apr 2022 10:18:40 +0200 (CEST) From: Stefano Babic To: swupdate@googlegroups.com Cc: Stefano Babic , Thomas Haemmerle Subject: [swupdate] [meta swupdate] [V2 10/12] class: rework autoversion to be more generic Date: Wed, 6 Apr 2022 10:18:35 +0200 Message-Id: <20220406081837.2222008-11-sbabic@denx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220406081837.2222008-1-sbabic@denx.de> References: <20220406081837.2222008-1-sbabic@denx.de> MIME-Version: 1.0 X-Original-Sender: sbabic@denx.de X-Original-Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Drop special parsing with @SWU_VERSION, not required anymore, because it is possible to call a function by setting the name inside sw-description. Simplify the workflow and the search pattern. Drop limitation that a package should be part of SWU, and look up for any variable belonging to any package. Drop the association between filename and package name, because it is in most cases wrong and it is replaced by the explicit name of the package in sw-description. Old syntax: version = "@SWU_AUTO_VERSION"; // package name = filename or version = "@SWU_AUTO_VERSION:" or version = "@SWU_AUTO_VERSION:@" New syntax: = "$swupdate_auto_versions()"; or = "$swupdate_auto_versions(@)"; Signed-off-by: Stefano Babic CC: Thomas Haemmerle --- classes/swupdate-common.bbclass | 66 --------------------------------- classes/swupdate-lib.bbclass | 35 +++++++++++++++++ 2 files changed, 35 insertions(+), 66 deletions(-) diff --git a/classes/swupdate-common.bbclass b/classes/swupdate-common.bbclass index 79b2246..1ee241d 100644 --- a/classes/swupdate-common.bbclass +++ b/classes/swupdate-common.bbclass @@ -153,78 +153,12 @@ def swupdate_find_bitbake_variables(d): pass return ' '.join(set(vardeps)) -def swupdate_expand_auto_versions(d, s): - import re - import oe.packagedata - AUTO_VERSION_TAG = "@SWU_AUTO_VERSION" - AUTOVERSION_REGEXP = "version\s*=\s*\"%s" % AUTO_VERSION_TAG - - with open(os.path.join(s, "sw-description"), 'r') as f: - data = f.read() - - def get_package_name(group, file_list): - package = None - - m = re.search(r"%s:(?P.+?(?=[\"@]))" % (AUTOVERSION_REGEXP), group) - if m: - package = m.group('package') - return (package, True) - - for filename in file_list: - if filename in group: - package = filename - - if not package: - bb.fatal("Failed to find file in group %s" % (group)) - - return (package, False) - - def get_packagedata_key(group): - m = re.search(r"%s.+?(?<=@)(?P.+?(?=\"))" % (AUTOVERSION_REGEXP), group) - if m: - return (m.group('key'), True) - return ("PV", False) - - regexp = re.compile(r"\{[^\{]*%s.[^\}]*\}" % (AUTOVERSION_REGEXP)) - while True: - m = regexp.search(data) - if not m: - break - - group = data[m.start():m.end()] - - (package, pkg_name_defined) = get_package_name(group, (d.getVar('SWUPDATE_IMAGES', True) or "").split()) - - pkg_info = os.path.join(d.getVar('PKGDATA_DIR'), 'runtime-reverse', package) - pkgdata = oe.packagedata.read_pkgdatafile(pkg_info) - - (key, key_defined) = get_packagedata_key(group) - - if not key in pkgdata.keys(): - bb.warn("\"%s\" not set for package %s - using \"1.0\"" % (key, package)) - version = "1.0" - else: - version = pkgdata[key].split('+')[0] - - replace_str = AUTO_VERSION_TAG - if pkg_name_defined: - replace_str = replace_str + ":" + package - if key_defined: - replace_str = replace_str + "@" + key - - group = group.replace(replace_str, version) - data = data[:m.start()] + group + data[m.end():] - - with open(os.path.join(s, "sw-description"), 'w+') as f: - f.write(data) - def prepare_sw_description(d): import shutil import subprocess s = d.getVar('S', True) swupdate_expand_bitbake_variables(d, s) - swupdate_expand_auto_versions(d, s) swupdate_write_sha256(s) diff --git a/classes/swupdate-lib.bbclass b/classes/swupdate-lib.bbclass index 233eca1..203de3f 100644 --- a/classes/swupdate-lib.bbclass +++ b/classes/swupdate-lib.bbclass @@ -75,3 +75,38 @@ def swupdate_sign_file(d, s, filename): return hash +def swupdate_auto_versions(d, s, parms): + import re + import oe.packagedata + + def get_package_name(group): + package = None + + pkgvar = group.split('@') + package = pkgvar[0] + if len(pkgvar) > 1: + varname = pkgvar[1] + else: + varname = 'PV' + + return (package, varname) + + if parms is None: + return "undefined" + + group = parms + + (package, key) = get_package_name(group) + + bb.debug(2, "Package %s defined %s" %(package, key)) + + pkg_info = os.path.join(d.getVar('PKGDATA_DIR'), 'runtime-reverse', package) + pkgdata = oe.packagedata.read_pkgdatafile(pkg_info) + + if not key in pkgdata.keys(): + bb.warn("\"%s\" not set for package %s - using \"1.0\"" % (key, package)) + version = "1.0" + else: + version = pkgdata[key].split('+')[0] + + return version