From patchwork Wed Jan 25 09:01:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2529 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Wed, 25 Jan 2023 10:02:25 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f63.google.com (mail-wm1-f63.google.com [209.85.128.63]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 30P92P0L026020 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jan 2023 10:02:25 +0100 Received: by mail-wm1-f63.google.com with SMTP id az37-20020a05600c602500b003da50af44b3sf10632883wmb.1; Wed, 25 Jan 2023 01:02:25 -0800 (PST) ARC-Seal: i=3; a=rsa-sha256; t=1674637340; cv=pass; d=google.com; s=arc-20160816; b=uijK8L4k4NObp2+kgN33HqqruTD51d5hsQmbgL2pGwhDgaKjsuTKwtrDxRc+aQr1EI fK5v78K2m5AYFmsjYr5zOVanszue/wzsrbTdVzG5oFipv5djx8g5gIbFsvt8sD+DPIQc 7ZyZBEzUrq/XrDXdgkImJe4FDwey25qzu1Y7HlozNfNbg5GOYg0Q+2cbLjb4zJGQ7hhu fcaUzvT7TEpKHGclUvEE4Y4n7aTDg5LMD83G8if+FCK3FWq1n3WaP6oDWq5UfIOj+0L/ /rU/bURia9/hfxv8bipEr/i/rupIFEUm69LETNlidHBQIBfOYqqAnRDF1Ds9o6ROx0Am 6SGA== ARC-Message-Signature: i=3; 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=CRImrNZbMNZ1/X5xiPsJPw5cYmTui2fKHU4CO4ie2hM=; b=XaUgONeHVZEvj+I2UmPZjNf/HztPFC6TxdScVcuUBXVvmDS053DY+wnkM/OU4dcjuc 8pgZTsl3nlx/IS/ZYy0+HIhlWcR+yQLpxKGj1Y1AysUJ6c3qXW9wfICZ0M0S94O3gIGX Y4ROLSTqMzxPxS4FbLzqmBXmMwJv4I37+kq0o9/F8JL/XxtbbopDxUYKlMYGngMuvtFe j5cBiqhC2DGlQ0GeQrQOoodfBvWTx54sUjzFeSy6Mb/reK1Vz6DqRGs+X1xWCo/nBzqi QYU3UrKMwy7OKEGFl6ibcWU3bJ7mj0f3T9pHhGUZHmcJ8AtHZBapCKLRaDYf32AWs8HF XbRQ== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=jtZbyZ1h; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.105.53 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=CRImrNZbMNZ1/X5xiPsJPw5cYmTui2fKHU4CO4ie2hM=; b=jFi0+MiAdw5yTLigjeYx3EFvBM2mSqs3DIyPPByJEHwBunPrgbyWrQ5zsxrLLwTAnG Aw+xyTPXO1M8GTCc3De3TBLFAlDB8bV8g7KL4CwDDXNf9qGF5dwODKIzQ2YnooPYkYg1 7vKycnAVlaGB7oZGrVsGpiHt9o/l9nRfpacHZr7kUJU5ddeR7HJKlLKJ2Vo8Zxpp5wM8 OOOV4SIwCq3PBTl26CAwcjczZ5HUolhlie6lP3wkb1Mm/KfKRYBYXKXLCdVEEv9Loud+ Qapb9028I4U8afqMftb632FRAh+Ok0R3z7aKvCHnZAu1E15YRWcMD1/ltX3gkl2uSlyI 4m0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=CRImrNZbMNZ1/X5xiPsJPw5cYmTui2fKHU4CO4ie2hM=; b=oZC4+U0HELoqxiz9mBcTDzy3XCbFiqijHL7d/SNKv4EZG3By/UQ4c8wyYC3+mBE/0X EG1DGQsYcN4e3erxR/PDOP3wjuLagds3BGfYUkqlrgcmrOCIcQLnpXZC6ns1H6Ph+Dhy XJxERlCYxDfiRwmFv1vLL4/Vv7duQ1L/vO33E9LIfVeQEZzaBKeZBD1mhedZ9AbfqZB0 clLP0C7O2kYzjhiyrO0w2XokF/uTeC8VNrPDVYplNuzLi2f+7L/u/9ZWhkpezYprwfD9 nRpstcTVlJr1VARliXGj6o5/G5E5Zm8t7m6d6TlCdCOsutiTt45jC4nQNWomsk7Nph8U 9yXQ== Sender: isar-users@googlegroups.com X-Gm-Message-State: AFqh2kp74ptF9lg+5EoGSCqdsRaiuFjeKwynnjYyWmCNoSvqWycQ3Ny4 hQEMtmIM+eVjHTiTjoJpSm0= X-Google-Smtp-Source: AMrXdXuEdPjmyWJU71fsE+Yn7jN9JGThXI2QgKi9tx5YQ+lZNHO00w933y2Sb2143RlM/4jnVzGZ2g== X-Received: by 2002:a05:600c:41ca:b0:3d0:4993:d45e with SMTP id t10-20020a05600c41ca00b003d04993d45emr2372958wmh.13.1674637340090; Wed, 25 Jan 2023 01:02:20 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:cd91:0:b0:2bf:adc3:9107 with SMTP id q17-20020adfcd91000000b002bfadc39107ls490236wrj.0.-pod-prod-gmail; Wed, 25 Jan 2023 01:02:19 -0800 (PST) X-Received: by 2002:a5d:62c7:0:b0:2bb:dbde:bde4 with SMTP id o7-20020a5d62c7000000b002bbdbdebde4mr25736785wrv.30.1674637338853; Wed, 25 Jan 2023 01:02:18 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1674637338; cv=pass; d=google.com; s=arc-20160816; b=q/aEjz9mzMnd6+jX1I5bwlSJJ3KCWrCZzr2eeZgHF2YwXxuTDAloRJU2nqf4LqVqE4 gO0ECiqrWAR8ii9dzmzGLuK14riDVk+ZP64NSEgsrkpNkMA7DUOcc9TEOkNf/l9FvAAv tImYn6TA9mFd77UyRvnrtVWbAickLsCIZTmJjzDjIEOiw4GWPMALZHBTIcRQCF1nQv27 6hZQpw3ni0Btz7MwFbYfDx8krS+Sni4bqJjMPk5mzFATj7SF9dgz8mGVLPAtNRm53u4i L/6LwyFEHGQ6CMDQQAkgplx/CkkdWW3t8ywo/WBDVnR87AkVR7XHVPpS2P2UuA0rgWhG j/mg== ARC-Message-Signature: i=2; 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:dkim-signature; bh=v0aK+kwWzb+Q08Sib8G83Oemtt9h4qw+hu9c1WX31+E=; b=pz7X2YHthlSU6ah+GZIZiMXcZZDRrJ1SlcQPJ1BU0PtozsjsWzabrCCBQJgTBoV22M QWQTRkdBLfjCM72MlYhpaE/fLmTA5tKS3TduaOEVsSlG6ZR7r3OuhNuoXbekMRTgjDIm znxQNxlTnTGGjJEnSpanXA1bP/3VSP98rJzgTmX/bcF1d4qFNnvjvT2jsdFpIXQqVvaO Soz9/yKKxNtH/ou3Zppx9DJSqguI8lIkeP1zLzV8z7it+Ak3IlrbOJQUITTywRBVnAj7 S5iC9xc00g4u/zkesbcfHy+8FqiLZwuqJLb0E1b1TexAlCo72qkmG3govfjM38cR5gp6 vZ7g== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=jtZbyZ1h; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.105.53 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2053.outbound.protection.outlook.com. [40.107.105.53]) by gmr-mx.google.com with ESMTPS id bn18-20020a056000061200b002bf9650b759si206122wrb.2.2023.01.25.01.02.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Jan 2023 01:02:18 -0800 (PST) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.105.53 as permitted sender) client-ip=40.107.105.53; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HWIHNtPCm59Ti1+6ASL8hC90emovYvVkKzAGAwp1ks6kA0aR+hHMQS2qy4Z3WPfyQvaBemKYIFaz+81IeRgF+Hr8+Psxomxb4SytYqtvvg9YIzVfRNoS07WLlbaxJigp25z8nQiMJJ/4NsTdgvATdwSizigG280HbRZI6C93HHFhLxicoXO0eHX1r4f74sqz/KtaUyEDNBbP1cl/dnjps0EFm0jw74c6kGdUksTIfpkxHAYc/o1fypS5fuWeJPo/Ror5aodYTUZaxuBPvb3/K2qXh2tw6oqg95asIHFV3qywo0co3GOJSfJkXTOqR/maQBCcxql7P5yD68KJh7faQw== 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=v0aK+kwWzb+Q08Sib8G83Oemtt9h4qw+hu9c1WX31+E=; b=kWzxJMRXW+i8D0tB2bc8DzLxDggzYTFPn45TteTnMtjcMlR9uwiUmUAjSFcWil+v13uprAgUPuwIpIsx5pxG+rQQ832dfdJ4w+Z2C1zV5wtN/mZVlH44d1ho8JPgBi4APUC7wcJgyLzmxcEj6SXCtz1HR2xgZY1SXVR5fNn8lw6rLbYzbQUjYSORqEyhmt7ajLaynBI3+/XOv0WF4a+s62mieXa6bLwxxAW+eZoBjf6PCCxYITZoqP+Z7F9vKODm3r86IvvAyz7Zc3ucx3hj2B6Ny+bsO5nD+MXzioZsurxZ40f21a/4zrO47K7BdM5zUWkvmCfNkTuxESdLdjaRNg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.75) smtp.rcpttodomain=googlegroups.com smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from FR3P281CA0080.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::15) by DU0PR10MB5196.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:348::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33; Wed, 25 Jan 2023 09:02:17 +0000 Received: from VE1EUR01FT056.eop-EUR01.prod.protection.outlook.com (2603:10a6:d10:1f:cafe::38) by FR3P281CA0080.outlook.office365.com (2603:10a6:d10:1f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.17 via Frontend Transport; Wed, 25 Jan 2023 09:02:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.75) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; Received-SPF: Pass (protection.outlook.com: domain of siemens.com designates 194.138.21.75 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.75; helo=hybrid.siemens.com; pr=C Received: from hybrid.siemens.com (194.138.21.75) by VE1EUR01FT056.mail.protection.outlook.com (10.152.3.115) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.17 via Frontend Transport; Wed, 25 Jan 2023 09:02:16 +0000 Received: from DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) by DEMCHDC8VRA.ad011.siemens.net (194.138.21.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:16 +0100 Received: from L15-Gen2.fritz.box (139.21.146.184) by DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:15 +0100 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 1/5] simplify image-account-extension Date: Wed, 25 Jan 2023 10:01:52 +0100 Message-ID: <20230125090156.284309-2-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230125090156.284309-1-tobias.schaffner@siemens.com> References: <20230125090156.284309-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.21.146.184] X-ClientProxiedBy: DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) To DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1EUR01FT056:EE_|DU0PR10MB5196:EE_ X-MS-Office365-Filtering-Correlation-Id: a6b3a361-c230-4e17-87be-08dafeb2dbaa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: l0IHwRWR+WLYoY/K9zz7fJO2h/HKdae5vY8L3WXZgL5WNkmUGHPPB8FtgjBDMzmK+C0FxOc0u9Gb+bXlWd8bExPg3zwD6Vf+PHPaxva5wwgDG7YK4u4llrdCU5QbZExWygU4T+Ttl7vbBY6gKAJYpWC2gJRJdfeU8jqvyfGzcV2Ht87cgysSu52h2zeZcPWXZIvogBwH++OQTgN/uWAY9bfdkagiHyf/nHup4YPv5tvtzmUsrnhb/Rmk078VCsY6Ddc1NsHCOuN7P7VeoypS7bFzhDlfMhj9ZlkbTRPS9FnSJHZCnZn5UgEfRdEll+qWwMGh+SJwOL7tpQvnE66V0BgdX70sk5Y2phSdsOwq7D7gXbY5n8f6RZHW0chi9vSg61tHDLM2Aj1Ii6W05LRQ3MXIqIz7NYnCzrIUS6t5V/zIYnC4qOztcV+I3YVkqM4pyf+fAMXtvajyB7zRP9HA4zjLLMAsti82QgxKg4fdppJlhzyze8z/2VJT3qI3MJ6OmIhTxnwQvbSyK7buvL4uXswiUDvDLxFGEERdvnZT9Q71p96VC8K6TYP7hWkxhjSe8fghEHSQPP2Tp94NyRhbhp+gJvK0Afy0Kwv0LZmkvvU6M2e20BV0UIxMzOu9qICEXH4AgF9J0J19oVAcHDcW+B9vjaaqaWVndAv3TFBFtbKOg1fBA+4tv6RttakfbIwbdF+qU6rsna67OtrkFgAiLtTBeRMbSqvkWc44WCPj+4M= X-Forefront-Antispam-Report: CIP:194.138.21.75;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230025)(4636009)(136003)(346002)(396003)(376002)(39860400002)(451199018)(36840700001)(40470700004)(46966006)(30864003)(83380400001)(316002)(2906002)(81166007)(41300700001)(107886003)(6666004)(8936002)(26005)(16526019)(478600001)(356005)(82960400001)(15650500001)(82310400005)(86362001)(82740400003)(186003)(70586007)(40460700003)(8676002)(5660300002)(6916009)(4326008)(36756003)(336012)(70206006)(47076005)(54906003)(40480700001)(36860700001)(956004)(2616005)(1076003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2023 09:02:16.7335 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6b3a361-c230-4e17-87be-08dafeb2dbaa X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a;Ip=[194.138.21.75];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT056.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR10MB5196 X-Original-Sender: tobias.schaffner@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=jtZbyZ1h; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.105.53 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Tobias Schaffner Do the complete user and group creation in python. This allows us to drop the encoding and parsing code that was used to make the user and group lists available in the shell function. Signed-off-by: Tobias Schaffner --- meta/classes/image-account-extension.bbclass | 368 +++++++------------ 1 file changed, 124 insertions(+), 244 deletions(-) diff --git a/meta/classes/image-account-extension.bbclass b/meta/classes/image-account-extension.bbclass index cbc20a2..127732a 100644 --- a/meta/classes/image-account-extension.bbclass +++ b/meta/classes/image-account-extension.bbclass @@ -1,5 +1,5 @@ # This software is a part of ISAR. -# Copyright (C) Siemens AG, 2019 +# Copyright (C) Siemens AG, 2023 # # SPDX-License-Identifier: MIT # @@ -25,251 +25,131 @@ GROUPS ??= "" #GROUP_root[gid] = "" #GROUP_root[flags] = "system" -def gen_accounts_array(d, listname, entryname, flags, verb_flags=None): - from itertools import chain - - entries = (d.getVar(listname, True) or "").split() - return " ".join( - ":".join( - chain( - (entry,), - ( - (",".join( - ( - d.getVarFlag(entryname + "_" + entry, flag, True) or "" - ).split() - ) if flag not in (verb_flags or []) else ( - d.getVarFlag(entryname + "_" + entry, flag, True) or "" - )).replace(":","=") - for flag in flags - ), - ) - ) - for entry in entries - ) - -# List of space separated entries, where each entry has the format: -# username:encryptedpassword:expiredate:inactivenumber:userid:groupid:comment:homedir:shell:group1,group2:flag1,flag2 -IMAGE_ACCOUNTS_USERS =+ "${@gen_accounts_array(d, 'USERS', 'USER', ['password', 'expire', 'inactive', 'uid', 'gid', 'comment', 'home', 'shell', 'groups', 'flags'], ['password', 'comment', 'home', 'shell'])}" - -# List of space separated entries, where each entry has the format: -# groupname:groupid:flag1,flag2 -IMAGE_ACCOUNTS_GROUPS =+ "${@gen_accounts_array(d, 'GROUPS', 'GROUP', ['gid', 'flags'])}" - -do_rootfs_install[vardeps] += "${IMAGE_ACCOUNTS_GROUPS} ${IMAGE_ACCOUNTS_USERS}" -ROOTFS_POSTPROCESS_COMMAND += "image_postprocess_accounts" -image_postprocess_accounts() { - # Create groups - # Add space to the end of the list: - list='${@" ".join(d.getVar('IMAGE_ACCOUNTS_GROUPS', True).split())} ' - while true; do - # Pop first group entry: - list_rest="${list#*:*:* }" - entry="${list%%${list_rest}}" - list="${list_rest}" - - if [ -z "${entry}" ]; then - break - fi - - # Add colon to the end of the entry and remove trailing space: - entry="${entry% }:" - - # Decode entries: - name="${entry%%:*}" - entry="${entry#${name}:}" - - gid="${entry%%:*}" - entry="${entry#${gid}:}" - - flags="${entry%%:*}" - entry="${entry#${flags}:}" - - flags=",${flags}," # Needed for searching for substrings - - # Check if user already exists: - if grep -q "^${name}:" '${ROOTFSDIR}/etc/group'; then - exists="y" - else - exists="n" - fi - - # Create arguments: - set -- # clear arguments - - if [ -n "$gid" ]; then - set -- "$@" --gid "$gid" - fi - - if [ "n" = "$exists" ]; then - if [ "${flags}" != "${flags%*,system,*}" ]; then - set -- "$@" --system - fi - fi - - # Create or modify groups: - if [ "y" = "$exists" ]; then - if [ -z "$@" ]; then - echo "Do not execute groupmod (no changes)." - else - echo "Execute groupmod with \"$@\" for \"$name\"" - sudo -E chroot '${ROOTFSDIR}' \ - /usr/sbin/groupmod "$@" "$name" - fi - else - echo "Execute groupadd with \"$@\" for \"$name\"" - sudo -E chroot '${ROOTFSDIR}' \ - /usr/sbin/groupadd "$@" "$name" - fi - done - - # Create users - list='${@" ".join(d.getVar('IMAGE_ACCOUNTS_USERS', True).split())} ' - while true; do - # Pop first user entry: - list_rest="${list#*:*:*:*:*:*:*:*:*:*:* }" - entry="${list%%${list_rest}}" - list="${list_rest}" - - if [ -z "${entry}" ]; then - break - fi - - # Add colon to the end of the entry and remove trailing space: - entry="${entry% }:" - - # Decode entries: - name="${entry%%:*}" - entry="${entry#${name}:}" - - password="${entry%%:*}" - entry="${entry#${password}:}" - - expire="${entry%%:*}" - entry="${entry#${expire}:}" - - inactive="${entry%%:*}" - entry="${entry#${inactive}:}" - - uid="${entry%%:*}" - entry="${entry#${uid}:}" - - gid="${entry%%:*}" - entry="${entry#${gid}:}" - - comment="${entry%%:*}" - entry="${entry#${comment}:}" - - home="${entry%%:*}" - entry="${entry#${home}:}" - - shell="${entry%%:*}" - entry="${entry#${shell}:}" - - groups="${entry%%:*}" - entry="${entry#${groups}:}" - - flags="${entry%%:*}" - entry="${entry#${flags}:}" - - flags=",${flags}," # Needed for searching for substrings - - # Check if user already exists: - if grep -q "^${name}:" '${ROOTFSDIR}/etc/passwd'; then - exists="y" - else - exists="n" - fi - - # Create arguments: - set -- # clear arguments - - if [ -n "$expire" ]; then - set -- "$@" --expiredate "$expire" - fi - - if [ -n "$inactive" ]; then - set -- "$@" --inactive "$inactive" - fi - - if [ -n "$uid" ]; then - set -- "$@" --uid "$uid" - fi - - if [ -n "$gid" ]; then - set -- "$@" --gid "$gid" - fi - - if [ -n "$comment" ]; then - set -- "$@" --comment "$comment" - fi - - if [ -n "$home" ]; then - if [ "y" = "$exists" ]; then - set -- "$@" --home "$home" --move-home - else - set -- "$@" --home-dir "$home" - fi - fi - - if [ -n "$shell" ]; then - set -- "$@" --shell "$shell" - fi - - if [ -n "$groups" ]; then - set -- "$@" --groups "$groups" - fi - - if [ "n" = "$exists" ]; then - if [ "${flags}" != "${flags%*,system,*}" ]; then - set -- "$@" --system - fi - if [ "${flags}" != "${flags%*,no-create-home,*}" ]; then - set -- "$@" --no-create-home - else - if [ "${flags}" != "${flags%*,create-home,*}" ]; then - set -- "$@" --create-home - fi - fi - fi - - # Create or modify users: - if [ "y" = "$exists" ]; then - if [ -z "$@" ]; then - echo "Do not execute usermod (no changes)." - else - echo "Execute usermod with \"$@\" for \"$name\"" - sudo -E chroot '${ROOTFSDIR}' \ - /usr/sbin/usermod "$@" "$name" - fi - else - echo "Execute useradd with \"$@\" for \"$name\"" - sudo -E chroot '${ROOTFSDIR}' \ - /usr/sbin/useradd "$@" "$name" - fi - - # Set password: - if [ -n "$password" -o "${flags}" != "${flags%*,allow-empty-password,*}" ]; then - chpasswd_args="-e" - if [ "${flags}" != "${flags%*,clear-text-password,*}" ]; then +def image_create_groups(d: "DataSmart") -> None: + """Creates the groups defined in the ``GROUPS`` bitbake variable. + + Args: + d (DataSmart): The bitbake datastore. + + Returns: + None + """ + entries = (d.getVar("GROUPS", True) or "").split() + rootfsdir = d.getVar("ROOTFSDIR", True) + chroot = ["sudo", "-E", "chroot", rootfsdir] + + for entry in entries: + args = [] + group_entry = "GROUP_{}".format(entry) + + with open("{}/etc/group".format(rootfsdir), "r") as group_file: + exists = any(line.startswith("{}:".format(entry)) for line in group_file) + + gid = d.getVarFlag(group_entry, "gid", True) or "" + if gid: + args.append("--gid") + args.append(gid) + + flags = (d.getVarFlag(group_entry, "flags", True) or "").split() + if "system" in flags: + args.append("--system") + + if exists: + if args: + bb.process.run([*chroot, "/usr/sbin/groupmod", *args, entry]) + else: + bb.process.run([*chroot, "/usr/sbin/groupadd", *args, entry]) + + +def image_create_users(d: "DataSmart") -> None: + """Creates the users defined in the ``USERS`` bitbake variable. + + Args: + d (DataSmart): The bitbake datastore. + + Returns: + None + """ + import hashlib + import crypt + + entries = (d.getVar("USERS", True) or "").split() + rootfsdir = d.getVar("ROOTFSDIR", True) + chroot = ["sudo", "-E", "chroot", rootfsdir] + + for entry in entries: + args = [] + user_entry = "USER_{}".format(entry) + + with open("{}/etc/passwd".format(rootfsdir), "r") as passwd_file: + exists = any(line.startswith("{}:".format(entry)) for line in passwd_file) + + def add_user_option(option_name, flag_name): + flag_value = d.getVarFlag(user_entry, flag_name, True) or "" + if flag_value: + args.append(option_name) + args.append(flag_value) + + add_user_option("--expire", "expiredate") + add_user_option("--inactive", "inactive") + add_user_option("--uid", "uid") + add_user_option("--gid", "gid") + add_user_option("--comment", "comment") + add_user_option("--shell", "shell") + + groups = d.getVarFlag(user_entry, "groups", True) or "" + if groups: + args.append("--groups") + args.append(groups.replace(' ', ',')) + + flags = (d.getVarFlag(user_entry, "flags", True) or "").split() + + if exists: + add_user_option("--home", "home") + if d.getVarFlag(user_entry, "home", True) or "": + args.append("--move-home") + else: + add_user_option("--home-dir", "home") + + if "system" in flags: + args.append("--system") + if "no-create-home" in flags: + args.append("--no-create-home") + if "create-home" in flags: + args.append("--create-home") + + if exists: + if args: + bb.process.run([*chroot, "/usr/sbin/usermod", *args, entry]) + else: + bb.process.run([*chroot, "/usr/sbin/useradd", *args, entry]) + + command = [*chroot, "/usr/sbin/chpasswd"] + password = d.getVarFlag(user_entry, "password", True) or "" + if password or "allow-empty-password" in flags: + if "clear-text-password" in flags: + # chpasswd adds a random salt when running against a clear-text password. # For reproducible images, we manually generate the password and use the # SOURCE_DATE_EPOCH to generate the salt in a deterministic way. - if [ -z "${SOURCE_DATE_EPOCH}" ]; then - chpasswd_args="" - else - salt="$(echo "${SOURCE_DATE_EPOCH}" | sha256sum -z | cut -c 1-15)" - password="$(openssl passwd -6 -salt $salt "$password")" - fi - fi - printf '%s:%s' "$name" "$password" | sudo chroot '${ROOTFSDIR}' \ - /usr/sbin/chpasswd $chpasswd_args - fi - if [ "${flags}" != "${flags%*,force-passwd-change,*}" ]; then - echo "Execute passwd to force password change on first boot for \"$name\"" - sudo -E chroot '${ROOTFSDIR}' \ - /usr/bin/passwd --expire "$name" - fi - done + source_date_epoch = d.getVar("SOURCE_DATE_EPOCH", True) or "" + if source_date_epoch: + command.append("-e") + salt = hashlib.sha256("{}\n".format(source_date_epoch).encode()).hexdigest()[0:15] + password = crypt.crypt(password, "$6${}".format(salt)) + + else: + command.append("-e") + + bb.process.run(command, "{}:{}".format(entry, password).encode()) + + if "force-passwd-change" in flags: + bb.process.run([*chroot, "/usr/sbin/passwd", "--expire", entry]) + + +ROOTFS_POSTPROCESS_COMMAND += "image_postprocess_accounts" +python image_postprocess_accounts() { + image_create_groups(d) + image_create_users(d) } From patchwork Wed Jan 25 09:01:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2531 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Wed, 25 Jan 2023 10:02:36 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-lf1-f57.google.com (mail-lf1-f57.google.com [209.85.167.57]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 30P92Z4u026059 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jan 2023 10:02:35 +0100 Received: by mail-lf1-f57.google.com with SMTP id x12-20020a056512130c00b004cc7af49b05sf7857852lfu.10; Wed, 25 Jan 2023 01:02:35 -0800 (PST) ARC-Seal: i=3; a=rsa-sha256; t=1674637350; cv=pass; d=google.com; s=arc-20160816; b=ZgqK3OFpzaXTF62Bm5e5auq1tnDnOd2BkIJZ9uTOUALiHNjbF8CzB4ed+s40IKIupc N4AupDuilU0ksxXgfFAt7mY0a89es+vI76kb49AALnlLDYfVuIRIZnJNKONH6cgEr2uX LDS69En85wvCEBdFVsxAhRUzbSWU/zPIZ4gad2/BOK3OAg2s6R9eDre/n2FBVpkNrE+J nZVNdi9pVZ6YpEaLu/1szGzp8MT+korjKFu/CygFzK39doK47zXT4HMSKxo3JyjFU7Mw 9XvpQ1KJQZETjyD0EAHQxlgEv86qpoYtzH8ga7AT9pY7zEiZxBTTW1N8Wn2pxDMLckIG tnkQ== ARC-Message-Signature: i=3; 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=v5jxA9V1ZvCIK56ifZZb9SWe2E3BZaOczWi3Iaqu5tw=; b=JfDb37DpVCxC7BlfI5yhx5wRXbuEAM84oGVVjlkCR37x1Xf4phGKOL06VqldQP4pbI kdfjx1BHCf5mdJ2IeKbb6toa7ux0RlPjxfEP8gl6fIwz1X+165T9KnE2VdF/ZUDVTSER Ix1WbY5OVXueQb72Pu+/gSzbC5rkzagsNVFnhZHPETlOyHdg2IFhutKYpn7da99Jmaee sHsRoVXedvX59FTWCjeqET8+kGRIQ+/x1uSbFxB/Cdlv1ZdYw6cq1U5l9dioQeS4J8Ox Sp2yGU9uJk0K9T4QJtsK5gknuWFRnaA7XhN3Htsc5aj84OHSefFSfKzqeuYl7ADCwSP6 V0XA== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=hO3lrl7n; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=temperror (google.com: error in processing during lookup of tobias.schaffner@siemens.com: DNS error) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=v5jxA9V1ZvCIK56ifZZb9SWe2E3BZaOczWi3Iaqu5tw=; b=XHvKz8pFCRPvy/MGSDSc9kpL6V7ftdBXHdo6u1ZPaFBpI3qSTEFh2VDFySFDC0n9YE BurFZTX712aTY5Te7lO7WibWFRseZFaX5nL3a3wqpO03S9nal/MRz/TzHD8EjvL050jV jN4QXcxk3AKmrZG0Mto39ozfaelMzNh4PQrr/V/xBptyanBez9d2akh1zZosSaTFPm34 fZG54ZsqlR6AfKvSmzM0x+J+/36o0H+ifX+NEf+U5boKhY0YnxJz6S36RlguwDZ2I+V3 vRV3F1R+MLhrxojzqP1/Tp/0LaRbRxaC6NbuNbyvIfMaOQAwr01U32FwhSGIHFtFq7x9 79ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=v5jxA9V1ZvCIK56ifZZb9SWe2E3BZaOczWi3Iaqu5tw=; b=ZkdJyhzQ9Otd5wuKS9cC/ErfxfeBALp+Z8Y4uD5cTXJK9cD0qXIQ07Qf59hN56wWGE t1cp8TP9tII2vdNn1xdypSu2AMv0EAm+LXk5AxTtyn5jesxHrbCEygpNU0Zy2bnTzj6K HVCSynemBOGMDWTkSiNgpbTUHSBntOZFnYSlGCPi3e0LWC0PeLnt6ToOoYMpJcsjtCPC QENQNBOvr5W+sAql7qF+Lrmc4zJRvQXKwwY2DeYvs5ZgSbGzXNi58Izoq4eHjGC0+XIb C65KHmxhk3YnATVUfEQ/AhOMHYLE6FXSnNQbeO2btRGZt6qtHKxfqJIl0HZXVCdGHukg LMMw== Sender: isar-users@googlegroups.com X-Gm-Message-State: AFqh2kojXlJUuMywMFzK88PSeft5CP42BfWpWthtvZ5+0MNwm3drueLw 5FUsmO6XgOg7GlRxXLoYaIs= X-Google-Smtp-Source: AMrXdXuhKOYBjdoII7lmE+WAocPpJ0yeDkE/llrEhmcODKHq+NakWirMGHkUodtG7YwVOrfhNzv+1A== X-Received: by 2002:a05:651c:218:b0:28b:7993:585b with SMTP id y24-20020a05651c021800b0028b7993585bmr3106546ljn.473.1674637350028; Wed, 25 Jan 2023 01:02:30 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6512:214f:b0:4c8:8384:83f3 with SMTP id s15-20020a056512214f00b004c8838483f3ls9000565lfr.3.-pod-prod-gmail; Wed, 25 Jan 2023 01:02:28 -0800 (PST) X-Received: by 2002:a05:6512:23a6:b0:4b1:3960:4cf8 with SMTP id c38-20020a05651223a600b004b139604cf8mr10888033lfv.28.1674637348752; Wed, 25 Jan 2023 01:02:28 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1674637348; cv=pass; d=google.com; s=arc-20160816; b=ED7C+3vNnnozgGIejppPWvK5w+RO2TDsENdn/725u3K5G8ZhlQwNtLiXvKNN41Katy Ifq61K5tVkydRd8u7tIsRdzbPKGJHekM4jA/ePVkT0f9GcsmZ1G93idV1ihgKyLP+z0S hz59nt0v8zoYkoHhyVSwmSZ6vGrR7lskzYQfsAx6LoYlsVzN+iQaptIjO56s5Nx249w1 9BS0TXDPIsDgZ5FiG6CXGGjjX/DA/TpyTyEMIM1cDzN/w/OC3CjiMjR2zKgmgNaJCQ2G BXwHzXbC+u80qU7hq+wRV8+jJOHHCcxfXeAismKqr3uLB1TEFnuKUH2KDey6JkV0k6VI 1HrQ== ARC-Message-Signature: i=2; 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:dkim-signature; bh=mgzAY/E+en4yw6f6hhFTx0/23Gjo0hvE1YSTD4VEBtE=; b=SZaJeP8G5n3yNctcXVPQxwUYsBiImDXunXYsBE7OTxNEzWwrH0It1oEkf+IL2Kcogu CNsMUBgaOhgGo29GiDOtNezGM4peGj3nwFIUReZq8alMAPOBpdwLeEt8O88modh74X8Q N2X6HHAw4mNofKm6DGW2B3b5GQQW9jbLxoJCQa1zNDj4hPFe5xyc8ynLSYqF7PpU/kvr jPrqngdX+3F/UC60jFogtZTmNdzkE9AxU/9hodjyj+9MvxW32e7+ENQfE5VeCINOlU1B /k8dXyd1o5JsN+DS3ew7+jEnF3uAmaoZmPmzfz9DETo1FBCuYZCfla7JxqLgmOcvW7Z3 y6ug== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=hO3lrl7n; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=temperror (google.com: error in processing during lookup of tobias.schaffner@siemens.com: DNS error) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from EUR01-HE1-obe.outbound.protection.outlook.com ([40.107.13.82]) by gmr-mx.google.com with ESMTPS id j5-20020a05651231c500b004ce3ceb0e80si214297lfe.5.2023.01.25.01.02.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Jan 2023 01:02:24 -0800 (PST) Received-SPF: temperror (google.com: error in processing during lookup of tobias.schaffner@siemens.com: DNS error) client-ip=40.107.13.82; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZuZQYrSDP+XKwugw2M/tNg2yxIEyQOvLlvaOvi7vozUh8lysf3V6U2bWpfRafHNPd7BZWamzDNcXxmHEXstCTkYYp5ZpFQW2NAERo51pvh2DbPC6FUsjBJ+anqk1QfgYSdNW+53WYDcqKocjWU5ocyLqXT2B8CeECeEfiWesRcL/0DDgqexj2KAm6J3wkYe9hpyfNb48mSTvmljwyQE6QbeJy+UuM5ULgw5VGMACcJDbWOZqw7tM1kaYRc5m0GiYxkhHfLmDNyy6G/OaCFnekMnZ+6ElOFyg5SsSDHwQOlxbTeg3M+GyEH6Zmg6ywh7jur1j2w9TIBKH9M5QRLtfxg== 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=mgzAY/E+en4yw6f6hhFTx0/23Gjo0hvE1YSTD4VEBtE=; b=Px20CmEImsCtatA9TvNYJr014DfbLmT33vC5GlSJa3nnUgoQf4kDRI79faK6ZPAe18rJD56JJj0EHEA8nEVIZokB7yMfar/iL3/GkKsXT4+qZTwElEuGTCdwXvxGXnasN+LSmS2Iryw8PEjT/D3F8Zdx8h8K2hU8+Z1NhNqrm2BzfiScqTr1P7ioNUFzYlx9zNES6p1B2IzC7iPMpwafQ927A4ayjbkUnAsIUZpRq/fI8crGtbFA+Z2Qc4gWHWCk3FJsncIhfcQd0gfRjqOYpCACNVAEDBGa5qv4Dfkw59qAlrBiwQ0eGDFrEa/5LLLe3LH/dgbrUn+l1Km3nVfvYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.74) smtp.rcpttodomain=googlegroups.com smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from AM0PR04CA0120.eurprd04.prod.outlook.com (2603:10a6:208:55::25) by PAVPR10MB6911.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:326::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33; Wed, 25 Jan 2023 09:02:18 +0000 Received: from VE1EUR01FT082.eop-EUR01.prod.protection.outlook.com (2603:10a6:208:55:cafe::b5) by AM0PR04CA0120.outlook.office365.com (2603:10a6:208:55::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33 via Frontend Transport; Wed, 25 Jan 2023 09:02:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.74) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; Received-SPF: Pass (protection.outlook.com: domain of siemens.com designates 194.138.21.74 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.74; helo=hybrid.siemens.com; pr=C Received: from hybrid.siemens.com (194.138.21.74) by VE1EUR01FT082.mail.protection.outlook.com (10.152.3.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.17 via Frontend Transport; Wed, 25 Jan 2023 09:02:17 +0000 Received: from DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) by DEMCHDC8VQA.ad011.siemens.net (194.138.21.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:16 +0100 Received: from L15-Gen2.fritz.box (139.21.146.184) by DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:16 +0100 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 2/5] allow creation of users/groups before rootfs creation Date: Wed, 25 Jan 2023 10:01:53 +0100 Message-ID: <20230125090156.284309-3-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230125090156.284309-1-tobias.schaffner@siemens.com> References: <20230125090156.284309-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.21.146.184] X-ClientProxiedBy: DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) To DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1EUR01FT082:EE_|PAVPR10MB6911:EE_ X-MS-Office365-Filtering-Correlation-Id: 8d7ce091-8306-4fd0-f88b-08dafeb2dc2c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 20zJyoAO5uitXV2JmdW6tu93ZgOnXF4q5eLgo5Zek7OuN/YEIzxMO62IBR5PErLFibH1KndeSZjlpb1Av56PMqFdx7DiCZ0jtBGfe4oJ2iC019Mgop++GOuRJ5xsBv2MMsk4Ui/bwCi1+D0EK27amnv4NIewVvRv2hx5tgKT9s8VL7cR2Ykmh14mjPD5ltC2DxNURXu9EZlgd18Iu+oMUpiVGzMuLHOZrIyV258IMeNGtp7SEZFvW/rapOkF1nnaF37z70KKVUFZQW22TFO2kLEVAzVIuRebrW+vscwD3QQ6xp9FwF53kCrNKiaZ7V12LLZUIaWiW9A3wvXEpRDbooh4nzRzHOMC2uQ6EwJ67gxGPH6j8o5m9INnAF8PLkfcxvpNftiW005pqWeKdiWnWozVNZvU/JkLYv3dul4zcOnVoY6BO4tjLWI8ODDDmq3C51mr4otRFGIIo1/jwANv7UXpYWc0i2PJ7cJCKbr79ytzzlZHQV174ZZZMRppQRaAXulLTiHSg62HSNpe7GJVMoY4648IqBsZQCajo/HgWyuPYaj61XhfN5bVtMq9yDj9C/xiliDInEpRjA3Oza+Qpbc+179CUmiYhwsjciuFyx1CROUEcYq+eMERJ26tRGTh7td7SexvJk93uQQf5PFt59M9JdnEIcyc8yKM30DmgNWdmrKUy+xKA11KNL7Dv4DdrTRkMfnpRgBFwpuBg/3m4g== X-Forefront-Antispam-Report: CIP:194.138.21.74;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:hybrid.siemens.com;CAT:NONE;SFS:(13230025)(4636009)(396003)(346002)(39860400002)(376002)(136003)(451199018)(36840700001)(40470700004)(46966006)(5660300002)(478600001)(82740400003)(6666004)(86362001)(107886003)(2616005)(47076005)(356005)(956004)(83380400001)(82310400005)(41300700001)(336012)(16526019)(26005)(36860700001)(2906002)(1076003)(186003)(7596003)(7636003)(40460700003)(4326008)(70206006)(40480700001)(36756003)(8676002)(6916009)(54906003)(82960400001)(70586007)(316002)(8936002);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2023 09:02:17.5898 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8d7ce091-8306-4fd0-f88b-08dafeb2dc2c X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a;Ip=[194.138.21.74];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT082.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR10MB6911 X-Original-Sender: tobias.schaffner@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=hO3lrl7n; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=temperror (google.com: error in processing during lookup of tobias.schaffner@siemens.com: DNS error) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Tobias Schaffner Allow the user to specify that a user or group should be created before rootfs creation instead of in the postprocessing step. If a user or group is tagged with `USER_x[pre] = "true"` it will be created in the rootfs configuration step instead. Signed-off-by: Tobias Schaffner --- doc/user_manual.md | 2 ++ meta/classes/image-account-extension.bbclass | 25 ++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/doc/user_manual.md b/doc/user_manual.md index ec639e7..1d209b3 100644 --- a/doc/user_manual.md +++ b/doc/user_manual.md @@ -661,6 +661,7 @@ The `GROUP_` variable contains the settings of a group named `groupna - `gid` - The numeric group id. - `flags` - A list of additional flags of the group. Those are the currently recognized flags: - `system` - The group is created using the `--system` parameter. + - `pre` - Creates the group in the rootfs configuration instead of the postprocessing step if set to `true`. The `USERS` and `USER_` variable works similar to the `GROUPS` and `GROUP_` variable. The difference are the accepted flags of the `USER_` variable. It accepts the following flags: @@ -680,6 +681,7 @@ The `USERS` and `USER_` variable works similar to the `GROUPS` and `GR - `allow-empty-password` - Even if the `password` flag is empty, it will still be set. This results in a login without password. - `clear-text-password` - The `password` flag of the given user contains a clear-text password and not an encrypted version of it. - `force-passwd-change` - Force the user to change to password on first login. + - `pre` - Creates the user in the rootfs configuration instead of the postprocessing step if set to `true`. #### Home directory contents prefilling diff --git a/meta/classes/image-account-extension.bbclass b/meta/classes/image-account-extension.bbclass index 127732a..c0f2269 100644 --- a/meta/classes/image-account-extension.bbclass +++ b/meta/classes/image-account-extension.bbclass @@ -18,19 +18,23 @@ USERS ??= "" #USER_root[shell] = "/bin/sh" #USER_root[groups] = "audio video" #USER_root[flags] = "no-create-home create-home system allow-empty-password clear-text-password force-passwd-change" +#USER_root[pre] = "" GROUPS ??= "" #GROUPS += "root" #GROUP_root[gid] = "" #GROUP_root[flags] = "system" +#GROUP_root[pre] = "" -def image_create_groups(d: "DataSmart") -> None: +def image_create_groups(d: "DataSmart", pre: bool = False) -> None: """Creates the groups defined in the ``GROUPS`` bitbake variable. Args: d (DataSmart): The bitbake datastore. + pre (bool): Creates only the entries tagged with GROUP_x[pre] = "true" if True or all others + if set to False (default). Returns: None @@ -43,6 +47,10 @@ def image_create_groups(d: "DataSmart") -> None: args = [] group_entry = "GROUP_{}".format(entry) + pre_flag = (d.getVarFlag(group_entry, "pre", True) or "") == "true" + if pre_flag != pre: + continue + with open("{}/etc/group".format(rootfsdir), "r") as group_file: exists = any(line.startswith("{}:".format(entry)) for line in group_file) @@ -62,11 +70,13 @@ def image_create_groups(d: "DataSmart") -> None: bb.process.run([*chroot, "/usr/sbin/groupadd", *args, entry]) -def image_create_users(d: "DataSmart") -> None: +def image_create_users(d: "DataSmart", pre: bool = False) -> None: """Creates the users defined in the ``USERS`` bitbake variable. Args: d (DataSmart): The bitbake datastore. + pre (bool): Creates only the entries tagged with USER_x[pre] = "true" if True or all others + if set to False (default). Returns: None @@ -82,6 +92,10 @@ def image_create_users(d: "DataSmart") -> None: args = [] user_entry = "USER_{}".format(entry) + pre_flag = (d.getVarFlag(user_entry, "pre", True) or "") == "true" + if pre_flag != pre: + continue + with open("{}/etc/passwd".format(rootfsdir), "r") as passwd_file: exists = any(line.startswith("{}:".format(entry)) for line in passwd_file) @@ -148,6 +162,13 @@ def image_create_users(d: "DataSmart") -> None: bb.process.run([*chroot, "/usr/sbin/passwd", "--expire", entry]) +ROOTFS_CONFIGURE_COMMAND += "image_configure_accounts" +image_configure_accounts[weight] = "3" +python image_configure_accounts() { + image_create_groups(d, True) + image_create_users(d, True) +} + ROOTFS_POSTPROCESS_COMMAND += "image_postprocess_accounts" python image_postprocess_accounts() { image_create_groups(d) From patchwork Wed Jan 25 09:01:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2533 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Wed, 25 Jan 2023 10:02:36 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-ed1-f57.google.com (mail-ed1-f57.google.com [209.85.208.57]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 30P92as5026065 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jan 2023 10:02:36 +0100 Received: by mail-ed1-f57.google.com with SMTP id z18-20020a05640235d200b0049d84165065sf12543419edc.18; Wed, 25 Jan 2023 01:02:36 -0800 (PST) ARC-Seal: i=3; a=rsa-sha256; t=1674637350; cv=pass; d=google.com; s=arc-20160816; b=pGPs/O0iUfJIkHpcVZMYZPmiEN8+cgZ+WX31tzwCC7P9QeqxfdT+bTrViUdjGcGlU0 vnJabITubg9g7OhQgf83eBzzmXTL2U37A5N3sab47NqxuSsYnPQyg+TYltxH9S09Ppy+ HakpkEMbWk0OKb5WiiI3huvtlvy9V8YhT0Jt2Gao3T0U1ZQbWxG4IFtfOLv9RkNvNg6q yldkjhum7z/F1eUaMlygClGlAquPo9nzikHtxYL7jCGU/SSTJ1ouVV2wWTjcVkiqOHqm nHd5Ui7Z257XdkJoAD7F5ZebpNXLMK/Wo6CaB3omWZMjFyLZ/YpXyizl68UkEVXCVUTU nSvg== ARC-Message-Signature: i=3; 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=WGUVXVJqnJg78fi/tTReP8XvnR04GE7e/9eUnCef4GY=; b=Gc31q2EU3BQUy2hKJX7wjaVVCv4TbL4f4O7dBjQGKgwvFFTcg4orSEobG6TkJtkSP9 7eGeFFVO2NtGFS2LHt1WixHMNUVhgR9+nS8pvu16hsMDP5PySIfB3pzzlZdrLwWHo6Xf rSFeOClkEf2sAHmwVEwD+fW36+XnfxkwMD4Xiz/5DOOL8b3hi/H1h8eek3fdqj6gkcTP jAQF2oZ86i1dGyx2o5loWF9FTVhgq5SzVPA2YQWzIP8oMO6KIRR4RtLE8kcdBGbqtrJH SNWX2uKUhIUsMH9Rnf1N6OLdqrgbwStQHj7x4Tln3nP8H3cO/laP/apXAnqcgYB5a0s8 oHHQ== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=SRGxhRG5; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.13.74 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=WGUVXVJqnJg78fi/tTReP8XvnR04GE7e/9eUnCef4GY=; b=NjQ0BpGb6dlLkfTlP3C/wPBHfWSdvXJK2rLEsbQPoBDp00+TNWNdx69dRxx+klhrqL KYqs2dwGrWC8ZV6wTD9FJmvoMiI/WsLoHN0w878TEsmLmIAA/KsRteoO6v9YIX21Kiqg mEC8Uni+Fb1BhnMXAseOsLCnhN/6sf+17kz94zDmBl7UjRiDXxKKTBnu9xPKaI7nyWrm dj4s3BjJGgCZ91ENTM4S7FA0VvUSDqNAmM7mHBaz2IrrU1dV0SedV0GVnm4isNs1BiH4 Bmg+AwOfFqvWLJdz0Xm5jlTRJcyM7pX4WW78xRhGvlvgKkO2XN5NftpZSkfR4j7uxgyi CB3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=WGUVXVJqnJg78fi/tTReP8XvnR04GE7e/9eUnCef4GY=; b=jxeAElf0BBzybaYFEJlKJfdSQ/x72K2hij6Z6gMqljjOm72saEnGnkC/DLapJGesaQ FZ/aBsu9Wf9mfWoB9bm9Zo6JoE/eDZv7VWuz4iUESuKGtRbqlCaZkGnmlMj4en6JN3cN djhPpvUuoxPiXK1J5+rkO6txaQ7xnxZAgehbqhhieI+HrUEbUX3r2bgsFj1EarW/8nyW ZA83T3U/ckqQDmIcMxu/RmGDLJZx0+WvgAKzjIponzBYZ7PHX4m0w4FOI7czlMtKOtRR QrgzvvI8JX3lUOoZF56ovIhiMmg/QTsBislfz2slY9C1uCIyrbFNlpoTOduMCUOGpv7A rrAg== Sender: isar-users@googlegroups.com X-Gm-Message-State: AFqh2kpPRGEk1oVFmF42BVXjCt++JnY4yMsZfKg4HFmtDAF5KaLSFbZc QWBD1QQtxxlbEdNK2RZSyRI= X-Google-Smtp-Source: AMrXdXvszoRt0C/Jl5yx1FY5HgW5MyTqsyX6E3mrELW7vgfrRmpbKRMvYNE5SG50cxUY2ajwRUlzIw== X-Received: by 2002:aa7:dbc1:0:b0:49e:1e:14b1 with SMTP id v1-20020aa7dbc1000000b0049e001e14b1mr3905348edt.6.1674637350769; Wed, 25 Jan 2023 01:02:30 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6402:270a:b0:49e:5b8c:71c4 with SMTP id y10-20020a056402270a00b0049e5b8c71c4ls3042010edd.3.-pod-prod-gmail; Wed, 25 Jan 2023 01:02:29 -0800 (PST) X-Received: by 2002:aa7:db4c:0:b0:49f:28ff:124e with SMTP id n12-20020aa7db4c000000b0049f28ff124emr6848304edt.35.1674637349823; Wed, 25 Jan 2023 01:02:29 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1674637349; cv=pass; d=google.com; s=arc-20160816; b=OHg6g8r9szY2eDW5dFHEksFP8wd+qjHA/m0dZE3TNY/z0yGXlRbkoazFlXEdT2MOMk GFEaVwQki+xOQdZMRiDCsVTqxg7+D0wLU8JXEV1KnyG2L5g0CSyX36aa3th7JZc4NpPL +YQd+fHysyYjXxRqcx6A0D+CdqDyL/FBCri+3rTh6nd2bZ+Rg5UOxqnrzOBBhT5ZQJLN CeKVsSAx9QgFB3mrpyYlurv2f6XiTCVWkhlUcGW+fuffMI6s+SKorat//SQWs9qcmkQ3 nqSF1I6cg6WNal0BhEHt9caBOuF0YTGnKB33bCNiGT5RQyN9IU19FKj4Ln6TZ1pyBsaC hn0A== ARC-Message-Signature: i=2; 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:dkim-signature; bh=iB4lqI/m9fzy0bIh2qGVzX6wNMf25pqvc/tjFz+DjPM=; b=F842/Sc/Cz33NwRRP12Vl5DoYG+g+rF2PYUI7DXhXcs0y/4G7oz7TFchU14o77jik+ 4M1BWdzBBULRgoklBqfTdxjmjRm+zQeLZ/rVXfeo4vc9vcWd2EcYb80kqb2K+3p+YvOb ek1ukJyKXyWLeWPDlvhh9XtfHyy3/Yzv1/0I7AFofyXlCrnHr9KI+eRB4Y88A8gSzOyT 4BOOzKSp4cD9r3f40xcMTtHkiTnvlqk1CkXFHshVZjfqCW6C1cZiXfCvleou5lJqAJpY fU8OkXNOaHDko5HoI6lI1wQLKcMgMViMLPwqmLuVPZzLPs2i60GJvotakU612pEvQCsX LZ1A== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=SRGxhRG5; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.13.74 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2074.outbound.protection.outlook.com. [40.107.13.74]) by gmr-mx.google.com with ESMTPS id d28-20020a056402401c00b0049ecd39787fsi229683eda.5.2023.01.25.01.02.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Jan 2023 01:02:29 -0800 (PST) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.13.74 as permitted sender) client-ip=40.107.13.74; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=doB0puJoAfzAJ/hfI9Jkb30FtQVFQ1LoaTmnE6xUQfcR9zw+btMKsWkPcQSkRhgPgskQTAw33nM4MIwmPibUTc+RcumHtC4G14Asx4OY1FuCbxgvNGiUNNXqVdUPf5psLbexT8ae/sX2vUYvTdaUudbH8ooRVVKLzeOyGHEolVdkq0Smxfve+n9VEpRtELoErCiaMfEYfyUpSMEaj0ahvuwPVjGcYrMrDgQz3Zd9gja/bDC+eoV6dRzeF33lRW4C6cCNFQYoLZS5NPdreEyAR1d0IjoaO03uBxGn/9sqBcP2xZSdBUlkCPigkbn9l18QhWcLDCDEmReJpkCO6bI5uw== 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=iB4lqI/m9fzy0bIh2qGVzX6wNMf25pqvc/tjFz+DjPM=; b=TEbiKPdMxyIW8LKcq46gj4oOfZS4JSDKjHo23B0fbupTyToH20+PoOzJ2PmkrDud4cA1DNQcEMJq95BbgNSqSannp5L9cY6HH0kZax8aSh8LZsAgw4Hwrhpu0pdxsoqwCDbbIkByg9qxkT/ke39Fu7aTF31uDRhKx9uPX01ILyY0qQKbVa9Kqfzjxaka2QWGAWhJNW5ykqo+wArZ3Sa7atyjAGTyTjWktderSzyRXqSIHgg5522NFckZOANC9A9M0k/hY2I+x37eSmtiC+w+Ntz5U95eCjI31Fh4X2weHqIHpbRZH9X+hr7iGKRNvzDHLM5f13YDKSmW4oQwNrexYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.75) smtp.rcpttodomain=googlegroups.com smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from ZR2P278CA0050.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:53::10) by PA4PR10MB5587.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:261::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33; Wed, 25 Jan 2023 09:02:28 +0000 Received: from VE1EUR01FT015.eop-EUR01.prod.protection.outlook.com (2603:10a6:910:53:cafe::6a) by ZR2P278CA0050.outlook.office365.com (2603:10a6:910:53::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33 via Frontend Transport; Wed, 25 Jan 2023 09:02:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.75) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; Received-SPF: Pass (protection.outlook.com: domain of siemens.com designates 194.138.21.75 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.75; helo=hybrid.siemens.com; pr=C Received: from hybrid.siemens.com (194.138.21.75) by VE1EUR01FT015.mail.protection.outlook.com (10.152.2.237) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.17 via Frontend Transport; Wed, 25 Jan 2023 09:02:27 +0000 Received: from DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) by DEMCHDC8VRA.ad011.siemens.net (194.138.21.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:25 +0100 Received: from L15-Gen2.fritz.box (139.21.146.184) by DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:25 +0100 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 3/5] create a minimal python unittest infrastructure Date: Wed, 25 Jan 2023 10:01:54 +0100 Message-ID: <20230125090156.284309-4-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230125090156.284309-1-tobias.schaffner@siemens.com> References: <20230125090156.284309-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.21.146.184] X-ClientProxiedBy: DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) To DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1EUR01FT015:EE_|PA4PR10MB5587:EE_ X-MS-Office365-Filtering-Correlation-Id: f9362258-e865-4e5f-d355-08dafeb2e1e6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jZ8WVhXwa69cmTLlh8B5TVfDyjNBs9uish5Y2bdPixthCUaBc1QSJ4BsMuQJMARQ7wUaQ/61JvU9nnIfc0rdfiFNGKe59FHVgfMy9dmqOfOBfSZgkpN3iIa3EnA3u6GSL8TIem0w2tjpOoFaKfHObQiAa2/i5rj5eloMEJ5E38h066fpZecmAc/vJ4GgS/F+JQ1itAzYoJQVoRNKb4skEG4MYl5uJKg5Mf8MLkjBfA7d1mwPr0fAOjPV18zGTZ6mqBs6SPxLbfB3BroBbaIcaa/ErOR/FtRvSeXIuhRFldh1QzTVr6+X8caF8dFrFq7nlWDyg5+cZNowIFUakmyw3zHfg5nXMlUXmLt9VfGCTC1Pu0puZZzw2UWfFCsushMKBV3/5Xij4wQ7uvP15Z68mjaYW2/GacUHBvJzi87DXw2p+XEkJSIzct/ppjAm6I7TWod+Pe9j68/Z8XZhf11KoWR17qiGs9z/XyUtcl+30lWNdzYc1ME8vygm/j0Q2oZj8eeIbnyVVbuCRBN0PB5xxBsX1eQpza8FWMhvuDAU08czMRQG5QQ09JGO8NMMex2lBaNpFIM5J0vE+NWBDTzKy9wOueZhXQBFnQ76h6N7XmJxd4FX/cwy1Idxpx+DWdP04a1yacg/BNW5bqJYzNorLivg9+zkUU+bwU2tdiK4PLVkflsbzYs5EUyFeE9bmQtOQDXJQZ3a9aJS5B823vrd0yT5TeGbdOyPEirj/TNQ+kyoruxrZmw2hkjs2rU46GenpAzAKC4dm0zIU1WQBf93qKDnfqn0mlCbfkhHBiqyQ9z+PkiPQ0kh8NGvbF9qlWvG X-Forefront-Antispam-Report: CIP:194.138.21.75;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(346002)(396003)(136003)(376002)(451199018)(36840700001)(46966006)(40470700004)(1076003)(82310400005)(316002)(40460700003)(336012)(40480700001)(86362001)(36756003)(54906003)(81166007)(8936002)(70206006)(82740400003)(82960400001)(36860700001)(5660300002)(41300700001)(47076005)(2906002)(70586007)(478600001)(107886003)(16526019)(26005)(356005)(8676002)(4326008)(6666004)(2616005)(186003)(956004)(6916009)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2023 09:02:27.1950 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f9362258-e865-4e5f-d355-08dafeb2e1e6 X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a;Ip=[194.138.21.75];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT015.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR10MB5587 X-Original-Sender: tobias.schaffner@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=SRGxhRG5; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.13.74 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Tobias Schaffner Add some some infrastructure for python unittesting. The unittest_isar module exposes a function that uses the bb.parse module to import python functions that are defined in bitbake files. Signed-off-by: Tobias Schaffner --- testsuite/unittests/README.md | 28 +++++++++++++++++++++ testsuite/unittests/bitbake.py | 37 ++++++++++++++++++++++++++++ testsuite/unittests/rootfs.py | 45 ++++++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 testsuite/unittests/README.md create mode 100644 testsuite/unittests/bitbake.py create mode 100644 testsuite/unittests/rootfs.py diff --git a/testsuite/unittests/README.md b/testsuite/unittests/README.md new file mode 100644 index 0000000..75a3bb0 --- /dev/null +++ b/testsuite/unittests/README.md @@ -0,0 +1,28 @@ +# Isar Unittests + +The unittest python module adds some simple infrastructure that allows to +unittest python functions defined in bitbake files. + +## Running the tests + +You can run the tests using avocado with `avocado --show=app,test run testsuite/unittests/` +or by using the buildin module with `python3 -m unittest discover testsuite/unittests/` + +## Creating new tests + +See the [unittest documentation](https://docs.python.org/3/library/unittest.html) +on how to create a test module and name it test_*bitbake_module_name*.py + +Use the function `load_function(file_name: str, function_name: str) -> Callable` +in the bitbake module to load the function. + +Example: +```python +from bitbake import load_function + +my_function = load_function("meta/classes/my_module.bbclass", "my_function") +my_function(arg1, arg2) +``` + +Use the [unittest.mock](https://docs.python.org/3/library/unittest.mock.html) +library to mock the bb modules as needed. diff --git a/testsuite/unittests/bitbake.py b/testsuite/unittests/bitbake.py new file mode 100644 index 0000000..1e2f685 --- /dev/null +++ b/testsuite/unittests/bitbake.py @@ -0,0 +1,37 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2023 +# +# SPDX-License-Identifier: MIT + +import sys +import pathlib +from typing import Callable + +location = pathlib.Path(__file__).parent.resolve() +sys.path.insert(0, "{}/../../bitbake/lib".format(location)) + +from bb.parse import handle +from bb.data import init + +# Modules added for reimport from testfiles +from bb.data_smart import DataSmart + + +def load_function(file_name: str, function_name: str) -> Callable: + """Load a python function defined in a bitbake file. + + Args: + file_name (str): The path to the file e.g. `meta/classes/my_special.bbclass`. + function_name (str): The name of the python function without braces e.g. `my_special_function` + + Returns: + Callable: The loaded function. + """ + d = init() + parse = handle("{}/../../{}".format(location, file_name), d) + if function_name not in parse: + raise KeyError("Function {} does not exist in {}".format( + function_name, file_name)) + namespace = {} + exec(parse[function_name], namespace) + return namespace[function_name] diff --git a/testsuite/unittests/rootfs.py b/testsuite/unittests/rootfs.py new file mode 100644 index 0000000..6c51149 --- /dev/null +++ b/testsuite/unittests/rootfs.py @@ -0,0 +1,45 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2023 +# +# SPDX-License-Identifier: MIT + +import tempfile +import pathlib +import shutil +import atexit + +temp_dirs = [] + + +class TemporaryRootfs: + """ A temporary rootfs folder that will be removed after the testrun. """ + + def __init__(self): + self._rootfs_path = tempfile.mkdtemp() + temp_dirs.append(self._rootfs_path) + + def path(self) -> str: + return self._rootfs_path + + def create_file(self, path: str, content: str) -> None: + """ Create a file with the given content. + + Args: + path (str): The path to the file e.g. `/etc/hostname`. + content (str): The content of the file e.g. `my_special_host` + + Returns: + None + """ + pathlib.Path(self._rootfs_path + + path).parent.mkdir(parents=True, exist_ok=True) + with open(self._rootfs_path + path, 'w') as file: + file.write(content) + + +def cleanup(): + for temp_dir in temp_dirs: + shutil.rmtree(temp_dir) + + +atexit.register(cleanup) From patchwork Wed Jan 25 09:01:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2530 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Wed, 25 Jan 2023 10:02:35 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-ed1-f60.google.com (mail-ed1-f60.google.com [209.85.208.60]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 30P92ZfT026056 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jan 2023 10:02:35 +0100 Received: by mail-ed1-f60.google.com with SMTP id m12-20020a056402430c00b0049e4ac58509sf12508327edc.16; Wed, 25 Jan 2023 01:02:35 -0800 (PST) ARC-Seal: i=3; a=rsa-sha256; t=1674637350; cv=pass; d=google.com; s=arc-20160816; b=BvpUfyxOgL2Shrk4OeMDBZ1MFDWj994rarTWQZAGkhYzOB8O3f+PoyBnaixtdDCtg5 viC6M1VmlPmf5EfjRyZ5WAA9hyZA6x5whQlZpKW+i3UNkUPc8xUxAk0H9kylsrP3CDM5 IE2gAeWSyvzHgP0sQVP947JRODhf7rX4lLhk0gNYT+nCExCoHmo8Zl08FNBv+HfWuNQs yJp2PxA0TifZ6+GpYMZUioMX/BDimObuKnoI8B8uvTjfzHFQp5k54jh+O9tS9j+pE1av deG1HPAsP2KqKHzud9F4LN20HgzUQukWzwoEEYeMVAMa3GVjaVqeGsj2/67EHpsnAxWE a/jQ== ARC-Message-Signature: i=3; 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=j4a5HsY7f2z+BhF+Cb3ooA9PLv/8R9CJpirZrCEMubA=; b=XwopxMG16pu5MgXfaNawfVdoSxWEeiwa68Q5SDjZqIoKWz9xCBA9hwky1LZCB1BMmi /arAWzFmERUa0WBmIq8ZZjY6EuR6Z5lkZXPkwv1Iadz97tVqOtC/xetQHb79S32LV0ML IwkLGtU9FkNC6AaTtxIfFYyP96pYHXeEMRJhIwmoa/Ujjbp72hIZqebYvw40x2Y+1twY y+XcXkMSYPCYIhpLe6IAsi835dICxZ2EJhsuMeAAnX6cz1ZH6RHseQx4709y7ka7sAFF emx8VsIO5fK9LFOLIJUfHa5kUtCCFzSE5azFCw3PRHbwWem0pVo018C/RJ5cA6ttNvn6 bdWA== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=KKcTEGbD; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.6.79 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=j4a5HsY7f2z+BhF+Cb3ooA9PLv/8R9CJpirZrCEMubA=; b=qx/bPMJ4x5d3p+8xvxhb7CDBc5WMw9MaYybmyiqfzKSoJKn3pSmkOVmGmY2FtoWNmc BS8fZ1+gfcYsVefU5qnmDUdgxtcuqYn20hBVhuVdBVJCVnRYdgSIk6U1YrQnnipuH49C 7FjMxT759Cdhq4ZxQEE+Fuw5edVF09t8nC1S1xUgxEjZlWqYbaqeoMBPgMgbCFBTVUMA lIndZKF3xpYg7yRXalO4Ht981tHiz5J69m9x77f71nzr9xVO8r6HV4uYEuvSt8a/k4bg SGbQVAh/os7dG0b5V0uW87UvP+U7tltSAwEq8KIG4xTGk7I/mxoL5ANeab/sAAM7Rwt6 c4uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=j4a5HsY7f2z+BhF+Cb3ooA9PLv/8R9CJpirZrCEMubA=; b=l79ohuR87oL63gZsLRdcmBou9PfdLNTGDvHIN+0t4bUT3vUhRh1FxeJrrmt3ddlXKE xEZ4TWumdpk/pVkxfDQITFHuN7RrAP/fw+36W8maowIWcR11Sl+eyRl7NWuSB4/Zhrow Uw7WO9wpfSa2Nb0lKrBtOQtrPRUR9ffGWCvkrwom4einhG6HKfuUgtK6NEeM6syo+bZM oiynSAquqJWbxS/wQcepB6YxV1WjEyDZFjfVtvDkmGu+v3FtpuFUYIl7dkulzScDsBnR WldQTNftY9M0pwu9+q8IAwP+4sP9M2npzXL2ehxmxap11rIgXMjTqs5HVeI8bWLmKcv+ KrCA== Sender: isar-users@googlegroups.com X-Gm-Message-State: AFqh2kqN0aE+vEkPjiEaC3/Hd4/5c/xMGNO/CXesCGxtej8N3bqLS8tI d7x049/UN+eXxZB7Xe/LwD4= X-Google-Smtp-Source: AMrXdXtHchiAxJ5cGySGHaWyHyXcp18GKFI88KrNLFEDBziDrVYPAH8XEdpj0cZ9j2miaIZIhg8eIg== X-Received: by 2002:a05:6402:2998:b0:46f:a73d:6bd7 with SMTP id eq24-20020a056402299800b0046fa73d6bd7mr4981669edb.93.1674637350119; Wed, 25 Jan 2023 01:02:30 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6402:270a:b0:49e:5b8c:71c4 with SMTP id y10-20020a056402270a00b0049e5b8c71c4ls3041969edd.3.-pod-prod-gmail; Wed, 25 Jan 2023 01:02:29 -0800 (PST) X-Received: by 2002:aa7:cc98:0:b0:486:ecd3:15f8 with SMTP id p24-20020aa7cc98000000b00486ecd315f8mr31565283edt.6.1674637349004; Wed, 25 Jan 2023 01:02:29 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1674637348; cv=pass; d=google.com; s=arc-20160816; b=v2wyQvvgaoZYoXkemspViV7HbByxbNWfYgiGcFbWF7JSO/j9PqlwI57R+kVQ5JfTLz P7teGLYvCqMNHXbnq7Vc1umy/8rpWLc+PGxXC+lAWAI/K05nNve3jhywDlo7qpasyoJd DzKG/gOjgTTJGrm3UsV0RbwwfShdSyKDIJDmuZdfxP1A5e32m36yyVAjuaT/7Gh9oH1O EjstUroq8qNH1PcFvR8tTCt6dplK3/4O3RMo2SnkboAztQIzczoEZtVCKAY3gsKM4jyw VLjNMkPQOxHqsDJQb4Q1f7f8GFLJ9EjUqjP2918goENkhN5LZZnPHlYwhgjnU2RbowGW yRWA== ARC-Message-Signature: i=2; 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:dkim-signature; bh=VX6SmAt5yUemBBxovjDjoKBtRqbWALt82gZOIkEbGes=; b=es8GM7lUC20nLXtGM4UyWFSWbJPEzOVsy2FFAW/AaG+V5Li3jrypdZezDSLTO9uq0D EwYetleLZszLIiNRfyDcGCQx705WMiZNMam5gRI7K03Yy8qmdOZ4xiBzvRIqyr5XCaFu uVv/jFm1AcF8bDLq8YRoK4c7DbUiw8msfppLNESRs6lTXcRMUIl2UERpocq5ryc1PnX4 d4dTH9LBxAxspscGdiHksmET1vVkAvzicVV7k4BDUPLYppJcy8M+UgcxUCPdCs7I1iVP wIddrgMBoLSDwZCurhE6EUeSp80L4yBvxH2sJl2oyrfr4ladeETuUDVa6Q5Y0aF6BRVw C+AA== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=KKcTEGbD; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.6.79 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2079.outbound.protection.outlook.com. [40.107.6.79]) by gmr-mx.google.com with ESMTPS id u25-20020a056402065900b0045a1a4ee8d3si249963edx.0.2023.01.25.01.02.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Jan 2023 01:02:28 -0800 (PST) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.6.79 as permitted sender) client-ip=40.107.6.79; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kPK28i1TqCwmZdFihJXB5mL5pdS2vqBYR3dwRqReOIx2RITPzdoHVFWYhXQn4vQWMEFyw9OCBhv8R2Q4pb06DcKwhlk7royYxAkOtgudI8WQyE6h2yjdmci2vBvPE+r20QH753sgg54Gg7K8dsrjT8jlDsTx3j/Z/YteTakvhmxraRrLOaokIo+aAZ6LsxLfWm+O81PCl2bZlPTExL8v8Gk//SddsIjAXVGRQ4BfMoJ2A3MvfjYEFGEW6CqeP2H38XRd9X0M0sMlVHX63BjmQp/ru/CgNBClCkh6MEbOIzlaDJ0ZtHZK7dlwdk6/ABSYVUTMOxfDPNjnYDaWN/D5Cg== 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=VX6SmAt5yUemBBxovjDjoKBtRqbWALt82gZOIkEbGes=; b=YYfUfbsFRJnA6/h1fVrE7bThFkbCFI7FphmPR5ZXOkr4JywieGdsPLStI2XCgwpRb6u14K1mh9EGBTNTu8EIoyQnLNjq/oyEX6MCCwnUODbfNxUMzC9+N2wsZNJ2PbggRUubzrZinKT+YYRFjlzkuMp3SFTdfQTrQOGYlxaeX3GcBLc+vw+DDvdHNVrbAN94DQeQEPBz4XjwO3xC9saRRpSHkO8JlT2eysLnnI7g9vMB+eyUM+1nrlV7mMBRzXyp1NBqb/imeZ7m5gTqpoEviWXGLeaee0/sf7Kv8MpOOeN4fb330TCiK8+ZRnnZ0unixey6P831R0i/dbzl1rC9vQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.74) smtp.rcpttodomain=googlegroups.com smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from AM5PR0601CA0029.eurprd06.prod.outlook.com (2603:10a6:203:68::15) by DB9PR10MB5762.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:2ed::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33; Wed, 25 Jan 2023 09:02:27 +0000 Received: from VE1EUR01FT011.eop-EUR01.prod.protection.outlook.com (2603:10a6:203:68:cafe::54) by AM5PR0601CA0029.outlook.office365.com (2603:10a6:203:68::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33 via Frontend Transport; Wed, 25 Jan 2023 09:02:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.74) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; Received-SPF: Pass (protection.outlook.com: domain of siemens.com designates 194.138.21.74 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.74; helo=hybrid.siemens.com; pr=C Received: from hybrid.siemens.com (194.138.21.74) by VE1EUR01FT011.mail.protection.outlook.com (10.152.2.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.17 via Frontend Transport; Wed, 25 Jan 2023 09:02:27 +0000 Received: from DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) by DEMCHDC8VQA.ad011.siemens.net (194.138.21.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:26 +0100 Received: from L15-Gen2.fritz.box (139.21.146.184) by DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:25 +0100 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 4/5] add unittests for the image-account-extension Date: Wed, 25 Jan 2023 10:01:55 +0100 Message-ID: <20230125090156.284309-5-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230125090156.284309-1-tobias.schaffner@siemens.com> References: <20230125090156.284309-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.21.146.184] X-ClientProxiedBy: DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) To DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1EUR01FT011:EE_|DB9PR10MB5762:EE_ X-MS-Office365-Filtering-Correlation-Id: 7ffdc206-10d7-4665-ce30-08dafeb2e1db X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: x8xHEEJ2v5DAU5TvrBOV1CBeSqrts4nxXrnztCNq+HiVGPIypegphbVCBakZkZsAQSOWo67f4BB5lcNSuDTCZ2YMuwciN5t/zfM0MA2QU2QxqvuG1ENcwV/xWVQTOQCuvs0HGGRJqnTK2tJ8x9ZmAZ+AglNcFf04i3Cdudfs79NMY8sI4WhEBr9rzGA74tKT4Jilxm1cU2VvyxvmkT83+U2q4GYeFicd7qLRnOlj9U5CXIM6D8gGG40tInFoX7iDMktDKu5MZywZv3BNzkwajV69tbVGI+HBK3E+49xXwO86I/BSikv+tsYQdGnEEfRcMEX2O7a5cz2t4qffL4O6wf3Ws/GAnf/nPQVQIMXkurv/ihlqqFdvL9XDOupTWPF+JWedlmkYvx+cxdkvpL6aIzWWSRPAcd2qWYnccSdue0Y0R8zq/LVhHwxieaoYho35D0LXXAGscFEq4theZYqxLudE8a3WouWNYU89Wn5urFsBrI324L8X9KwI3crg5LwSgtFOC7yv/46rx6HZbfZdKqSeFGjWHd0GrzwTNIXNzFntxTgiASZ6IpDmnPQ+Eo7iyyjiQwhnAf5+7IguuFtxPAYu5LyLVJAs9CSK4xT60Ogp8t5aLRykMip+kW5CI1CEzsSqyEJUeKa6GIRN2h9unv++/ZUN62NGIZGzW8+S5SQyQX+L/j9zIXGMl7V8bblK/Ke4z0s/7XM+Ko7KAALi1Q== X-Forefront-Antispam-Report: CIP:194.138.21.74;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:hybrid.siemens.com;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(136003)(346002)(396003)(376002)(451199018)(40470700004)(36840700001)(46966006)(2616005)(41300700001)(7636003)(82960400001)(4326008)(2906002)(36756003)(5660300002)(82740400003)(26005)(8676002)(70206006)(316002)(6916009)(40480700001)(7596003)(47076005)(1076003)(956004)(336012)(6666004)(16526019)(70586007)(8936002)(54906003)(107886003)(83380400001)(36860700001)(86362001)(186003)(82310400005)(356005)(15650500001)(40460700003)(478600001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2023 09:02:27.1227 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7ffdc206-10d7-4665-ce30-08dafeb2e1db X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a;Ip=[194.138.21.74];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT011.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR10MB5762 X-Original-Sender: tobias.schaffner@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=KKcTEGbD; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.6.79 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Tobias Schaffner This is a first example on how to use the unittest_isar module to test python functions defined in a bitbake file. Signed-off-by: Tobias Schaffner --- .../unittests/test_image_account_extension.py | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 testsuite/unittests/test_image_account_extension.py diff --git a/testsuite/unittests/test_image_account_extension.py b/testsuite/unittests/test_image_account_extension.py new file mode 100644 index 0000000..11a0aa1 --- /dev/null +++ b/testsuite/unittests/test_image_account_extension.py @@ -0,0 +1,175 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2023 +# +# SPDX-License-Identifier: MIT + +from bitbake import load_function, DataSmart +from rootfs import TemporaryRootfs + +import unittest +from unittest.mock import patch +from typing import Tuple + + +file_name = "meta/classes/image-account-extension.bbclass" +image_create_users = load_function(file_name, "image_create_users") +image_create_groups = load_function(file_name, "image_create_groups") + + +class TestImageAccountExtensionCommon(unittest.TestCase): + + def setup(self) -> Tuple[DataSmart, TemporaryRootfs]: + rootfs = TemporaryRootfs() + + d = DataSmart() + d.setVar("ROOTFSDIR", rootfs.path()) + + return (d, rootfs) + + +class TestImageAccountExtensionImageCreateUsers(TestImageAccountExtensionCommon): + + def setup(self, user_name: str) -> Tuple[DataSmart, TemporaryRootfs]: + d, rootfs = super().setup() + rootfs.create_file( + "/etc/passwd", "test:x:1000:1000::/home/test:/bin/sh") + d.setVar("USERS", user_name) + return (d, rootfs) + + def test_new_user(self): + test_user = "new" + d, rootfs = self.setup(test_user) + + with patch.object(bb.process, "run") as run_mock: + image_create_users(d) + + run_mock.assert_called_once_with( + ["sudo", "-E", "chroot", rootfs.path(), "/usr/sbin/useradd", test_user]) + + def test_existing_user_no_change(self): + test_user = "test" + d, _ = self.setup(test_user) + + with patch.object(bb.process, "run") as run_mock: + image_create_users(d) + + run_mock.assert_not_called() + + def test_existing_user_home_change(self): + test_user = "test" + d, _ = self.setup(test_user) + d.setVarFlag("USER_{}".format(test_user), "home", "/home/new_home") + + with patch.object(bb.process, "run") as run_mock: + image_create_users(d) + + assert run_mock.call_count == 1 + assert run_mock.call_args[0][0][-5:] == ["/usr/sbin/usermod", + '--home', '/home/new_home', '--move-home', 'test'] + + def test_pre_flag(self): + test_user = "new" + d, _ = self.setup(test_user) + d.setVarFlag("USER_{}".format(test_user), "pre", "true") + + with patch.object(bb.process, "run") as run_mock: + image_create_users(d) + + run_mock.assert_not_called() + + with patch.object(bb.process, "run") as run_mock: + image_create_users(d, True) + + assert run_mock.call_count == 1 + + def test_deterministic_password(self): + test_user = "new" + cleartext_password = "test" + d, _ = self.setup(test_user) + + d.setVarFlag("USER_{}".format(test_user), + "flags", "clear-text-password") + d.setVarFlag("USER_{}".format(test_user), + "password", cleartext_password) + + source_date_epoch = "1672427776" + d.setVar("SOURCE_DATE_EPOCH", source_date_epoch) + + # openssl passwd -6 -salt $(echo "1672427776" | sha256sum -z | cut -c 1-15) test + encrypted_password = "$6$eb2e2a12cccc88a$IuhgisFe5AKM5.VREKg8wIAcPSkaJDWBM1cMUsEjNZh2Wa6BT2f5OFhqGTGpL4lFzHGN8oiwvAh0jFO1GhO3S." + + with patch.object(bb.process, "run") as run_mock: + image_create_users(d) + + assert run_mock.call_count == 2 + assert run_mock.call_args[0][1] == "{}:{}".format( + test_user, encrypted_password).encode() + + +class TestImageAccountExtensionImageCreateGroups(TestImageAccountExtensionCommon): + + def setup(self, group_name: str) -> Tuple[DataSmart, TemporaryRootfs]: + d, rootfs = super().setup() + rootfs.create_file("/etc/group", "test:x:1000:test") + d.setVar("GROUPS", group_name) + return (d, rootfs) + + def test_new_group(self): + test_group = "new" + d, rootfs = self.setup(test_group) + + with patch.object(bb.process, "run") as run_mock: + image_create_groups(d) + + run_mock.assert_called_once_with( + ["sudo", "-E", "chroot", rootfs.path(), "/usr/sbin/groupadd", test_group]) + + def test_existing_group_no_change(self): + test_group = "test" + d, _ = self.setup(test_group) + + with patch.object(bb.process, "run") as run_mock: + image_create_groups(d) + + run_mock.assert_not_called() + + def test_existing_group_id_change(self): + test_group = "test" + d, rootfs = self.setup(test_group) + d.setVarFlag("GROUP_{}".format(test_group), "gid", "1005") + + with patch.object(bb.process, "run") as run_mock: + image_create_groups(d) + + run_mock.assert_called_once_with( + ["sudo", "-E", "chroot", rootfs.path(), "/usr/sbin/groupmod", "--gid", "1005", test_group]) + + def test_system_flag(self): + test_group = "test" + d, _ = self.setup(test_group) + d.setVarFlag("GROUP_{}".format(test_group), "flags", "system") + + with patch.object(bb.process, "run") as run_mock: + image_create_groups(d) + + assert run_mock.call_count == 1 + assert "--system" in run_mock.call_args[0][0] + + def test_pre_flag(self): + test_user = "new" + d, _ = self.setup(test_user) + d.setVarFlag("GROUP_{}".format(test_user), "pre", "true") + + with patch.object(bb.process, "run") as run_mock: + image_create_groups(d) + + run_mock.assert_not_called() + + with patch.object(bb.process, "run") as run_mock: + image_create_groups(d, True) + + assert run_mock.call_count == 1 + + +if __name__ == "__main__": + unittest.main() From patchwork Wed Jan 25 09:01:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2532 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Wed, 25 Jan 2023 10:02:36 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f56.google.com (mail-wm1-f56.google.com [209.85.128.56]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 30P92Z2I026062 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jan 2023 10:02:35 +0100 Received: by mail-wm1-f56.google.com with SMTP id q19-20020a1cf313000000b003d96c95e2f9sf318787wmq.2; Wed, 25 Jan 2023 01:02:35 -0800 (PST) ARC-Seal: i=3; a=rsa-sha256; t=1674637350; cv=pass; d=google.com; s=arc-20160816; b=RxkqnMR918mWQ53XVmQY3/ZGPmZe59mIzVvO1gtHkxhyEviD/9QqjVV2bU2RsTMHDR uv7gDGLyDocCQV/L7np2Ih69n/w/n9H+jbnkMVKlnBEI/DCDR9gQBP7f+11mayHJ9SXQ wvrgJR6I7GLVWCbT7yZCCgeE2hFI/mj5yi8GwWOKxsJdtl0KfH0+wmACXPoDPMNa6w2M hpGNQm59Ir1mkGF0KxcsUxkN63HsMgzXPVSF+FeW5m5TpGB6P0tkct3eVQKUr14suouL PwfmmvNfuEYrGLTJxTv1DBGY6vravMtRiEI8pL5Al9A1/VBb4KbztsSj1jbxNEF5Y6vA TiCQ== ARC-Message-Signature: i=3; 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=/zuDECwaWHE3vKAyycGCKQX8IeT6TYWcvF3zUZuhKcY=; b=yRCzzJuXnGwR5HkZpYFA3z31fmcWAUIfNNRp04pgQ1sBCasDbGFbMtYNdl84zC/urR AlPkAw82MBTJUAlcKZQpcQ8Q3Ki/I6XomyvEa389qPP6VF0AQ0hS5NyFFX03m1ebr0Wb cfoLTDldALXS7qssL92CKNqWjtrtH9iK9f70uG16X7XqFqWaF/Kr/+co9EgPXRpn9o7k S/IsgbMhlPDZ0VMyOakRzFXUUwnxnjEUNRg+5Wm71hsA6mc7+1QPHquQOV8iw/cvhhjs QUbv2yDvbg3HJXFmVn/cW6hER88iLIbD2tTKVES4FDiil0nFrYD7Als1XAvpw2NJjtRv BV6Q== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=GechVdAD; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.21.63 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=/zuDECwaWHE3vKAyycGCKQX8IeT6TYWcvF3zUZuhKcY=; b=JVHEN09VBKMu/U4DXiOXEXdxbm4u88gRo7SVxrKbDvu+l6/SMnnCXl/szlyNxiV06R maeVueyLZX/1VpO/L2V6sCkGOcQnYjqSCrw9ITr6gtJ6Hn6ciLXzqh6kL6nuMTzyxHWf L6jOA8dm9xUDEJCTUFb2N5TcJW0i9mXCO4fqfQTHZ7LR6N8jXSImOCr6lH7XB/8jenDf UNZ2D3r8KtQwMLU17eZD+vF+54D6jGFXLbGUK+JsP0WbePdZ36TakmQ78vP72/hdiXm7 GyKrDuRHo/oV2r8trOsIv5dYZDb8BKFWwONto5qRKrbo2+pbW2t8idzVmtz4qp7dvqwm 9MIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=/zuDECwaWHE3vKAyycGCKQX8IeT6TYWcvF3zUZuhKcY=; b=Ux2XVYuz2dOOMrdSm47rUyQ6D6kAfO4AYO+nzkRrvXhirYUHzms5oxD17VZO6Y7Q9i pAO65iyAjmjZlpwFYPFAr0NYh4vOPbajCSP2ji/c7al1hg2xc6jqvFNcJiH7hgGoVHeH ChXiImIXJ2Zqw/FOxRUfTBUMm5HjuvisIWMCCCS0g8GGMBvAHUtQbLEUmBpy/tGwD3MR uXYtw0awKC6HlnEBGJtIV1lAoPKpx1gg+yizp49RY1yRkV2KHpjcphgGWEHnEQjevr4u 8a7JRzpqmcLDNOqU23/4pdcUIMBs+/U+R4J7ZibAPE7AUUpCBTJOsDG1l4Oxv1XzDQZ3 XV9w== Sender: isar-users@googlegroups.com X-Gm-Message-State: AFqh2kporKr1fsZ9+R5zuhesr6UYjjUdsuOvsIckPLctTMduDIqSWWx7 dxiA+rsCYLXLxohplby8aaQ= X-Google-Smtp-Source: AMrXdXsoutBskXUbXvHL8wWFV2HQlrCvdGneRwl0MBkKyUsNuun4tD+0koco+2X4YjvOLoz7fnieEw== X-Received: by 2002:adf:e908:0:b0:2be:5c3d:99e0 with SMTP id f8-20020adfe908000000b002be5c3d99e0mr746822wrm.297.1674637350415; Wed, 25 Jan 2023 01:02:30 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:600c:1c94:b0:3d1:be63:3b63 with SMTP id k20-20020a05600c1c9400b003d1be633b63ls705838wms.1.-pod-canary-gmail; Wed, 25 Jan 2023 01:02:29 -0800 (PST) X-Received: by 2002:a05:600c:3ca3:b0:3dc:1687:9ba2 with SMTP id bg35-20020a05600c3ca300b003dc16879ba2mr4407772wmb.35.1674637349430; Wed, 25 Jan 2023 01:02:29 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1674637349; cv=pass; d=google.com; s=arc-20160816; b=Yjc0Qgq8JL6ECm/ZBAaEtPKZKY9G2m4hWVL4cRnWCH06M63jWYDmgLx36H4tY0eOMw XPqbXDwXiKmpen7yAEO6wCn2DgsCSOs6n49UHriaH3Er1FPYZ2XF/KCmaBor8pRmvSAR l5jzypI8RAF32jAHMOlKkbfAopmjT79cM5Hnd2RotVy93e1BDvnnyEeciwURt0wdXKA6 TZu7Hh+hM+lNYw4hkWjL7p+oDIFn5WEnOWJnCVHtdUV8tHQFHBFACItLFqS5DdnKdjeK y+MLgHWzDH6crzNjs5bmd/7xRB0Ch/NIrxdoFPCWcXGjK6sIgJGCMSm8O3e83jsZd/NX M3iQ== ARC-Message-Signature: i=2; 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:dkim-signature; bh=jU8UlnbtTAOLq/7tgdP+lDjsiRQ6MmrsbceCGbY3u/4=; b=KMTAvK28P0uPWa1jB1p18uFaljU/CGchkOu8HSou2w0YaL75FIYnWDy3nxbIvnB2tj RxLP57ScGRmSCsEcQE2INFj4Ljhq4bNlAlDU59HFJf5GqiYDp5/utmBsT8XrAEEPp1Qo WpXXsRM3OIuxsZaLfxc4ic6/Sz8ancML3liihp7VuXpzojnL2YIgNB8FIVUBvxm9LyIf RxA+W/n8RaR+f2P0CQbt29SPnl0DrdTTv68JCLOLkLJZyek0Aar9lGpY7+aweeMpGUsp 0Z/N4YjFlroGKLQpfvkcZ9val+ErzjN7d0ufWsYZht+/oogPGCQ2xJO/iMR7tJ9GS5OS v8Cg== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=GechVdAD; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.21.63 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2063.outbound.protection.outlook.com. [40.107.21.63]) by gmr-mx.google.com with ESMTPS id h5-20020a05600016c500b002be29f05cdfsi217365wrf.0.2023.01.25.01.02.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Jan 2023 01:02:29 -0800 (PST) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.21.63 as permitted sender) client-ip=40.107.21.63; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AqZKI3LXGYAUKjYxnjFgKo4stpW1dv/H2Fs/TP4+YTDQ4wbSCFbO+XYqq0xksneO+qpBVpzGNGpqM/ExDuPCNz5ITRuO1pTQUCj1HuYABQgO8OpD6aQJh3uAd9LYeGZ/7Ab+fM/aDFNHqMaly5NzT8kR6YcikDD92gpPiVjnEam/0ILvzaJno0VhQ7oKJxYS9bQAOPSWIXtreGvVGGJAJP2FErraYHwxIBJISX3V4ffnLzblagvwe/jwlO7vwYG1omIoFbN1M8RUo7VcKdj2CslhmCvFJbQ2bV6mGI1gGKUNRFz8RXH0W/RDNQihYiTe8YnovjeImFjIN3n/G3N3zQ== 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=jU8UlnbtTAOLq/7tgdP+lDjsiRQ6MmrsbceCGbY3u/4=; b=eHVHNb4YuWjwJTuyk1wE4byZtgglZi5P6SH0ETUdvZ971wT+rEA84a68lE/sdNE+jtNWe9iIGfIu6wyL+54nJWbsLo9SWZNfYf3BJfgv9LyvPUk1SZb0+qjfj0qMNiTajN14E+Yy4a/pP02xq4QiRtGEuN7h5NMoBIxJZ+SCnUl1PuHFzhiyRL6YEXIt1dF6Np27kOoJzY/iW4d+0PAYT5A8h0jhaDdieMh3roqgxgqqNm5//IHIWbu8FHVwMA5vlK3A53AJDyM6dW1gAInCismpDqaWtAut4AmURrerlG/xHfBgMeVgDZTE9ZtHLlOX6WVQGRXwK7gGcaRySXaOXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.76) smtp.rcpttodomain=googlegroups.com smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from DUZPR01CA0041.eurprd01.prod.exchangelabs.com (2603:10a6:10:468::19) by GV1PR10MB5842.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:150:51::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33; Wed, 25 Jan 2023 09:02:27 +0000 Received: from DB5EUR01FT012.eop-EUR01.prod.protection.outlook.com (2603:10a6:10:468:cafe::fe) by DUZPR01CA0041.outlook.office365.com (2603:10a6:10:468::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.33 via Frontend Transport; Wed, 25 Jan 2023 09:02:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.76) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; Received-SPF: Pass (protection.outlook.com: domain of siemens.com designates 194.138.21.76 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.76; helo=hybrid.siemens.com; pr=C Received: from hybrid.siemens.com (194.138.21.76) by DB5EUR01FT012.mail.protection.outlook.com (10.152.4.235) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6023.16 via Frontend Transport; Wed, 25 Jan 2023 09:02:27 +0000 Received: from DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) by DEMCHDC8VSA.ad011.siemens.net (194.138.21.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:26 +0100 Received: from L15-Gen2.fritz.box (139.21.146.184) by DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Wed, 25 Jan 2023 10:02:26 +0100 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 5/5] set minimal python version in user_manual to 3.5 Date: Wed, 25 Jan 2023 10:01:56 +0100 Message-ID: <20230125090156.284309-6-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230125090156.284309-1-tobias.schaffner@siemens.com> References: <20230125090156.284309-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.21.146.184] X-ClientProxiedBy: DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) To DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB5EUR01FT012:EE_|GV1PR10MB5842:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d2eee10-65e0-4160-41cf-08dafeb2e1c0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7fzLJs4pJZ+Afla9iruT1xlaD2nteA1NSk23zxBFtJG+fXnK2VUKPZIxRyr7l/FgramHnMfpvaKjuDK892b41l2tzBhmutmniIdGel9pn3ZFWULL8GW2WTmC3phLQ6O2YrnDL3R0AHpcMgIHQF85RGAiHGmqBA4LhcFfOwIgPKvCz9uxYgyt04sWpLXXwCIRPxBQ5iaU3UTTuT4sRnd75EOlpsBiH8DfpwgDGAFksuKO13s3X21LtjrZJpCiI3M3MMkE9TidK39YySCK2Q8ekqsZMjSEXTH1LmMYMN2F7OFq0f0eyjzuYUnsMJc2qhjj/trbh8Q1HN6RM0RAbz/eXfyg18gUP9K5Cpoc5RpzU1QRnE88sXHEipVV+XGGUO5RujSYLcEUgPXqZQe9UXb50SaRLubTPvNwDirkA5cjFzUqM9X8h8sm8z1SD3tp9v6z2ma6RXY9A581a6qdPhKrgR9i7SPLHK8NGVts+w0pqs8uPMPyZndwqvz/kZrgzo9+AJ5OZae8+XsJaLsz6zEdL+bd4gLvA9tKy1NMZ5hYwRt171LHLw/6DgIqadtb2VT3Ihj91vYpr9pHcPDashmfFo/yf8VgofnkjnZqIFffdYOtGAV8HLoaWFfe2D857trV3AzgoqWow6EcE/z/lioZ4Du/6+5I8QTeTjFZS2a7gh3v1rvCk46VllD2NAuCmA7KZ+wjHQSBiNb9qH+4rJN3Vo/g58ijBSXO4hoAdsHhZtQ= X-Forefront-Antispam-Report: CIP:194.138.21.76;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(136003)(346002)(396003)(376002)(451199018)(40470700004)(46966006)(36840700001)(36860700001)(83380400001)(81166007)(4326008)(1076003)(70206006)(70586007)(336012)(47076005)(107886003)(26005)(16526019)(186003)(478600001)(40480700001)(36756003)(54906003)(2616005)(356005)(41300700001)(8936002)(2906002)(82740400003)(5660300002)(86362001)(82960400001)(316002)(40460700003)(956004)(6666004)(8676002)(82310400005)(4744005)(6916009)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2023 09:02:27.0828 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4d2eee10-65e0-4160-41cf-08dafeb2e1c0 X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a;Ip=[194.138.21.76];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR01FT012.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR10MB5842 X-Original-Sender: tobias.schaffner@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=GechVdAD; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of tobias.schaffner@siemens.com designates 40.107.21.63 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Tobias Schaffner Set the minimal python version to 3.5 in the user_manual as defined in bitbake/lib/bb/__init__.py Signed-off-by: Tobias Schaffner --- doc/user_manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/user_manual.md b/doc/user_manual.md index 1d209b3..af55c69 100644 --- a/doc/user_manual.md +++ b/doc/user_manual.md @@ -107,7 +107,7 @@ unstable/bullseye included in `/etc/apt/sources.list[.d]`). Notes: -* BitBake requires Python 3.4+. +* BitBake requires Python 3.5+. * The python3 package is required for the correct `alternatives` setting. * If you'd like to run bitbake in a container (chroot, docker, etc.), install the above in the container, and also perform `sudo apt-get install