From patchwork Thu Mar 30 11:08:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2751 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 30 Mar 2023 13:08:56 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lj1-f183.google.com (mail-lj1-f183.google.com [209.85.208.183]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 32UB8sx4008069 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 30 Mar 2023 13:08:54 +0200 Received: by mail-lj1-f183.google.com with SMTP id b5-20020a2ebc05000000b00295bab7c7d0sf4131767ljf.15; Thu, 30 Mar 2023 04:08:54 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1680174529; cv=pass; d=google.com; s=arc-20160816; b=MlCdlG4rKFNI7kH/ktvz3B4sLQDpYGqb5YN5DGWvlxSHHPcdVb9XaOkRwZ7YdQPpY1 00fqvxeruUp2ZWpZnjltfy3YhLSnh+4ar9+Iqdozc5ybpCT+iaAE8q1n/i19isl0X6So 7r+6XNiQw7GIi9VgwicA/IYQw8XTMFggUqjm4uSGlqVIKt5+w3FRiSMOdzKyO3zwl8hV oEGuqalyoDTYjR1J5UmUY6GDKP5H2vX9zfVRQruws2bQVulnE0fXzfObX0zHPKSBMi/U 9bNv3XaojJIXJ+SaUZ0cKy2Sme5UPHjki7SPtCAHrAtlnza50dCtvcD5sakY4vX3tWyL CTtw== 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=MNpxwj9GeilcV5namj30NfZk+lO8zwuMS5tU6lE3cC4=; b=QHBbw07+ae4GNdWXy0dH4vUXLysm+Co/YurMv2V2YdE0eLl3Iz6WisOM1oghaY5Oye x8cYKL/0bLsOkV/BUxtFA2AiFpbDwfAonaxyMoaiDJ3h41AIp0O8WjYq+0xil07Zg8nC Eehj67u6kxVNNNjRo/PIpPwdz2v5PJC1OJ89ryKX6QFv4rmz898dWmxVsyLnTu9hYeS9 r0vY5JOorL/2g6jlkhC12e84zxlDp1DvC+EIoffde/AYxuKjD3baVDwmiHGCJU5WoHRD oxojJDpfB1+tqTpLhBu9c/0fwouQK0hNCx33yXf3f+5dJypp//d/isoXVwf4wir1zSe9 SgDQ== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="JedbJ/kz"; 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 2a01:111:f400:7eaf::61b 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; t=1680174529; 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=MNpxwj9GeilcV5namj30NfZk+lO8zwuMS5tU6lE3cC4=; b=YFjsBqAo4g2+xrZOLSX7FgbqDD38JJsFHt9iTifJvr6cSTk9tX9hTY/MevoZqJvc9J /hYpmgtvIk18g2rQcUS6l7WYm19VwQUPJnhcjHLKFZ/gdwhYoZlENar/VpVwRAhVCagK dwYYvjQWWsf5n7KbLNs9O3Ky/Oq8O3Fwzu/apo94Bc1HEC9kzWz/H87UA9LRDGUjnjor yAJxZYHAt+yyx7UAzwNgN3OJAAKJXZdjkIXuPEUVUqgAE6JYVT5DQVzYi78+OVjDC/6S kzo1miXMBwPmZY5K+EZc2kpaQjm2svYfRKYMigL6p283nZ6YJOLXjYtM9qCVcQxuMhrV 7kZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680174529; 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=MNpxwj9GeilcV5namj30NfZk+lO8zwuMS5tU6lE3cC4=; b=sSqkx+8oQLQXvMkE6GmMT4oNHGyPDq9h8LzT8iYUJrPBGNtPuzekCsem42itAeCNVI L96E869UYvvIE+4ilmRBU7gRFrBMthjCnzyngwlHMOJIg4B7lGLsVaL7/nsNRGCsKzhD SblGfebHr5usnucFVeNRsKUBVjbUm0p4yBYklvVKvkBYC+ULeQz/hFciLtW8F9bLMtlx uBI2zzCGoVLkMhrhpPtL3l+wkk2ImxymtBwDQEkE8TZt5XhYME6Wn2JFlQFRbdGpS1wm 1ZVAf61Rm3Lt3sA2VsJniZw0sMIrZHWlS4h6Tpv6zQa0p2JXwldeabIDMeAhKRF2xy7f W8BA== Sender: isar-users@googlegroups.com X-Gm-Message-State: AAQBX9eF871xXeNi+Z13NOlSQp5FMP2NT/xzeVrspTH7ipwXjF8KH5pt lGdCtLx9X9O8Hx34v6MTR+w= X-Google-Smtp-Source: AKy350aWS0u6/C6WHpzfLU/RhCst/xRGN6jgvasBp28tUrBH+gnVHaCclUksr6WTThMngxPWU0CIEA== X-Received: by 2002:a2e:a0c7:0:b0:29e:e7b7:dfd1 with SMTP id f7-20020a2ea0c7000000b0029ee7b7dfd1mr6865689ljm.6.1680174529242; Thu, 30 Mar 2023 04:08:49 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:b8d2:0:b0:295:a3ad:f338 with SMTP id s18-20020a2eb8d2000000b00295a3adf338ls320024ljp.4.-pod-prod-gmail; Thu, 30 Mar 2023 04:08:47 -0700 (PDT) X-Received: by 2002:a2e:a307:0:b0:2a6:18c0:2b3c with SMTP id l7-20020a2ea307000000b002a618c02b3cmr767692lje.0.1680174527761; Thu, 30 Mar 2023 04:08:47 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1680174527; cv=pass; d=google.com; s=arc-20160816; b=iitS42eR7LF53UwnkhWqoa8wrSHT5KfwZmyZx6lnd0PBKmRjCARdGJR9Fs0vA3eHEn IVV0OYsp5KmDwkWyIBQ5IygEsqL0n9UdSb47nq8Al1vbaK5CnYELguXxs/sgbwkjbIEl yV5T4xEnih6Mc64mhSRLEtrY19DHcB0mRUCafRRFbttsH3f6oTdx9SuAbLhzA37H4wc+ d7ZEMGAdV2JcHBmJIp29WkP72J1NMA8y3TUtjIiDQ2mc8Dy1bb1NavqN4dQoBLQ99PwX iZwaxBcBGnIH3cZg9iCTV9yLYxYj4AQ+psHDBzNC9Goa7tKuzYtUwQPs0kLsK7HbL5cg ndFQ== 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=uARwBRHYZPSEG0bO22HJ/M5wXDtIb0615ZI3IO33rKI=; b=M3efIjWaFEhjBcgK7Y6Vwhl+S+T7lwV6GLThKDkY69wX8D4kHoCo9Qb+1gpfAInjtG SOEjWP/4ohnCvNFryqZdl97Mv+tYjDyszZdcwhZFRzmP7DihEh4fwThKtxpuMkreuu47 Td4hJcrFeQkwiwTRGEHc0fSx5t1pwLJcHoh+a7A5MPWWCOJhJdfs9ZhSfDBlfnmDH1of m74F45vR7X28E1Xj+i35mWXZsorpMEUEpkjMJRpHkVufQ5gnt3rEPJqo5t6rplk3ve6u eK9G8Z4sUgJL07KLdejndwKl/EtkpBhc+nCumSo0lF3friFqnlpohyBH393U2XDn4vR6 QcBA== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="JedbJ/kz"; 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 2a01:111:f400:7eaf::61b 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-am7eur03on2061b.outbound.protection.outlook.com. [2a01:111:f400:7eaf::61b]) by gmr-mx.google.com with ESMTPS id y4-20020a05651c154400b002a61d615a07si41868ljp.3.2023.03.30.04.08.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Mar 2023 04:08:47 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:7eaf::61b as permitted sender) client-ip=2a01:111:f400:7eaf::61b; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oTR3X9UgTol3wg9GSvrgsfgy6fI3JyRNNhcNevBa0UDAPpjXrqSkIGgum4hJOIc+6oFaDwbHqpQ0W0qOKnBNQuHmLfmksLKOGF/Uoi0eza1Vgf+q6pPT125c6g297IGV9CE+Rn0ZjQ7Za2uJltMdsAWL8m8kpk68tbJl8/T+ed2zHLh59PYLCPU9T9bChBghBW212ft07UvNgbO8A45xKEtSBqegvGktPVlGEqCDzdsQiBwKI9rLBMUE4alloiB3jC43FZmgeW1nR5Khu+apJrknAgXQ9BKMFEpMBenh0m6SRRW18OGA67M5QCVVdekSngufLgEBD5WEKJnOYeekrA== 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=uARwBRHYZPSEG0bO22HJ/M5wXDtIb0615ZI3IO33rKI=; b=auvA2yeMiDLzmkoOIUrfbL1gC0QfwZJMNXE921D6TrUTeaaXuyOZur4BNe4y1cc7MPIc8YieFYJVKZPOYyljroY46DTm6HOIl1NdjMRfuHQwkI9W1T1rE766T1ZKP1YcBka+GI1vsaTPQl7hY2aqYVb217Cpw7Gu3ah1tKJBxo4yOvKLpTyPdkbilj9LYCh3tQRjRy1nBuHFG5h2yqMMFIOtTDNpSw+382tYe5kET9hwZG851hnLpRiMhr1oHUPgx12RMJqcNCW+TLI1ibEWGR3CCxd0++sKEeWc4UkrVvEIIMEGyBY+o1Swi6Zjnncu6Zgv3QWMXUQOyzMQA+9CAg== 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 DB6PR0301CA0038.eurprd03.prod.outlook.com (2603:10a6:4:3e::48) by AS2PR10MB7299.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:605::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.20; Thu, 30 Mar 2023 11:08:46 +0000 Received: from DB5EUR01FT029.eop-EUR01.prod.protection.outlook.com (2603:10a6:4:3e:cafe::7e) by DB6PR0301CA0038.outlook.office365.com (2603:10a6:4:3e::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.42 via Frontend Transport; Thu, 30 Mar 2023 11:08:46 +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 DB5EUR01FT029.mail.protection.outlook.com (10.152.4.241) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.22 via Frontend Transport; Thu, 30 Mar 2023 11:08:46 +0000 Received: from DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) 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.25; Thu, 30 Mar 2023 13:08:44 +0200 Received: from L15-Gen2.fritz.box (139.25.0.85) by DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.25; Thu, 30 Mar 2023 13:08:44 +0200 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 1/4] simplify image-account-extension Date: Thu, 30 Mar 2023 13:08:01 +0200 Message-ID: <20230330110804.1016614-2-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230330110804.1016614-1-tobias.schaffner@siemens.com> References: <20230330110804.1016614-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.25.0.85] X-ClientProxiedBy: DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) To DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB5EUR01FT029:EE_|AS2PR10MB7299:EE_ X-MS-Office365-Filtering-Correlation-Id: 638692bb-6561-4500-922e-08db310f2197 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kUHA8Jm4Doz626QaeJDSsqTkd+et6vy6+Zj6QJZm13imz4ZqXsvGWE5eIk8lEe6XgKS1gPvdP/AZe/WtBlIAEbXAUJHboDarykus69WkITCZA47WQE6h6LW5Isk1ld76cvBR5sCYNzOAhr9ZLiwU4gZmxxQmsQR9VJKiaN9F4tWzN/mRnrZejVnlMBi5CVzswzveXF0yiRd8cmg1vlVgeJEZoHKMl7nS9SyYlwAOpJY5iQVQQHQrXIAzKoMZcv5BU9Cud4SaN2roWRsq/kII01iQtR9nGy4A3xdF6MpE5wu63B7dqL9rjfN5oNHioLmgog8pRd/1CI14/QrhrGH3PHC6hOyDXr77cRulSeg8E01h9m8ab3hx8GH3k3wi4wUwFR70SYGOzOLvJptXYrZVKXzoX2a31uRUgv9vyYzyzfeDxyP5UOXBnv4kRsg/RLkdp2oO9OVnwFf1DhQpUqeEldfhZRbqmKXYotCGO1CKvchHPvYLWC8NepSfJbLwTr/U4aJQ+E/yo+APj+r0nBk/QrHBxAEJibrK12gX1yvRBSUgM4JxE2cQzIWiz7eZiGyj+Uc0Drg2x4VG1QOQPp4ug02kwCPtfwuXurHpse1S43oN1uhUqin/jTIs3PGlYg62Y7ZKgFTZFfw9rIxcf6mcdJt7pcUyHRObXDc0QeCJqwLzz0agMvzx3otPBnmd8+6VGJdX3iR2306o/nS1Tq5eBM6p+4I+7qmCUFsVvzNIb7RBf+S+bl29M6pBzC3Yy28eoBte8d51XG2qPN7ODuXiIg== 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:(13230028)(4636009)(136003)(39860400002)(346002)(396003)(376002)(451199021)(36840700001)(46966006)(40470700004)(70586007)(26005)(1076003)(6666004)(107886003)(81166007)(82960400001)(356005)(82740400003)(30864003)(956004)(478600001)(47076005)(34020700004)(36860700001)(16526019)(186003)(336012)(15650500001)(40460700003)(5660300002)(2906002)(8936002)(2616005)(70206006)(36756003)(82310400005)(316002)(54906003)(41300700001)(6916009)(4326008)(86362001)(40480700001)(8676002)(83380400001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2023 11:08:46.0127 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 638692bb-6561-4500-922e-08db310f2197 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: DB5EUR01FT029.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR10MB7299 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="JedbJ/kz"; 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 2a01:111:f400:7eaf::61b 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 1a1f704d..d1133bb4 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) 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').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').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") or "").split() + rootfsdir = d.getVar("ROOTFSDIR") + 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") or "" + if gid: + args.append("--gid") + args.append(gid) + + flags = (d.getVarFlag(group_entry, "flags") 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") or "").split() + rootfsdir = d.getVar("ROOTFSDIR") + 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) 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") or "" + if groups: + args.append("--groups") + args.append(groups.replace(' ', ',')) + + flags = (d.getVarFlag(user_entry, "flags") or "").split() + + if exists: + add_user_option("--home", "home") + if d.getVarFlag(user_entry, "home") 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") 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") 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 Thu Mar 30 11:08:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2750 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 30 Mar 2023 13:08:56 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-ed1-f55.google.com (mail-ed1-f55.google.com [209.85.208.55]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 32UB8sT7008065 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 30 Mar 2023 13:08:54 +0200 Received: by mail-ed1-f55.google.com with SMTP id b18-20020a50b412000000b0050234a3ad75sf21642326edh.23; Thu, 30 Mar 2023 04:08:54 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1680174529; cv=pass; d=google.com; s=arc-20160816; b=co1dLHHZl6AUXhM5DkatwZpVc87bmlWNM/yLVK7SHyhEkcf04DdYFNl/S+PT/FRzJ6 83fv2blkeFReNkBhVYMUo9QUAswEPcmBGPaRa2f1U5WrqL7Dcf/rfxT6x8CSyCdgluH3 +rjzUVTrO48/XSRlC2XoL1osIeFWKoMln1gak7bCJAYXjqbrFY07YURAuGh5JGAr5PwN va0QXl159JeIK4UlpQcqBJl8GDhDhpVIjiphirfr3CceqAAFkrUArDBkoK+W2OvClBin 2BwJZWm/ofHxuHhYAe6Q+oOkNU96Rq7X2upxHjmWgx8FGhzVAFuyX4n3yeIPQ8s/+W1T c2bw== 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=DN/qTTVnWKN/tDQCQT380xSZ86Ni7IMSiT0p86TEJc0=; b=LqVvGx9y1WAXjkHDF6PI6kjLPJNJ7zW2Tl5sbaLbxOUTIlU4junrlry+av0q4jM+Na 1VlSyV5OOmJcoq+Cn4ZEFE/0xZstZkSFfWwsCygr3lEs7U0sZfNw1n8L7/J5lcfmG1yp YfKBwsCb2dYW0XOYjCD0Vjovq5gX1oG/zgUl+pYV5lcwY3t1tJnIaKOKz08fx5se7Iwu uxMF87l8sAslGFY5nAkCKRydspvvCx8bgtPOT/pYkqCkrOeP0EOeJmj8XTrf0Z0+GaeD Xh/aT7Wjo4DtXmlNPZHoTh9/zBHwol4cbDzREjFVBXAEFDzP7uhmBn4Fd4uphYh1JDkW CnKA== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=wKdeMSmH; 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 2a01:111:f400:7e1a::617 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; t=1680174529; 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=DN/qTTVnWKN/tDQCQT380xSZ86Ni7IMSiT0p86TEJc0=; b=mFWcr8qUatgOHESC3MIn8o7OWadBfWPh5GV1cXJrIUgSrYA441VLwz2kH8b+j98mp2 7QtlYbY0r+py8tX8yX8gWzDNzgMygXF2MN3IXZTYT4q85ylASHSoVVmUfpOwWArgfmP0 SBkLSPrXZ3kY3PY5g4zjtLYc2UmmWxP/FOJWJQBEyppajpyLTBPLHfzMLYUP3GlB3CrF eO2zeZ4Dg68LivbA8ZEIbw5XY+LPwdMwzeQR1K9QOQ0b5HydUYrLhVLb/60rPhvUXMlW CGXm+X0L/E2mln3xz+0UYGG2KSTqjASYgwwTbtmIJ+ciQC0yIV800rv0bFpDlxnWm4Kv JPnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680174529; 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=DN/qTTVnWKN/tDQCQT380xSZ86Ni7IMSiT0p86TEJc0=; b=SkNMm+p4h4Wm0cOULbHu5SZq6KhQR8Y3VNjpbCdfHrOq2SzqosrpE96fzrC9UV+TXc B3O63v+p6wW13wIa6R/EhrmvOLTR6q1Lp6N+dQ4XTXbBpaZABADosyAU7uypEZfog3BU cVpSJ662+DZuUwoaoP9CSzLnUj4Og0zlfoIHW88vOtm6+FjppGo7kwScvanx2F4R4z8L 78o/fH8+dsNcafOdhoZIRr72YrTvPdng5AqU2bA/KQ592PMYAEZjmYvFpx2dQY7dTAEZ bIX+FKMEcBKNprGdyu4PPOQGuezTUNB26OAU5/C+Cvj60iwd1QIonKBdwJwZ+ZikG2Rh Jo/w== Sender: isar-users@googlegroups.com X-Gm-Message-State: AAQBX9cPs9P1Vydm6yflRKn/TFxVO/qEb29foCIRyLIX/BV8kz1RKpZC H968wixmGHFJF73vWIRhCRk= X-Google-Smtp-Source: AKy350Y8tG5UffzBexcRDY/8fdYfi/oVMcMU4jZLCPNqu3/Jn0/pKGM7RvmTxbJhg1DTTFx5ocaLtA== X-Received: by 2002:a17:906:9244:b0:8e3:da0f:f3ea with SMTP id c4-20020a170906924400b008e3da0ff3eamr10242613ejx.7.1680174529044; Thu, 30 Mar 2023 04:08:49 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6402:42cb:b0:4ad:73cb:b525 with SMTP id i11-20020a05640242cb00b004ad73cbb525ls1731364edc.3.-pod-prod-gmail; Thu, 30 Mar 2023 04:08:47 -0700 (PDT) X-Received: by 2002:aa7:d806:0:b0:4ac:b69a:2f06 with SMTP id v6-20020aa7d806000000b004acb69a2f06mr22760655edq.0.1680174527740; Thu, 30 Mar 2023 04:08:47 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1680174527; cv=pass; d=google.com; s=arc-20160816; b=LUYKoL3JmXlQYZwip1wHBTJYQ2h9fbmRfnYFS0AeqO6zKHa+cBQyV8eByk1VjgF/iH UxB/Slp/7jqAjzA0xGpwDWejQqPj8eTsgCoeFG5i12DEU0JedKiiKwIVAWFymrsYxXul hgzVbjGqEN9V5236XphZWKnAhm4pH5FsoY6msP+BHjHTf+IMFGBGG5fJj98aLqP7rZjv V9oiJOmNzMmVtVV1RqZfFIUXBR+yl5AUt+l5/EwUGfLFKnCuU3Q0cmSLfCIq7WGzKnNK 4uuoB84pB1POUedmMxcjwIHtN47Anqn/lOf39+ZcuKr1yyL7KnqNBLEUnbLHheqR6EIk MVSA== 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=Cyz4pf25ub2ZI5LaoEn0HCNrbYRL1G5mREaDYfAtdEQ=; b=lBX1qJ74QLIh8f9RwYQINVuIeVVtbr6KdOihbWzYO97IuDFvuXRBr7uMUnabxdVvZm K9i3dVYszrN7GlpQPs/gs3horVmkjW+i29fRBHpz7eBnFmC1flNrkd5uwoo//FtaXAwb rdK6j2D4loe5jl/TCxCm2Ts8JiZaX2ncp+rGk5KRwb5yIvTHEzXKI8QyCUUmsZ87j1AT OGsL6nyqdmklzxfJc0fo3+AjcIJcL+VFyHHJmbC8DwTabQfpzII2qHqYQPBwFZ7s9D33 bnjWLELiPYt87JXpK1Fr1pxwjF6WtYIdTOjAlcVI53OvwuS77il2yJ8rV9Wy5HPLuHe1 3L/g== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=wKdeMSmH; 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 2a01:111:f400:7e1a::617 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on20617.outbound.protection.outlook.com. [2a01:111:f400:7e1a::617]) by gmr-mx.google.com with ESMTPS id w7-20020a056402268700b005002c03a8absi1467577edd.0.2023.03.30.04.08.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Mar 2023 04:08:47 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:7e1a::617 as permitted sender) client-ip=2a01:111:f400:7e1a::617; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OsyB88/Plnb/FXd7O6yBbkP8C2KVRJYD1ehczVcTiLU1TTCKsPD+suviI2UgPunmPlWYQOPbsV7RBCJA4TehZwmISi++wlBG00MUyIPf3YgbCyP38DDh/bXptrwUoiZTSTpKPjOg3I6++OxPVRa9OgakSkpjN7dgejgAO9JHZdpyfYNbRv8ZLB+ucUiB/rzvO9lmjgTZArt78DEsArBvbKpR02vC1+WcKiRu2fVPnZHVqkk5KaXSM6iyY2uDQVd7P1C8NioPyqDgz3I6BXqRcNbNFgI3qE3LI6KoX5XKpV+kL34+T1f+z0sgsgGvf+eLpuFkSlJ0ffDjWlB20t9zLQ== 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=Cyz4pf25ub2ZI5LaoEn0HCNrbYRL1G5mREaDYfAtdEQ=; b=YYnFleh/GBBwIjmONbDym/KLcJZfXnvKnZt2LrhWNnGMZ1h4OVVfJT86mH4a0E6SiOglwVCLmburTZ85ihkpNXFrLRfURqlHpcGc1yUSoAsTBstIHf0aSoTdPDAZtGGMYpdGXtelmNfuk/6bjBPwk8RtsucWaxtP8TCsAlmZMXR29cMiuei3Zfef/0crQPH4hy4YBkjufhhZyPLv60wbmbHDyoUnPG78bQqGJY6CIse4UdUTsbmOESBxHpIsnkslCqHuuQfDJl4MA7OqGDgyphYhgnYh+nli9d5TaLgeJ3ICWRgyg0jvOBSmGedebHdeAapSMCn12jH0gg5isN50TA== 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 DB6PR0301CA0035.eurprd03.prod.outlook.com (2603:10a6:4:3e::45) by AS4PR10MB5524.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:4ce::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.20; Thu, 30 Mar 2023 11:08:46 +0000 Received: from DB5EUR01FT029.eop-EUR01.prod.protection.outlook.com (2603:10a6:4:3e:cafe::9e) by DB6PR0301CA0035.outlook.office365.com (2603:10a6:4:3e::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.42 via Frontend Transport; Thu, 30 Mar 2023 11:08:46 +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 DB5EUR01FT029.mail.protection.outlook.com (10.152.4.241) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.22 via Frontend Transport; Thu, 30 Mar 2023 11:08:46 +0000 Received: from DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) 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.25; Thu, 30 Mar 2023 13:08:44 +0200 Received: from L15-Gen2.fritz.box (139.25.0.85) by DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.25; Thu, 30 Mar 2023 13:08:44 +0200 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 2/4] create a minimal python unittest infrastructure Date: Thu, 30 Mar 2023 13:08:02 +0200 Message-ID: <20230330110804.1016614-3-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230330110804.1016614-1-tobias.schaffner@siemens.com> References: <20230330110804.1016614-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.25.0.85] X-ClientProxiedBy: DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) To DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB5EUR01FT029:EE_|AS4PR10MB5524:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ca39bdc-fb23-483e-b54d-08db310f21dc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zTjbsn3XQwgylQjrx5XlKO3N4WZa0QOH0SBvIg1I6ti/zWHxBLrmvUCZU3Qf8R3fpnRN+0ll51gt9Byuj0sZ610G8MqpmD2NY0tiaWILqhrMM+/8SDWLIFRK2A8aJG4PmwHlEND0kRbKbbunsXPQjj8AG3TM6/EuRoZVJsSZnRo5cCgj/16oPIRyAFG08dqifjkcTTRcE32e6ZUTm9LvTKMK8JoPCCLavLyQzqWdTuycQA19Xdq1UrpjQ9u++DfCwoaSB0iSJWTEWmWr0ycsVSci7XzLOxCqkEpW+Vj62BorszThE1chNwp3rHSAOC8KC4r1A1k3kjjcRpc6NAh9B1d32LdS+ecO8WA4jJ3f6giyyjnzPoA6fIzUhpdpmZ3wlRG3autEfbYf1US37GI73JHqdj50xZZJG03X/oWcPvshGK3mfM9GojfY2sBZ7xwoSoev8g7HgYT1r5t+q7HQB03YzS0Qooxc9HrB6BS64wMrBpE1xJ64RfHOQTI/bBh4B09wo1a+y5kskp5Xevc0uQfiTRxC2nQo3DqgirvjWAGppQ3mErRGP/QaBP8EVOtbZi9UNQJ3PfVPICF0o5uEM+vwNDeds0sQIriYZ7LfjPC4TNBifx1/Z93adlieCappxdCqn6rEgWFbYCdhVt55BvIDmeg1SC/vWn05BL/5s0RQNLoeyMG97tSs7e1sjXxegw6KjS5Cb+xSgz3vLrljC9jjpBBW4caq9UOY3LsCxyA9+x46oyhDy0RphaAX41753f2u4n1spAeKSKh2hIJZYueDQaUmlJ/YCOlveO7WaLI= 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:(13230028)(4636009)(346002)(376002)(136003)(39860400002)(396003)(451199021)(36840700001)(40470700004)(46966006)(82960400001)(81166007)(82310400005)(82740400003)(40460700003)(356005)(70586007)(478600001)(86362001)(36756003)(8676002)(40480700001)(70206006)(34020700004)(36860700001)(1076003)(336012)(47076005)(16526019)(26005)(6666004)(956004)(107886003)(186003)(6916009)(54906003)(8936002)(2616005)(316002)(41300700001)(5660300002)(4326008)(2906002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2023 11:08:46.4658 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ca39bdc-fb23-483e-b54d-08db310f21dc 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: DB5EUR01FT029.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR10MB5524 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=wKdeMSmH; 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 2a01:111:f400:7e1a::617 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 00000000..75a3bb01 --- /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 00000000..1e2f685a --- /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 00000000..6c511493 --- /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 Thu Mar 30 11:08:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2752 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 30 Mar 2023 13:09:02 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lj1-f186.google.com (mail-lj1-f186.google.com [209.85.208.186]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 32UB929m008116 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 30 Mar 2023 13:09:02 +0200 Received: by mail-lj1-f186.google.com with SMTP id s28-20020a05651c049c00b002a3e6d1594bsf3946655ljc.21; Thu, 30 Mar 2023 04:09:02 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1680174536; cv=pass; d=google.com; s=arc-20160816; b=XVrQzdQQmQpVwCO99voivsTW+qiz8de4vWhgORNT3FFGOJWSKYwW0FKodK+uidTOlT IuKjiFTETgItcLEB9pofjtbDcl3K24EneBUCsFiWEfj//ViJMdqPsA8BphkPUr22I6Xq wYlioM2SVEzYoDXIYg8SzIQY/I0pU4y6fY+CH5JoipwSiqEjULhiQqTuc63AMr09KNrq oGc4rZSnkbmDMinq5Uj8fpqCJ4cA/oI2B82TKLPG4s8FJdAcQI4E9VS72SFgITpc3LjK cJFBi8ANTEaYeSyJib1XtAyej4tMFNr+SvBMEq6PGWftjdBVS6t4xRashVWwyGRyJz8i qXmw== 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=6M1G4P3KgcPiLNiQbTIeUXbZtiQkqq4/gPypkdMk9VM=; b=FoRfc4uYZ/A0dM3H2Rxx0WwSXAtxaX91W6WdHQ3NvD9thDIqzXaJO640QtKEJY7ze/ Xdox45U7r0VO31X56pg4/1rwBomDnYNDEfYog5P7XsvRiqwDvh9bzcrqFoNAVaqCVNNI Q+4EAozVBek4haJRb3NHq27/NPQrPTqUfdKFAHy65RoFGWt3a0C6wdIqhRiJSkmEWkm0 30By5XmXsYxyuRTKEFisj5Zkz4CCOpItTtZiiIr3CxHNAzSjmGu7CmLMbR5Eb6y9S9KS z5uW04E68b6TxgMiJHWIlE3HTfNkZ6iB95zuW9/Fu30soHU6F3zuqmaOBZuPQclT8LMT gueQ== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=zNbg5xaG; 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 2a01:111:f400:7e1b::62b 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; t=1680174536; 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=6M1G4P3KgcPiLNiQbTIeUXbZtiQkqq4/gPypkdMk9VM=; b=BcC0mx2ikjPnJKfaBIYtxQb4TDZtouFrCQXBZtkJHJ/m1JrScItULloFBXgZfunYrr 3aC5veb8QimQW9gh+dMwRAv4uRuO4w8NY9lMpJTW0oL2cBmA4gIPWhVnTWOrD2TdjnW/ pfw+EHAZNwDwa/8R9bVWj228cLFkb77o8pjiJ2DrRlpKiT9A6Kvc6Vosyump6SDrj3eb aKz6pOMNz6D2kRH4u/XCrMb8vccDAewR5ylSM2k2IBRK5nhlEqVzL6bdxq7CsZII9UgO r0EYUjWzy0PI01IyHybhAd9bEGIm4W4HnmLl5/7JmX947ZoZh2XFUrW2Ym/cRk/D2ruD Zbpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680174536; 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=6M1G4P3KgcPiLNiQbTIeUXbZtiQkqq4/gPypkdMk9VM=; b=3f7rqdOiXK+HU83mUKGG6OEIda6wq2scDivFyTAKricHwSdptQP1/p4haP2yCt+jx1 Lh7wMQYNrpLf5GmLSkc7KkUl3hG3pKVSN3fkJ3eEqBwOvFaz+6IGx5t9VNsfhVBrVi9o 8EppL0qH5ntSTi0Qs//hYVnBJ1XCC5JPn6wrFaH2VEUzHagatS/jHIBOEKDCrL+4oLn3 Yi/Bce/zIjyoR43nIPeGDTKvwoCxstc6u09ropPOIoHG7zdaGRAI2jYY193zeRKwg2TM BmuYdMNHEvXB8O2rcOzPwXnp0PGU8fewmMUX95bIZRcnV4cKDYXvR6icL8WAkzMTpb9y yuoQ== Sender: isar-users@googlegroups.com X-Gm-Message-State: AAQBX9d7YvMvL0gT6TCDcT2aUboKLFiP3w/CdFAInMVHjG+EF+aA8Ymv YbI3ozJ76grKLnAn/jbFKDw= X-Google-Smtp-Source: AKy350ZWf3cF5G3LtttUHRBqQXMSoEvw4XOHWroDI6aWQMIJ8L1PlV5VHS/znjV2ePFrmgUDFl2XIA== X-Received: by 2002:a05:6512:41b:b0:4e9:74fe:91b8 with SMTP id u27-20020a056512041b00b004e974fe91b8mr6583995lfk.6.1680174536473; Thu, 30 Mar 2023 04:08:56 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:8e6f:0:b0:295:b83a:4ad6 with SMTP id t15-20020a2e8e6f000000b00295b83a4ad6ls320655ljk.3.-pod-prod-gmail; Thu, 30 Mar 2023 04:08:55 -0700 (PDT) X-Received: by 2002:a2e:6a1a:0:b0:295:b0cd:519 with SMTP id f26-20020a2e6a1a000000b00295b0cd0519mr6788295ljc.3.1680174535097; Thu, 30 Mar 2023 04:08:55 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1680174535; cv=pass; d=google.com; s=arc-20160816; b=WKKyPmMfK7FFBPXnEqK6ch3TOxvmMFxN0PsAkPq3K15zpaNC8IP0cpbYC0xX9Y8Bat OTomznRlBIuIVobXYRiKcS4BpedZQTD1hLvJNQ+pY1V1DtJWEepXjrzZ6zRCSIPGWVeZ N2sS2IZ3qPjPvJU+KmmaoMyWOwcZZ6Btq1X2FNJKiZqCViPcLS45PvMSCMtBoRiabR2x OyUcYdF/QoxRlfw6/snP5SLZB/goQN9mO0bUXEgNTUK/fIff1iYkp7M4WKxJiQVywlKt uGt+I2C4lXpoSIXzxzC6iIy91QD0+ThHAlU8xlYwm4eJWXQB72Ozy6vjvV6cO2/FjaBV ofXQ== 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=M0Ltgm50tz0ySrE2rBdSa+pfRmGCF0qe7g9yPN8+VHc=; b=YwmZwCv/ChOfDVDxRNwhGWrwmWx67zZKfpooKrWhvX0GTcGFaApSAHYiTiV6xd8XDE Z8aAhePcA65UvPnanij1JTkkAW4P7GKBJ8qStivA/1wyqrPhAJdIUaWAoff/40psCx3y tYB1hf0xRRt4tGble7x+XV4+ijp9zn0/ffKUfEo77TYUM3aXAurTqoXGCVd2nKhgpyB0 FwfwhJplnbhp6SExMf21rII7A0rR4+GU3m+NgD7TRfGp07Oorys/hJhJwJf9IwNMqk0c gyfiDZkxmXr78e49mT0C1AZ3bSGxfH6fTUij1cgVgZHN/neAPoKh8stZTgXA14l8vguZ y0JQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=zNbg5xaG; 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 2a01:111:f400:7e1b::62b as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2062b.outbound.protection.outlook.com. [2a01:111:f400:7e1b::62b]) by gmr-mx.google.com with ESMTPS id l6-20020a2ea806000000b002a5fd844b80si497030ljq.1.2023.03.30.04.08.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Mar 2023 04:08:55 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:7e1b::62b as permitted sender) client-ip=2a01:111:f400:7e1b::62b; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D2cefKstkGvWPvY7RFy6Z+f0eP1n2bBksH82H/wXafeEgxt8mEJcu3JmjXEWXbiln5PGoTzwQWvrnfUT/oOWhIulxYqAhr1GYCimaiIzsVGLIQUyiuUly84ZPz9eRdHUmR+UGGsGhn6BKzq8CSWtA3V/ZJf76f1jlHyfL38GRrmddtM5EtlsZvN5aFDJCKo64sJv3t0W5vtIsCjv1Gj18vB8zH8xsCr9ZY/gC7gBUVVxFjOce1QI7qKlUli6K2CySFWm37qzdzAGS+Hs9EbxEYfMtMsdYKpqyOBTDs8KXbEYAYE/zQyk2DJvYeZDdAGB4qAFl0ctfYKVSKtq28cg5Q== 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=M0Ltgm50tz0ySrE2rBdSa+pfRmGCF0qe7g9yPN8+VHc=; b=J3g+CYgko+Y8AZKsAG7BzY4pWiEFosX5N8gaOZQWBiFFmKvfVmuxmJx9JYISsLclvDNzQT8h0tYE6pxQ5j2Mo+GfxINj1n7NKMqHU54VyQ+8dALj/OFS2goD7Mc+PZlsiS9yT4djPTuv63EeNtiipErMVrPlW/9LyppB5ZCgDrewVHq76JKUXl8upV9FDgE4s4zWKijO31c0gfmRFMZy/S5EMSZTQBl3TZX4oJfZgY39RCHPBPbd3WjKwGgZ3pr+9k5K4+QWT1jPY4N8z+GUaSSGDPCAy2yfDOsEXT7vsfFNddRvyrGZcgKUbNIPrP5HjT7JDre6yPnPlDewN01oRw== 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 GV3P280CA0050.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:9::13) by PAWPR10MB8258.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:388::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.18; Thu, 30 Mar 2023 11:08:53 +0000 Received: from HE1EUR01FT102.eop-EUR01.prod.protection.outlook.com (2603:10a6:150:9:cafe::78) by GV3P280CA0050.outlook.office365.com (2603:10a6:150:9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.22 via Frontend Transport; Thu, 30 Mar 2023 11:08:53 +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 HE1EUR01FT102.mail.protection.outlook.com (10.152.1.64) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.22 via Frontend Transport; Thu, 30 Mar 2023 11:08:53 +0000 Received: from DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) 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.25; Thu, 30 Mar 2023 13:08:52 +0200 Received: from L15-Gen2.fritz.box (139.25.0.85) by DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.25; Thu, 30 Mar 2023 13:08:52 +0200 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 3/4] add unittests for the image-account-extension Date: Thu, 30 Mar 2023 13:08:03 +0200 Message-ID: <20230330110804.1016614-4-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230330110804.1016614-1-tobias.schaffner@siemens.com> References: <20230330110804.1016614-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.25.0.85] X-ClientProxiedBy: DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) To DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1EUR01FT102:EE_|PAWPR10MB8258:EE_ X-MS-Office365-Filtering-Correlation-Id: d6785e18-7d8f-48e8-86ab-08db310f2613 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 32U7i/cs0Js1KdYyC2IJ2LdHhNK2O44kUnERpcSrnS8l9Z5UgMjhlsEoTOeJwsAl5+ZHjCXfqw7XzXocc5fjBdTl3X8pnU0gr7RWARFEMedtHbBJyvyPB+2B2vi1nqdP3frkukPecHwCrnro8DY+rFg2Gm/UIbHmauClXn2ijbi90iJOq9O/+v8hh7gSaPJ6ggHHqf8891ZCUhm/JWJjSGjQ9SLvzDTgQVipX69wdOR1ViLon7+2NhWd8HmA1Yvrul7aUvQsq/RwPljqtWhQbWZ6bpoqPumhXn0pIYtv5Tamixy8kNVSldEZ1y/s/lEdkkJe7vuJ9rsjMCpb0Fg8fkT+pyjKsz7ApOnJ5v/jZ4kERXLBq0BMHt7tRvah8NeWgfYk9GMl0MGOBOQizCgQtEgvF4QmpuUHjYdSlGzQyfxc/VI9IldT4lmqVIV63iEFnCl5SDR210GM4LwjVEia1Cn3cTY3UNr5gBldebUijtRlAKknPser/GHib34l+PmO7k/5NJHAWwYhS2GoFoJKuqvuOM9NB+fPQ0SrO0iSw2WxH4pefb/pkAG2UmY2YS/3Kz70WE5+DfnS3w75/n+KqE81CRaSqPyW3TSrJtti/pQXwaVvVLixR/Q2xZZkQNXckQMqcMKkAC+E9c4XoAVjf7ZJrLqrdIp1L5wprhHuNseibVY/cqHhCUajS1rHSFCsTntmTAD5TYkHy9JfmILqRC26eLKg/OemGjuf08thgrmLqKkgOc9FYI4S8uTjbkLVy6/yjaHMBbxQPjuu3iGsYA== 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:(13230028)(4636009)(39860400002)(396003)(346002)(136003)(376002)(451199021)(46966006)(36840700001)(40470700004)(82310400005)(81166007)(40460700003)(34020700004)(36860700001)(316002)(86362001)(82960400001)(478600001)(356005)(82740400003)(54906003)(6666004)(15650500001)(16526019)(107886003)(956004)(2616005)(47076005)(36756003)(1076003)(8936002)(26005)(40480700001)(336012)(2906002)(83380400001)(70586007)(70206006)(41300700001)(5660300002)(8676002)(186003)(6916009)(4326008)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2023 11:08:53.5148 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d6785e18-7d8f-48e8-86ab-08db310f2613 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: HE1EUR01FT102.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR10MB8258 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=zNbg5xaG; 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 2a01:111:f400:7e1b::62b 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 | 145 ++++++++++++++++++ 1 file changed, 145 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 00000000..d35de723 --- /dev/null +++ b/testsuite/unittests/test_image_account_extension.py @@ -0,0 +1,145 @@ +# 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_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] + + +if __name__ == "__main__": + unittest.main() From patchwork Thu Mar 30 11:08:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2753 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 30 Mar 2023 13:09:03 +0200 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 32UB92Pk008119 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 30 Mar 2023 13:09:02 +0200 Received: by mail-wm1-f63.google.com with SMTP id iv10-20020a05600c548a00b003ee112e6df1sf9636480wmb.2; Thu, 30 Mar 2023 04:09:02 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1680174537; cv=pass; d=google.com; s=arc-20160816; b=GwFfBANbjiJ7yrHmN+MlNQ025UGhQpcy3CYEbjQsOxyq2hGOME27ZXEtS+qJS5z73J KDfW+htXGvs/5mI8bXHhKNdUD2CmecL9bzh5vJd7pDKjpganR3bnRFQ9x2ErYYUeKnHj Or+FIQX8f008I6MO+kc8nrPvI+FdeX7LmzcfT+fSQn8ghgtsQJTm1PR0fefgr+WXv5lZ za+IE7JziBcZ6eobC52bL7cOb59oEKDyn8w7WmRsH6FhEP5QJwBi4SCP28iYUP7k15ea qxLCTBRSfpoj75bRVxozl759qieH36j7Nm95K8PGHhUgbtbGhQ/ntih1M+jS2Cfrz6n2 6xwA== 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=KMM8qMrIhks1FVEhu/Asl8p52oBOik/gzDWdf9SiN0c=; b=rsCxckEpA3ZfUj2iRaLEd8Hod5cDF7R21UfxIKSHqKNhHCeGMn4tBqdqE2phoxrUgz dxUrFo2Gz8CUKfgW5DF1YjZv8d31Wbpktg0tOe40H/85+Q6Zpm1ycB+tqkY/i5D3p3U4 2E1LKVMvzhkuJHKrMzaZcsfSmP/32IgUbQE7fEkNLx5fQsKMSbCSSuAW0end7f1tlVCF 2Uu+TWgjmGohPrWBA4PcAYBwsN0TINK1FiiuuOgMxKcLROpquFeD53SnKaBvVWKU4dOw bJg5k6Zl8d09HmxDWJUT2zepavycdgf/Bx+GOQhA4pJsTV+ydxJX9ofbt5femuldNlKq JEkA== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=xZVNauGK; 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 2a01:111:f400:fe0d::617 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; t=1680174537; 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=KMM8qMrIhks1FVEhu/Asl8p52oBOik/gzDWdf9SiN0c=; b=shXJSWdvofhp66uLIDMjbH+v7pJ9S2uNgaiD4fOrB+uiFfnLty0984Qap0SbJzZ8z+ Y1pUVcSsFcXZWPgfbFb7q51wEIRuARTISzgCFM98ANgYsIh8eJUMGWXpAGJmhGvTs2zk wRM70uZ01aIaIw6En6H8+pYlUI6WeJ6Cx5Bvvk6d9K0db0etKp5uZIRPN0T/iba+27WY bt3UcnFjRTc5ZOhWrkq6wW2VrCkQKtgnSGUsV9jHxi1BmKWs2oJ4TnmSfUMMArEm5xYd HoAFIk1KhrObFhf1W9hBdGP47WnyZT/+NlIM0kLvpJvKSQY4u1I1QmYLMfgWMFy2K6pk Uh7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680174537; 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=KMM8qMrIhks1FVEhu/Asl8p52oBOik/gzDWdf9SiN0c=; b=JSzcFAJrgJSKqxzOHhrFUh4zb3wEesj4YmObFDxqDky6MQaiwFXS4C5I4u4oq1tyak t+yzBqKiVTCHgJlfzLgo32s7NAqXqGdMhCnksWeA8OXSThvL2VKusUmvpcwvR4OZGLP2 5A5eZtFB/fG4gIPgOtzwuYULzDz/UaUsvPZdVSjaW4uRKV3sXsQ+J4eUfNDyzeD64bzc tMU7FLo87X6TaKlhJzsFFqb0iZC13a8hfMxIrtzSJ4wZGrw8xvmLjM2oxhtbEau3o+Tl 0JMULF5VFZKDVQuQoG5BjqvYysVNwslT9R4lJVnjIF4OEsW+iMVon6FSVaO8vXfsbEj3 59KQ== Sender: isar-users@googlegroups.com X-Gm-Message-State: AAQBX9d6aBsE5rtiwdu0fuO9cSJi9tW9TcTvBITWGSLSjtqsoAGbzYRD O6LC1xCJjJam7vmqTgxAskg= X-Google-Smtp-Source: AKy350YRbc3dfSFfHzAQ9PQGVL1sphUtpjoCJHaiNPWM3LLTyMDGLD2nKPikLKwCXZ+pGmTI4BmRtw== X-Received: by 2002:a5d:6185:0:b0:2ce:a1aa:2636 with SMTP id j5-20020a5d6185000000b002cea1aa2636mr4838001wru.12.1680174536836; Thu, 30 Mar 2023 04:08:56 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6000:79c:b0:2d0:a74b:1d65 with SMTP id bu28-20020a056000079c00b002d0a74b1d65ls3073637wrb.1.-pod-prod-gmail; Thu, 30 Mar 2023 04:08:55 -0700 (PDT) X-Received: by 2002:adf:f90f:0:b0:2e5:1c60:5afd with SMTP id b15-20020adff90f000000b002e51c605afdmr492738wrr.1.1680174535639; Thu, 30 Mar 2023 04:08:55 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1680174535; cv=pass; d=google.com; s=arc-20160816; b=zRR0IyG8uaBjlMM69KvSRejAOIu6kTDRE3KB8JoKN4MimOPVBWP3/X3MtnCRITBbiR o8iU2Ox1sgnOY8AY0FBiSLjmsd4nAYyLlNRxBLi1g92/z8ebmK+g241QA8EkXeVt+JmF quBRhC3FIlBBXsFXVlbrUKczm9Wpc0x+/NNGKWtz2PpLv/ihdN9HqfIj0dk1biY6V3ny 99bnVmnjNBtBE2znLTDfnl3C6xAQSzbEiOzdJ33MgTbsZnMY7PghjBXPhV0vR9DfC3GZ Kl7GX5vDfaNUmeHfI+atJkDH/XPkjJZcMdO3l0YXncQMQ7e8NdXEn6QG/Shk/9wwk48K l78g== 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=LoJtyyQNPeyNcfl0hIZJddPDUCItFNx9r066JVgMvPI=; b=kdWfAKbx5aTqZ3T83GdgNMLwa62bDZa7UNMBWcOizSU2rIryVMmtFICVyRsuojL/2/ hNun1fPvVXHuraBHxMsQvsLPjlZwP2ajjO6EUB2gIM1o0QuakMPm15Yip6QOy1VRkyYR X3PYpOvhOvEYKrVeGeQKDgSjX9D7pzArpe8OeGK0d6gVRGFWRrlBL+uqG/Wm/VrADgul FcOLjhkwfydpXu9MdiSbcwMPdoLx28X2L0w0TrlQGlpgM6QEUw42P671XBTtPCNCH+e4 vOXRf778NUK3wr1hkC3UEwSWox78ME41ACBLpx3Q3FtF9S1q5JYMx7Pfrsche8QCHiFj zlHQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=xZVNauGK; 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 2a01:111:f400:fe0d::617 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0617.outbound.protection.outlook.com. [2a01:111:f400:fe0d::617]) by gmr-mx.google.com with ESMTPS id bn30-20020a056000061e00b002ceac242c41si1773980wrb.4.2023.03.30.04.08.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Mar 2023 04:08:55 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:fe0d::617 as permitted sender) client-ip=2a01:111:f400:fe0d::617; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AzaMmAZDL+4zVdPqc3+QkKAG+cgYR2njHBAM3uhx4NwUd1yKV4stZsMk2mUTdu/y7iP5iJwzARN9YdWkkmfXkZoqkLMoj5HrIGE9CyJYsKqAvWyjqsFfkNsDqMFR4QLBPlLUGMrmLWLPi9exhsjTJVWSI6Zc7iTFAsWGo9x3s9/U1h+N05QzsRAo6/HS39L8ZhbCtyJcVxrVFOVR0RWseG5AXAuL3lRf3b8FQTI+4GI3yls07SwU/lpqS6CUU1xpIk1H9yJ8UsoqKP3q6LHyvbBCJ/PmhQ2lReaMrd2+6BBhGp1uoAC93GlikNEenEpwtN90xmEoie3G1QwnINpSwQ== 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=LoJtyyQNPeyNcfl0hIZJddPDUCItFNx9r066JVgMvPI=; b=UWW/lJ9OrTDxfTEPZDuaJzagKbeTP/uDLnUoS2Y31743XXA1aTxrZJkC7/GF+LscbS6JG6QeU1rnLo/XqvSGXRNyzaeZKzRlhXdEagkBZDf5LYxBr9Pn793kRi7wMjV1PD2HMOJc0Ccg0R0pudYtKebD0mIvYhAnAibqY/4rfCUZ7HPIeY4W4xya9LIkvOIoOd7RjTzXzPYbjCp4k8M3IXdpSAeG2DKXCx2cKdNCGBov70KGZbg9BeTiPIznrWPpqanXPNxIeVSM8D4Mi2/hvEXZX+XawMM/h8wE2BTCeIETuth8rFmDtuYZ2lzA+GQu5d4y0ERLLp2hWMBGkmBCEg== 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 FR3P281CA0130.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:94::11) by DU0PR10MB6437.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:40a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.18; Thu, 30 Mar 2023 11:08:54 +0000 Received: from VE1EUR01FT075.eop-EUR01.prod.protection.outlook.com (2603:10a6:d10:94:cafe::64) by FR3P281CA0130.outlook.office365.com (2603:10a6:d10:94::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.20 via Frontend Transport; Thu, 30 Mar 2023 11:08:54 +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 VE1EUR01FT075.mail.protection.outlook.com (10.152.3.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.22 via Frontend Transport; Thu, 30 Mar 2023 11:08:54 +0000 Received: from DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) 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.25; Thu, 30 Mar 2023 13:08:53 +0200 Received: from L15-Gen2.fritz.box (139.25.0.85) by DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.25; Thu, 30 Mar 2023 13:08:52 +0200 From: "T. Schaffner" To: CC: , , "Tobias Schaffner" Subject: [PATCH 4/4] set minimal python version in user_manual to 3.5 Date: Thu, 30 Mar 2023 13:08:04 +0200 Message-ID: <20230330110804.1016614-5-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230330110804.1016614-1-tobias.schaffner@siemens.com> References: <20230330110804.1016614-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.25.0.85] X-ClientProxiedBy: DEMCHDC8WAA.ad011.siemens.net (139.25.226.104) To DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1EUR01FT075:EE_|DU0PR10MB6437:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c0de779-29ee-410d-4ebe-08db310f265d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Vosl9cRsyW9IzY+cHU2405x5OyAEk9a/hV9+cLHWQ8N1Q7QZTct1HQ5AZtIAwzTuCCV1PN8N90dVmSxAcz5sLOmKoY16vsz3bVeHwUkSiXETza3xq7cU+4BdBYkb+mrlpqNdnsfjNT8MiOa2iR2LB2GDHUr5BYBDgWgCcAFlPeybZov0QTCnVb5fZDoFhx6PSxOMNWAHyHnCpmZSgcbu47WIG5Nwqc7gG7dz3zf4XYtI0VZteIYi8aaWSHSfFtpO4dMoTKIhqDebm6CW2Lncb2W1hwT7pHZzO9QOndMjwE65OaMpllinhZoVsyLRxKt7ee6Re3Wh73LrA39QXFp6jRxJT10U1aqE2pkj8tYeWghUUdh65xSwNGy34oM1kGKyoH3ahduks7I17T/CPKbQ//tLE9A1JtUL3rOzrkVoRrkTaZf6wRbcBBQuZNBm18qqpT0eESzDtrQaZ9bcyZOjwkoOhKhqanaGyvxrKAEI2xs4Gd9W5zqTYyp3qt8l9hWLWjbScDvaTR+dEoraYBqQX/oL3UlGU7buVtkE0HBoHGD1SMFnYdSzQKNzqGMpa2xh45o5lOLdtzfy94mGwGt4bQD4MCicGngyc+EMjG1oVKvlpXM2IIKApsxV2H5lK518NtwQlkyFrAlQGtugA1XwHrURxB77EUeD4iSAB9xk8JyOTgljGWTuaKXq87inoJL+LazRbSqEc5i2nUAxFE50WnyQerGRJkSPo6XAB59dn2Y= 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:(13230028)(4636009)(39860400002)(136003)(396003)(346002)(376002)(451199021)(36840700001)(46966006)(40470700004)(40460700003)(956004)(2616005)(26005)(36756003)(478600001)(82310400005)(47076005)(16526019)(186003)(1076003)(107886003)(6666004)(86362001)(336012)(70586007)(41300700001)(82960400001)(6916009)(82740400003)(40480700001)(4326008)(4744005)(8676002)(7596003)(316002)(356005)(7636003)(5660300002)(54906003)(34020700004)(8936002)(36860700001)(83380400001)(2906002)(70206006);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2023 11:08:54.0372 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8c0de779-29ee-410d-4ebe-08db310f265d 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: VE1EUR01FT075.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR10MB6437 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=xZVNauGK; 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 2a01:111:f400:fe0d::617 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 2b8542df..5023b37b 100644 --- a/doc/user_manual.md +++ b/doc/user_manual.md @@ -111,7 +111,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