From patchwork Wed Jan 12 20:10:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1579317 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=CfNoUV2X; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JYzFz0Ykdz9s0r for ; Thu, 13 Jan 2022 07:10:46 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 495DB834AA; Wed, 12 Jan 2022 21:10:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="CfNoUV2X"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 060AF83395; Wed, 12 Jan 2022 21:10:43 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x132.google.com (mail-il1-x132.google.com [IPv6:2607:f8b0:4864:20::132]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 397B383481 for ; Wed, 12 Jan 2022 21:10:40 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x132.google.com with SMTP id d3so3486288ilr.10 for ; Wed, 12 Jan 2022 12:10:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=vf2p7iSsPCuAYZBiavBc/YD9T3Di/V2fER2TeTJzxnQ=; b=CfNoUV2XUfLY9bCfPcV0mmIiMPbl0jtyltSJwxJLzJjFO4coJkZq81zdbzzS7mOdRz hWhb5FgD/Oc2SaVllj7JnbXsQ1T+/uIotCN5/w0UrNzkRWSG1wCFPZph28HgMXO2FgeD CHrqvgMfvtPbMyadvZ9bDyFeM3Kb38EqN7tIw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=vf2p7iSsPCuAYZBiavBc/YD9T3Di/V2fER2TeTJzxnQ=; b=40yKMCJy1bbk34VQCoOG02yqltQxbIPXge+UyQM+uiQ5mvuG9vnglod79ZHljGajjp N0Pv2PCks4sOEKNAOyyzBPTDSPgBWX7XLDt3DytE/qistdLUtYFE+DzbHznh8vX4Q9CS R9Vu27fkvSuo6UBHNu1x0qqXLvOfGAk66OFEl7IP04SKJ/eAYkIbdDs8SZ7ZALiffuTI JKinJivxjcij7mH6/ZAkBEFjZCvpE4nYhmwbmWcQrftodPHd1jHMC+9VsPFkkvQFA5xm oX12ONTupyqLVG5qvfxbjOpHml5OLn6lbOrXZxrw6e7IDtRBAUq4fz6oedn8bkEmArLB 2K6w== X-Gm-Message-State: AOAM531eMCORw9njIhlb0Eg41ao2Wa3RoIuKm7bJ73N7cDMCDZBmlEQr Z02sp5nqFwaNruNBOJHreabc3h04WmFPJw== X-Google-Smtp-Source: ABdhPJy6cowt3xwzYBwlugXEZtG3xuL+t535VMeJm4dcslDvSdPZIGXrk8qmmtHR0YidLMtXvdi4zw== X-Received: by 2002:a05:6e02:2142:: with SMTP id d2mr806454ilv.141.1642018238714; Wed, 12 Jan 2022 12:10:38 -0800 (PST) Received: from kiwi.bld.corp.google.com (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id l3sm441138ilo.17.2022.01.12.12.10.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jan 2022 12:10:38 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Tom Rini , Simon Glass Subject: [PATCH v2 1/2] binman: Renumber the fake blob dts Date: Wed, 12 Jan 2022 13:10:35 -0700 Message-Id: <20220112201036.300649-1-sjg@chromium.org> X-Mailer: git-send-email 2.34.1.575.g55b058a8bb-goog MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Use a unique number instead of the current 203, which is used by 203_fip as well. Reformat the code to avoid a long line. Signed-off-by: Simon Glass --- Changes in v2: - Add new patch to renumber the fake blob dts tools/binman/ftest.py | 22 ++++++++++--------- .../{203_fake_blob.dts => 217_fake_blob.dts} | 0 2 files changed, 12 insertions(+), 10 deletions(-) rename tools/binman/test/{203_fake_blob.dts => 217_fake_blob.dts} (100%) diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index a9b7880f362..a9d9160967c 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -4667,16 +4667,6 @@ class TestFunctional(unittest.TestCase): str(e.exception), "Not enough space in '.*u_boot_binman_embed_sm' for data length.*") - def testFakeBlob(self): - """Test handling of faking an external blob""" - with test_util.capture_sys_output() as (stdout, stderr): - self._DoTestFile('203_fake_blob.dts', allow_missing=True, - allow_fake_blobs=True) - err = stderr.getvalue() - self.assertRegex(err, - "Image '.*' has faked external blobs and is non-functional: .*") - os.remove('binman_faking_test_blob') - def testVersion(self): """Test we can get the binman version""" version = '(unreleased)' @@ -4965,5 +4955,17 @@ fdt fdtmap Extract the devicetree blob from the fdtmap # There should be a U-Boot after the final FIP self.assertEqual(U_BOOT_DATA, data[-4:]) + def testFakeBlob(self): + """Test handling of faking an external blob""" + with test_util.capture_sys_output() as (stdout, stderr): + self._DoTestFile('217_fake_blob.dts', allow_missing=True, + allow_fake_blobs=True) + err = stderr.getvalue() + self.assertRegex( + err, + "Image '.*' has faked external blobs and is non-functional: .*") + os.remove('binman_faking_test_blob') + + if __name__ == "__main__": unittest.main() diff --git a/tools/binman/test/203_fake_blob.dts b/tools/binman/test/217_fake_blob.dts similarity index 100% rename from tools/binman/test/203_fake_blob.dts rename to tools/binman/test/217_fake_blob.dts From patchwork Wed Jan 12 20:10:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1579318 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=ndID5Lao; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JYzG80tjJz9s0r for ; Thu, 13 Jan 2022 07:10:56 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 84417834E5; Wed, 12 Jan 2022 21:10:47 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="ndID5Lao"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 67E7C831F0; Wed, 12 Jan 2022 21:10:44 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x132.google.com (mail-il1-x132.google.com [IPv6:2607:f8b0:4864:20::132]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 7419383300 for ; Wed, 12 Jan 2022 21:10:41 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x132.google.com with SMTP id g4so1996190ilq.9 for ; Wed, 12 Jan 2022 12:10:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4dUiE6A836Di44bSW0YZ/8lFFSeoyDcqMPRXBjOj8lM=; b=ndID5Laohs5rFBAu5OcS9RrkyNgrwu7U37WMfBGjHdy6/azERp0mCwr8BkjcfRtDNp zzJOnhpAzJmn4M3XhIe9HtNGEP88KKLe6+MHdFwr2a8IryofciOhv0Ie+v+vTS2CdDD3 kmtKk65x2CVyhubUmvTvgFB8tHl05zZsTSmmc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4dUiE6A836Di44bSW0YZ/8lFFSeoyDcqMPRXBjOj8lM=; b=LkGZ4GwOlwASDku4Gew+348ElxxvzQJbJleyzYGvuZR411adAoW6cqrPw7+veQzysI zdTX2/vNMI1L+zLGuwH6F25pchGlztQbLdRZIx+SBA7+fllAlmAOLrMrBJjxCR85EvYi bPeyWzZllXos5IZiX8hinkQ8ypAudkYuG954J0lsyPAwKpaS8wEwX0FA7nt4W7k4Wg5p yhgJ/X/NB80BkicoR9W0Cu1nWvhIFtEiwhszH6LRn0lCZzTNwvpk+mE0Osc2D34uK+/Y B76YHTvulfhp18ydA8Ed0Qe0K+kqi11IoTP1vmRXKQdVJHTPi/2bMeuDmV/q387iPm7o IFvA== X-Gm-Message-State: AOAM5303Znf2cFmvokK+GZ7ouiq6CEKo36czM64YGZejlKfETeE81QFV S6shSvmuszAYiBVFL5PQCJdqCPaVSwKZwQ== X-Google-Smtp-Source: ABdhPJx1AZbyNIDTlu5c80E1ne9Oj1n49LxFjXsI44wUpB+AS2tSxSkF0scUHmqMH9TYBVqAW6ncPQ== X-Received: by 2002:a05:6e02:14d1:: with SMTP id o17mr823349ilk.276.1642018240118; Wed, 12 Jan 2022 12:10:40 -0800 (PST) Received: from kiwi.bld.corp.google.com (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id l3sm441138ilo.17.2022.01.12.12.10.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jan 2022 12:10:39 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Tom Rini , Simon Glass Subject: [PATCH v2 2/2] binman: Write fake blobs to the output directory Date: Wed, 12 Jan 2022 13:10:36 -0700 Message-Id: <20220112201036.300649-2-sjg@chromium.org> X-Mailer: git-send-email 2.34.1.575.g55b058a8bb-goog In-Reply-To: <20220112201036.300649-1-sjg@chromium.org> References: <20220112201036.300649-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean At present binman writes fake blobs to the current directory. This is not very helpful, since the files serve no useful purpose once binman has finished. They clutter up the source directory and affect future runs, since the files in the current directory are often used in preference to those in the board directory. To avoid these problems, write them to the output directory instead. Move the file-creation code to the Entry base class, so it can be used by any entry type that needs it. This is required since some entry types, such as Entry_blob_ext_list, are not subclasses of Entry_blob. Signed-off-by: Simon Glass --- Changes in v2: - Rebase to master tools/binman/control.py | 8 +++++--- tools/binman/entry.py | 20 ++++++++++++++++++++ tools/binman/etype/blob.py | 8 +------- tools/binman/ftest.py | 1 - 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/tools/binman/control.py b/tools/binman/control.py index 4b3ce23fb4c..f4c1fd01568 100644 --- a/tools/binman/control.py +++ b/tools/binman/control.py @@ -577,9 +577,11 @@ def ProcessImage(image, update_fdt, write_map, get_contents=True, faked_list = [] image.CheckFakedBlobs(faked_list) if faked_list: - tout.Warning("Image '%s:%s' has faked external blobs and is non-functional: %s" % - (image.name, image.image_name, - ' '.join([e.GetDefaultFilename() for e in faked_list]))) + tout.Warning( + "Image '%s:%s' has faked external blobs and is non-functional: %s" % + (image.name, image.image_name, + ' '.join([os.path.basename(e.GetDefaultFilename()) + for e in faked_list]))) return bool(missing_list) or bool(faked_list) diff --git a/tools/binman/entry.py b/tools/binman/entry.py index 54cc3726b9d..bac90bbbcde 100644 --- a/tools/binman/entry.py +++ b/tools/binman/entry.py @@ -7,6 +7,7 @@ from collections import namedtuple import importlib import os +import pathlib import sys from dtoc import fdt_util @@ -972,6 +973,25 @@ features to produce new behaviours. if self.missing: missing_list.append(self) + def check_fake_fname(self, fname): + """If the file is missing and the entry allows fake blobs, fake it + + Sets self.faked to True if faked + + Args: + fname (str): Filename to check + + Returns: + fname (str): Filename of faked file + """ + if self.allow_fake and not pathlib.Path(fname).is_file(): + outfname = tools.GetOutputFilename(os.path.basename(fname)) + with open(outfname, "wb") as out: + out.truncate(1024) + self.faked = True + return outfname + return fname + def CheckFakedBlobs(self, faked_blobs_list): """Check if any entries in this section have faked external blobs diff --git a/tools/binman/etype/blob.py b/tools/binman/etype/blob.py index 65ebb2ecf4d..59728f368ec 100644 --- a/tools/binman/etype/blob.py +++ b/tools/binman/etype/blob.py @@ -5,8 +5,6 @@ # Entry-type module for blobs, which are binary objects read from files # -import pathlib - from binman.entry import Entry from binman import state from dtoc import fdt_util @@ -38,16 +36,12 @@ class Entry_blob(Entry): self._filename = fdt_util.GetString(self._node, 'filename', self.etype) def ObtainContents(self): - if self.allow_fake and not pathlib.Path(self._filename).is_file(): - with open(self._filename, "wb") as out: - out.truncate(1024) - self.faked = True - self._filename = self.GetDefaultFilename() self._pathname = tools.GetInputFilename(self._filename, self.external and self.section.GetAllowMissing()) # Allow the file to be missing if not self._pathname: + self._pathname = self.check_fake_fname(self._filename) self.SetContents(b'') self.missing = True return True diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index a9d9160967c..f4ff7b65831 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -4964,7 +4964,6 @@ fdt fdtmap Extract the devicetree blob from the fdtmap self.assertRegex( err, "Image '.*' has faked external blobs and is non-functional: .*") - os.remove('binman_faking_test_blob') if __name__ == "__main__":