From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6657041487194226688 X-Received: by 2002:a7b:c207:: with SMTP id x7mr370690wmi.5.1549990631733; Tue, 12 Feb 2019 08:57:11 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a7b:c059:: with SMTP id u25ls127271wmc.9.canary-gmail; Tue, 12 Feb 2019 08:57:11 -0800 (PST) X-Google-Smtp-Source: AHgI3IZkpsPlLSQ/FyV4KTlAxNmB0AyD29Q2Z+M7jBKSGT8xQV2CFwrUtR3zqvoV8etF0gf8z98Z X-Received: by 2002:a1c:b4c1:: with SMTP id d184mr375277wmf.9.1549990631405; Tue, 12 Feb 2019 08:57:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549990631; cv=none; d=google.com; s=arc-20160816; b=FKmBuoT26t6/ADI/pFCQkmvO0ORfM7kScc9X4MKoDZTRDjXOHDUiEXF0rzXWiEQkU/ uvWfZrDCrLF7/eDjhMRiBCfXBQ9Eg3esonREL4SZpuvfayBk2cyf4jiZkRFTyPcItgDf ubrWwDfP73+stRvntnIIpU5bL0nISJEq71md/No8DRFrj976IBY+MFJQwQbK7FBjMSQ2 wmmwzjLftLnXE/D65pjrpsHWmnoxUe9BB6zqCHAJWBWsBxfrXrlVqmX02makzA2bwpQ3 2d4lCdMm9Z+mS54gwwBsBrdCvBcYOPAQk9hQjSBoJuTLEO6RgsWnNEZQFWc6fHWT4qUW 7v4g== 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:to:from; bh=6UzF8Eu0pMvctnotAYLbd8pFrvzf50duhPzAzO7/Zqo=; b=M/cw55KuO8HX6hccKfqSKxYTbm7RUJCMH2UuwVDKQL777rQjF/QHbv7bkISJSnlnQc yCCiVol/Vn34FRh4Ekir5UmT76B2YPRwTprjIZZWgk9jBuQkMBj2iX5geD0hJCK2weH0 u3noxuFKCQFynCHThV3p2XinmOxCvf99fBKAKDA8Nc2OL1wu03w1Uz9mUGMaO+OHXlTg Gyo4igbNROWEYk8VlISgHWljkNzqwPZq0aZ7XYCt2NWyU7c/tL4qYmbwuu/lObryEsFN pSVVEJ4jF+lqoCgAnh9pPrJPJ6cjW8R7v2ClZgQjxmRRDCcYCWwwpQYXjqp3fz3CwAHl MpvA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by best guess record for domain of hws@denx.de) smtp.mailfrom=hws@denx.de Return-Path: Received: from mail-out.m-online.net (mail-out.m-online.net. [212.18.0.9]) by gmr-mx.google.com with ESMTPS id q5si575728wrn.0.2019.02.12.08.57.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Feb 2019 08:57:11 -0800 (PST) Received-SPF: neutral (google.com: 212.18.0.9 is neither permitted nor denied by best guess record for domain of hws@denx.de) client-ip=212.18.0.9; Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 212.18.0.9 is neither permitted nor denied by best guess record for domain of hws@denx.de) smtp.mailfrom=hws@denx.de Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 43zTN71h6dz1rV0J for ; Tue, 12 Feb 2019 17:57:11 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 43zTN71Ytyz1r2H3 for ; Tue, 12 Feb 2019 17:57:11 +0100 (CET) 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 gklLmFeyb2wE for ; Tue, 12 Feb 2019 17:57:09 +0100 (CET) X-Auth-Info: +0+zKCVE9Absh6AVdR6oXZWa/UdoqdEmwmOsEw/SU2w= Received: from sandvich.fritz.box (p578a821c.dip0.t-ipconnect.de [87.138.130.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA for ; Tue, 12 Feb 2019 17:57:09 +0100 (CET) From: Harald Seiler To: isar-users@googlegroups.com Subject: [PATCH v2 2/5] Use modern python formatting Date: Tue, 12 Feb 2019 17:56:34 +0100 Message-Id: <20190212165637.19970-3-hws@denx.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190212165637.19970-1-hws@denx.de> References: <20190212165637.19970-1-hws@denx.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: IUNGThNzZ6nj The use of % for formatting is discouraged because it has side- effects that are not immediately obvious. This commit refactors all uses of % to a better formatting style. As f-Strings are not availible in in some python versions we support (<3.6) the formatter of choice is .format() or manual concatenation in cases where it is more concise. This commit additionally refactors the showdata and listtasks tasks to make better use of the new formatter code. Signed-off-by: Harald Seiler --- meta/classes/base.bbclass | 58 ++++++++++++++-------- meta/classes/wic-img.bbclass | 21 +++++--- .../recipes-core/isar-bootstrap/isar-bootstrap.inc | 12 ++--- 3 files changed, 58 insertions(+), 33 deletions(-) diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 6fcf452..4dea51b 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -32,27 +32,35 @@ do_showdata[nostamp] = "1" python do_showdata() { for e in d.keys(): if d.getVarFlag(e, 'python'): - bb.plain("\npython %s () {\n%s}\n" % (e, d.getVar(e, True))) + code = d.getVar(e, True) + if code.startswith("def"): + bb.plain("\n" + code + "\n") + else: + bb.plain( + "\npython {name} () {{\n{code}}}\n".format( + name=e, code=code + ) + ) } # Derived from Open Embedded: openembedded-core/meta/classes/utility-tasks.bbclass addtask listtasks do_listtasks[nostamp] = "1" python do_listtasks() { - taskdescs = {} + tasks = {} maxlen = 0 for e in d.keys(): if d.getVarFlag(e, 'task'): maxlen = max(maxlen, len(e)) if e.endswith('_setscene'): - desc = "%s (setscene version)" % (d.getVarFlag(e[:-9], 'doc') or '') + tasks[e] = ( + d.getVarFlag(e[:-9], 'doc') or '' + ) + " (setscene version)" else: - desc = d.getVarFlag(e, 'doc') or '' - taskdescs[e] = desc + tasks[e] = d.getVarFlag(e, 'doc') or '' - tasks = sorted(taskdescs.keys()) - for taskname in tasks: - bb.plain("%s %s" % (taskname.ljust(maxlen), taskdescs[taskname])) + for name, desc in sorted(tasks.items()): + bb.plain("{0:{len}} {1}".format(name, desc, len=maxlen)) } root_cleandirs() { @@ -70,30 +78,40 @@ root_cleandirs() { python() { import re + for e in d.keys(): flags = d.getVarFlags(e) if flags and flags.get('task'): rcleandirs = flags.get('root_cleandirs') if rcleandirs: tmpdir = os.path.normpath(d.getVar("TMPDIR", True)) - rcleandirs = list(os.path.normpath(d.expand(i)) - for i in rcleandirs.split()) + rcleandirs = list( + os.path.normpath(d.expand(i)) for i in rcleandirs.split() + ) for i in rcleandirs: if not i.startswith(tmpdir): - bb.fatal("root_cleandirs entry %s is not contained in " - "TMPDIR %s" % (i, tmpdir)) + bb.fatal( + "root_cleandirs entry {} is not contained in TMPDIR {}".format( + i, tmpdir + ) + ) - ws = re.match("^\s*", d.getVar(e, False)).group() if flags.get('python'): - d.prependVar(e, ws + "d.setVar('ROOT_CLEANDIRS_DIRS', '" - + " ".join(rcleandirs) + "')\n" - + ws + "bb.build.exec_func(" - + "'root_cleandirs', d)\n") + cleandir_code = ( + "{ws}d.setVar('ROOT_CLEANDIRS_DIRS', '{dirlist}')\n" + "{ws}bb.build.exec_func('root_cleandirs', d)\n" + ) else: - d.prependVar(e, ws + "ROOT_CLEANDIRS_DIRS='" - + " ".join(rcleandirs) + "'\n" - + ws + "root_cleandirs\n") + cleandir_code = ( + "{ws}ROOT_CLEANDIRS_DIRS='{dirlist}'\n" + "{ws}root_cleandirs\n" + ) + + ws = re.match(r"^\s*", d.getVar(e, False)).group() + d.prependVar( + e, cleandir_code.format(ws=ws, dirlist=" ".join(rcleandirs)) + ) } # filter out all "apt://" URIs out of SRC_URI and stick them into SRC_APT diff --git a/meta/classes/wic-img.bbclass b/meta/classes/wic-img.bbclass index 76602d8..9cb869c 100644 --- a/meta/classes/wic-img.bbclass +++ b/meta/classes/wic-img.bbclass @@ -5,6 +5,8 @@ # python () { + import itertools + wks_full_path = None wks_file = d.getVar('WKS_FILE', True) @@ -18,14 +20,21 @@ python () { wks_full_path = wks_file else: bbpaths = d.getVar('BBPATH', True).split(':') + corebase_paths = bbpaths + corebase = d.getVar('COREBASE', True) - search_path = ':'.join('%s/wic' % p for p in bbpaths) + ':' + \ - ':'.join('%s/scripts/lib/wic/canned-wks' % l \ - for l in (bbpaths + [corebase])) + if corebase is not None: + corebase_paths.append(corebase) + + search_path = ":".join(itertools.chain( + (p + "/wic" for p in bbpaths), + (l + "/scripts/lib/wic/canned-wks" + for l in (corebase_paths)), + )) wks_full_path = bb.utils.which(search_path, wks_file) if not wks_full_path: - bb.fatal("WKS_FILE '%s' not found" % wks_file) + bb.fatal("WKS_FILE '{}' not found".format(wks_file)) d.setVar('WKS_FULL_PATH', wks_full_path) } @@ -68,12 +77,12 @@ python do_rootfs_wicenv () { for var in wicvars.split(): value = d.getVar(var, True) if value: - envf.write('%s="%s"\n' % (var, value.strip())) + envf.write('{}="{}"\n'.format(var, value.strip())) # this part is stolen from OE ./meta/recipes-core/meta/wic-tools.bb with open(os.path.join(outdir, "wic-tools.env"), 'w') as envf: for var in ('RECIPE_SYSROOT_NATIVE', 'STAGING_DATADIR', 'STAGING_LIBDIR'): - envf.write('%s="%s"\n' % (var, d.getVar(var, True).strip())) + envf.write('{}="{}"\n'.format(var, d.getVar(var, True).strip())) } diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc index 234d339..5114714 100644 --- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc +++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc @@ -40,18 +40,16 @@ python () { d.setVar("DEBOOTSTRAP_KEYRING", "--keyring ${APTKEYRING}") for key in distro_apt_keys.split(): url = urlparse(key) - filename = ''.join([wd, url.path]) - d.appendVar("SRC_URI", " %s" % key) - d.appendVar("APTKEYFILES", " %s" % filename) + d.appendVar("SRC_URI", " " + key) + d.appendVar("APTKEYFILES", " " + wd + url.path) if bb.utils.to_boolean(d.getVar('ISAR_USE_CACHED_BASE_REPO')): own_pub_key = d.getVar("BASE_REPO_KEY", False) if own_pub_key: d.setVar("DEBOOTSTRAP_KEYRING", "--keyring ${APTKEYRING}") for key in own_pub_key.split(): url = urlparse(key) - filename = ''.join([wd, url.path]) - d.appendVar("SRC_URI", " %s" % key) - d.appendVar("APTKEYFILES", " %s" % filename) + d.appendVar("SRC_URI", " " + key) + d.appendVar("APTKEYFILES", " " + wd + url.path) } def aggregate_files(d, file_list, file_out): @@ -170,7 +168,7 @@ def get_distro_suite(d, is_host): def get_distro_components_argument(d, is_host): components = get_distro_primary_source_entry(d, is_host)[2] if components and components.strip(): - return "--components=%s" % ",".join(components.split()) + return "--components=" + ",".join(components.split()) else: return "" -- 2.14.1