From patchwork Mon Aug 8 10:51:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stefan Herbrechtsmeier X-Patchwork-Id: 1664521 X-Patchwork-Delegate: sjg@chromium.org 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=weidmueller.onmicrosoft.com header.i=@weidmueller.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-weidmueller-onmicrosoft-com header.b=OAW1QVT/; 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 (2048 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4M1Y1g28CMz9s2R for ; Mon, 8 Aug 2022 20:52:23 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 9D91784164; Mon, 8 Aug 2022 12:52:00 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=weidmueller.com 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=weidmueller.onmicrosoft.com header.i=@weidmueller.onmicrosoft.com header.b="OAW1QVT/"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CA45084377; Mon, 8 Aug 2022 12:51:56 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80087.outbound.protection.outlook.com [40.107.8.87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id D5F8584131 for ; Mon, 8 Aug 2022 12:51:51 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=weidmueller.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=stefan.herbrechtsmeier-oss@weidmueller.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CKSPukM/7W3KvnxPy+sXWIKyoFK+qTDPBC/RMjpH7srYxVWcWfYTkUrGcZwLWDL4mKFwj2ZAbOQqfNfRaTY1V3S1CeZsabukFsdyCq4nXaJ0wKUCJoIIM6xgaYUELyFIMYaBLgiTMsGb0vCFH24dUDvluzJCV5CpgOMzBvI2EhMo7pKUUfarSZPEZU6QtN3F+dAp+H0gUypba9kAWPjaW7zvFhMvcAAXvKV5az4KI89e/WXkxkYYzpc6VLwFzU10p+0hcQkbBpJqBiewCuM5XQKaG2N9cufWx68+JeEIqws/gwdZ68MKjexvcd7kfqNM5ZdrhxZBXxktw6yURfrQvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qaaCXn8zEQ4HdxGB3tC4SaSBjcDxMs12OL5C06TpvgQ=; b=SjDOS2TsQi7ATwemYppvLz5d81u4BwIAkXaqxM2W3yo6kyryfVb1LUAsNGQS48vewQHAFzHVHi97fqWvLbl9KE7jad/Ff6inG7WCSeTHU2JGYrwypRNpsvQ64OEyHodm/ypb+kFpt0C7laipVDLOezO2mMcr4E1qQaiucLq4a/CYMZ+0R0WPfUs7LnM38kbXq1qOLA1y1RgtHlMlw1+9hMg22RkHKIPRSRef4tpqqGYoN0xNYPa9o22kfjYgepJZnd1QxXdKU5pf5mirBNbjhz4wbjp8ueB7m5wz5NrvBdJtx2yLS9QD+zWyhhcYTM397oKoGV7Qn6eo4Wa9tkFlqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=weidmueller.com; dmarc=pass action=none header.from=weidmueller.com; dkim=pass header.d=weidmueller.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=weidmueller.onmicrosoft.com; s=selector1-weidmueller-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qaaCXn8zEQ4HdxGB3tC4SaSBjcDxMs12OL5C06TpvgQ=; b=OAW1QVT/Wlbe1hhbiw4D0jNCgm7Lc6mJJx3f5VzT2yvq0IqAQPGwQtE2jBzVKmAc/jEIHqa2OIVhSGlMms9FyMuXSY5eZzN7w4IEgUS61zmCRe6aoZVTW3ITo0Z1rZrq289Aj4ifQ3hP5U2F/w2KTp8LLOzen1o4OUDkWoOZFp8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=weidmueller.com; Received: from PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) by DB6PR0802MB2487.eurprd08.prod.outlook.com (2603:10a6:4:9e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.15; Mon, 8 Aug 2022 10:51:50 +0000 Received: from PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f95b:2e64:9ee6:4d44]) by PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f95b:2e64:9ee6:4d44%3]) with mapi id 15.20.5504.020; Mon, 8 Aug 2022 10:51:50 +0000 From: Stefan Herbrechtsmeier To: u-boot@lists.denx.de Cc: Stefan Herbrechtsmeier , Alper Nebi Yasak , Simon Glass Subject: [PATCH v2 03/10] binman: Simplify comp_util class Date: Mon, 8 Aug 2022 12:51:18 +0200 Message-Id: <20220808105125.21356-3-stefan.herbrechtsmeier-oss@weidmueller.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220808105125.21356-1-stefan.herbrechtsmeier-oss@weidmueller.com> References: <20220808105125.21356-1-stefan.herbrechtsmeier-oss@weidmueller.com> X-ClientProxiedBy: FR0P281CA0058.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::19) To PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8335a5f2-d297-4459-a877-08da792bff58 X-MS-TrafficTypeDiagnostic: DB6PR0802MB2487:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: e97j3LCtguF34Xft11tlD0Mbt6eTr5GkZK7MuumjUfIx/qpVp2Xmo8L3Cf8XRP4ppTzdix2v7NoEp+ev1idjNz4GT8wyUKZRUmPF36ECZR0GVu/GE1/9B6JU0HVm22dn171X6wWzZp4fx3mheMjwNvwMKVJoAIK2+0F+nF30ysnaMJdjI+zQgsEiumih2COlnw1rrZ0hCy+fzE0XqNqJNIJTp2n8xKq4Ad85cmyoHZdT0fnZXCqQnUQthXinMjYWVagoHQsfe+3I7YnnOPYfWY1nk3WEwL0LseZkIUDZvjdZo4H7AGd/XfbxfM2MItDbjLDjm1Md8i/aBbwKWdYro7zbt9W0EdJTZQY/PFuLepeIz6yPbFawODlMgh75HZB63G+UVErlSTFdu8M3190PpidQLCyofabqRllJfz7pyBBn+D6qfF+JsqN4zUXqnWcZaVhA/bKZ3dF8WE1pKrYSmV8r29dQJnB7N0HsUig7sC6f2NSVseOXypSJ+zmgFyDU4nVn9WCkS+Gdht2OcDGG+3XIWOGlq8zZDazXkeEX1fTK3wGkWDJvfYEHG+mcN9qlDxZ9y1OGXUmG+3JikhM3eqf/eTNGYmzuONPEDDJhxAGoF33GBM5r2nwKzng11a1KYBgcG8G1ygcmplILvfW/E8yL0MCo8iOjFfWFt2C0yclIINxkvzLwFy/Svm0QB2pUMLYGGTra81d7FqPi8TMSOOzZFBgvObh42uiipMbyTmIEHP58EJ3ApYDjlo1eKmggCp+mwb1HZnq6sb93fQfDHoQK87dKzFRHMj5I83i47Vo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB6969.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(376002)(346002)(136003)(366004)(39860400002)(396003)(6666004)(2906002)(6512007)(26005)(41300700001)(52116002)(6506007)(83380400001)(38100700002)(38350700002)(2616005)(186003)(1076003)(478600001)(36756003)(4326008)(8676002)(66476007)(66556008)(8936002)(86362001)(6486002)(66946007)(6916009)(316002)(54906003)(5660300002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?Ny+hChVNuhFqcp/FAbwT8kKLa3kA?= =?utf-8?q?zCfLIC7MOPnKIZPDgC5ql1VO+p6tiaGaGibfq08roalJULyxQxnF/mnBeF5DX0BrB?= =?utf-8?q?+YS5GBTxB7wWSrC5II4sUjbQy8/+QwHRo/E1w8PevoEkjUxHFtQvvYsOBtIjnax1n?= =?utf-8?q?qTvxtFyIwZXxckj7iyIpp9AL559zDX1GDyCQLjMyoquVFIRCMjq01Su5GJGUDCK8y?= =?utf-8?q?6E+Tmacx9QPEmgQk5FgKgls17gKfTF1T4NflwZRUZROR7zPNsSVWD1mPC0Dtqx49Z?= =?utf-8?q?E6zRzIWRFt7T64uYelFC2pFHH7QewXsczcmy6kscf+jMAitZ778FREYeBCxlEJ+uC?= =?utf-8?q?gRHKd35K3qT39engMDr/rinpmlWhwTRG7YVkQGAUuUvd3rxJA+jRMW9WCWbPPlnOA?= =?utf-8?q?NPdjmRh7Va/V28XDxixx6bmrsTOf54LTMkBgJYcARQs1z1VvKuIEjxc0xLaGK7oJW?= =?utf-8?q?6M7XCyQv4Cmu9LHpTW9pUjRK5Ue58eaXAthyZC6+nAuUcHxykTYgTLdvOFRbFVeCJ?= =?utf-8?q?ut8Qd9pPDMrxqZaSgySChJGaRf+B6Ru1hkOk8TeW3l7s4Vz3j5Cf98ZLK7A49Yibl?= =?utf-8?q?6MZ2giI5MtufGwNv3uVkXpdtn9mDnRO91gvrAvsHUaTC8IAlmj7/sHVQJXgQ5JOTg?= =?utf-8?q?moeB42msJHJ2h+YwwWcDCJ0mvJqdGeSoqO/H35A8+FR2p7rso5ozE/s2V6V90WxPu?= =?utf-8?q?3QlOJ5aVhxhyphmr6brMPQ0026Wz3lQs14FYvQZzWn538vxyFnCfB5a6DKWZSfBvg?= =?utf-8?q?VFR50yg2z6dEJlZyv2HYjfxXHp1sN9E6oSzOekh81CxgOibaQSaHO7eRRj67RvbNA?= =?utf-8?q?eZtgJ/pzstKQtFBikiP+uC8V5hPU9CHXDtk8uQ4HoNsEAvhXNOXzHSpNcB9NcvLtf?= =?utf-8?q?yW5CwOW9lzwU2FcRTX8O6sAF+UCKttx7ukCsMFN27lMT+w5BzjMULg8fLaTo04N4b?= =?utf-8?q?bcOrstWgCPRFWTlpuXM4/JYotMREl2V6mdoNO7xb7S1D7PLnUdEpmNHblLlj/bFDQ?= =?utf-8?q?RpBvJf/QaPKca2zN5KnyvnpIcwfI232Eld7XxVPmRfZf3r52WXk8utdk4EAebc9Xk?= =?utf-8?q?Hvm6qt24/ULDgE5yMQHMXTFTPg0kAB5YR7D0sxWzlUXYv+VOgE7XiHU35WVlo8V/V?= =?utf-8?q?0jK3Hebsw/x4aEd1CNR+5w+2EHPx4ARLz5pspUrZWkCELUusLkYBcFt1KJcCbdooh?= =?utf-8?q?IWKs8XgIoQmVdN744lg4GfB61edSbvjHTCUWn1B5OGRcVbZt/gpzYnU9mcMt9J6iP?= =?utf-8?q?bfkzTjwaKuKIHwRcFrlq9spRkv35dStRkZQaHgmMxMelHP35rUsM0FnIHcVR505Hi?= =?utf-8?q?MecUivBDcebW5agWqMKDkG558xUFjPWKAmO6DbGDTYEyMQBZbqLi1xbqf5bTTLKhh?= =?utf-8?q?yci7sueljuDFmvDJhMiLlpjIQZjv9MRvROs0if1vBtX0hTEldIHVoGAegvrws3Nz1?= =?utf-8?q?X3eDenHN+gMnO5RK8dXh90Ob5uTu+io3NRDuX2ixvnzTEEKupdEuKEuX1uTLaCP3S?= =?utf-8?q?Z5hpcO9Su5zBsE4HEKWXHB7PIkS5AiDb+A=3D=3D?= X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8335a5f2-d297-4459-a877-08da792bff58 X-MS-Exchange-CrossTenant-AuthSource: PAXPR08MB6969.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Aug 2022 10:51:50.2151 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e4289438-1c5f-4c95-a51a-ee553b8b18ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wP628KskobExILe/dY08fjzrcin/koT/gtiIhg8wMbZ+ZtQr7t/+cCo3LAR9OqpTdHsHGKpUo9O61O6bBQjogg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2487 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.6 at phobos.denx.de X-Virus-Status: Clean From: Stefan Herbrechtsmeier Simplify the comp_util class by remove duplicate code as preparation for additional compress algorithms. Signed-off-by: Stefan Herbrechtsmeier Reviewed-by: Simon Glass --- (no changes since v1) tools/binman/cbfs_util_test.py | 2 +- tools/binman/comp_util.py | 46 +++++++++++++++++++++++----------- tools/binman/ftest.py | 2 +- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/tools/binman/cbfs_util_test.py b/tools/binman/cbfs_util_test.py index f86b295149..44ebd04278 100755 --- a/tools/binman/cbfs_util_test.py +++ b/tools/binman/cbfs_util_test.py @@ -50,7 +50,7 @@ class TestCbfs(unittest.TestCase): cls.cbfstool = bintool.Bintool.create('cbfstool') cls.have_cbfstool = cls.cbfstool.is_present() - cls.have_lz4 = comp_util.HAVE_LZ4 + cls.have_lz4 = comp_util.is_present('lz4') @classmethod def tearDownClass(cls): diff --git a/tools/binman/comp_util.py b/tools/binman/comp_util.py index 269bbf7975..faa08a7f8a 100644 --- a/tools/binman/comp_util.py +++ b/tools/binman/comp_util.py @@ -1,5 +1,7 @@ # SPDX-License-Identifier: GPL-2.0+ # Copyright 2022 Google LLC +# Copyright (C) 2022 Weidmüller Interface GmbH & Co. KG +# Stefan Herbrechtsmeier # """Utilities to compress and decompress data""" @@ -8,12 +10,23 @@ import tempfile from binman import bintool from patman import tools -LZ4 = bintool.Bintool.create('lz4') -HAVE_LZ4 = LZ4.is_present() +# Supported compressions +COMPRESSIONS = ['lz4', 'lzma'] -LZMA_ALONE = bintool.Bintool.create('lzma_alone') -HAVE_LZMA_ALONE = LZMA_ALONE.is_present() +bintools = {} +def _get_tool_name(algo): + names = {'lzma': 'lzma_alone'} + return names.get(algo, algo) + +def _get_tool(algo): + global bintools + name = _get_tool_name(algo) + tool = bintools.get(name) + if not tool: + tool = bintool.Bintool.create(name) + bintools[name] = tool + return tool def compress(indata, algo): """Compress some data using a given algorithm @@ -33,13 +46,12 @@ def compress(indata, algo): """ if algo == 'none': return indata - if algo == 'lz4': - data = LZ4.compress(indata) - # cbfstool uses a very old version of lzma - elif algo == 'lzma': - data = LZMA_ALONE.compress(indata) - else: + if algo not in COMPRESSIONS: raise ValueError("Unknown algorithm '%s'" % algo) + + tool = _get_tool(algo) + data = tool.compress(indata) + return data def decompress(indata, algo): @@ -60,10 +72,14 @@ def decompress(indata, algo): """ if algo == 'none': return indata - if algo == 'lz4': - data = LZ4.decompress(indata) - elif algo == 'lzma': - data = LZMA_ALONE.decompress(indata) - else: + if algo not in COMPRESSIONS: raise ValueError("Unknown algorithm '%s'" % algo) + + tool = _get_tool(algo) + data = tool.decompress(indata) + return data + +def is_present(algo): + tool = _get_tool(algo) + return tool.is_present() diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index 057b4e28b7..96c15cff77 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -212,7 +212,7 @@ class TestFunctional(unittest.TestCase): TestFunctional._MakeInputFile('tee.elf', tools.read_file(cls.ElfTestFile('elf_sections'))) - cls.have_lz4 = comp_util.HAVE_LZ4 + cls.have_lz4 = comp_util.is_present('lz4') @classmethod def tearDownClass(cls):