From patchwork Tue May 9 07:44:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2790 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Tue, 09 May 2023 09:44:52 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lf1-f58.google.com (mail-lf1-f58.google.com [209.85.167.58]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 3497iphp030641 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 9 May 2023 09:44:52 +0200 Received: by mail-lf1-f58.google.com with SMTP id 2adb3069b0e04-4f139de8c55sf6785739e87.0; Tue, 09 May 2023 00:44:52 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1683618286; cv=pass; d=google.com; s=arc-20160816; b=ZFGInMyHgNaFuTaGYgP7VhO8e6NaUEk5Z7OXWh4BMfXFf4en1FmacRPmL1ZPULrpPP i5cnMABoZ+nac+PbceqG8Ku8Z+FLS6HIZ+DUAHSVkWzHjdQWsdMgv4LsJT76tMYM0zzL ePIaNGRWcOkbc01E3DEf4HGsIDG/QXwbH1LkPB1QUZN5GxR8qWXplZ4GALcNulEbJRvm TD8dwGa2YCULPkHTqgE6E5dpI6AsTJ9tgnuH+DszxAmB6nsSkNbGcT5mnAM1PaQrdLFw yki/QzH/kiTfFzP0xhUEv5uU/U3hXKKvtYDYegdXet7etN3OIcoG5iPs0YwWbnhllwQn qBqg== 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:reply-to:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=cJuw1TExhND3yvZ6S+tjOcge38kABKMBNMjuCZiKJXw=; b=ICgz7qk0uWg/FS6sfzXaa7K4h1eJwQDld9dDnIWkbG39wl0kuNkHaat6/0VLBSzj8L r+R0FaV9rG0YlUfs+3913/tYao3OVTKhrT/PpBX0WYllm1TK8DEoxYpR6NKneAM6dse/ 12fLSvprRAzVA8pYxbHtIvFBPBy2Et3acQktwkfyWDSPCY7y/0zcUycswqT9NpvcbZIB 1ACFDnDNUlDw8MYOH1pkrMLgrNpBAw0cYTlSK7uIbsi+GG1ttO7RA32A567mdCwN1KPE t6Tl3u1HxM/P9sMSDZD7FFEqwNFm1GvxileyXdgEPpyOJITdkWBFDKop0y63WPXj3tBQ 8SHw== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=Zb7085hW; 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::61c as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20221208; t=1683618286; x=1686210286; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=cJuw1TExhND3yvZ6S+tjOcge38kABKMBNMjuCZiKJXw=; b=dJRVxRYDlneSbMyUZKKxGMEeOcaLkWu2c4V0uqZ0vh/WUNd1kuu8lc8E8uONCyIjVz dlAW/UiSWW0UPCUi2sH5337zs0kiQeqlken5UPtBJSnQz9qWrNaezgh/1J8l5sYbOl8r i1TARwKV3Kb88nWPTrscL6uKPnikPsj6RXvX58K5eL4s+DZsSEQ7n3HVt2vF8sCMJux+ zMX+wvcBUS0YQfaO7ND5fWXLLlVEBr97ogbBbWOMP+jK9jL1GXg5Xd/vCYEN6fqLdzFj 5J7Ezjspl0m7CDUQBSiyS8Bb6B4IWen5yoJFKuZQJ9vYcYF3EwAJhysAqRmTDK3kIaiW sdvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683618286; x=1686210286; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cJuw1TExhND3yvZ6S+tjOcge38kABKMBNMjuCZiKJXw=; b=KXyLeKwRypY8vZS75rn5eeTo3wPDM78Q6ZrxTPK1nBCDfHd0UEj7ryhJoKjjxZtjfK EJ2QEp9iUfL1E48QF17shjzqLvzQoQptiANCaOJ2eqH9Epnq/icbJbkQJWohye4OSvF/ UwWHrxO1RKwEwYuFSQFDlRxjPx5R3Txkcyst4dQ2y/rHcdOAw7XP8rFAlHF/rE1Iv37N WsxdShfnC2mjSbaBlMEkc4QnmOc9ksYfiAzF40haYB9lu1R94K0jk/7/GUj2AiheDbUU HT9IOJrJDfJ+T1Up0wlqfRIGR2LGTtFC24ijebCVPGEZ9wKGE4ydBupgcp2qDlooYLLO 7Xdg== X-Gm-Message-State: AC+VfDyuQTJ2z2X1VoGyMXwZsOSVOcWh37EeubHxJgdJI4w+3LS6i5J2 qTXjYYuuQfj9smszSbqFeC8= X-Google-Smtp-Source: ACHHUZ4v3RF1sckXqNqOjfSwEsuJeNF4LfZzFRFtfMi4Yuuz+0zri78n1n7lKLBmLa4NPLvdqsOp0Q== X-Received: by 2002:a05:6512:1109:b0:4d8:86c2:75ea with SMTP id l9-20020a056512110900b004d886c275eamr537340lfg.3.1683618286328; Tue, 09 May 2023 00:44:46 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:bea9:0:b0:2ab:4d:c40d with SMTP id a41-20020a2ebea9000000b002ab004dc40dls1515ljr.1.-pod-prod-00-eu; Tue, 09 May 2023 00:44:44 -0700 (PDT) X-Received: by 2002:a05:651c:1728:b0:2a9:f9e0:a820 with SMTP id be40-20020a05651c172800b002a9f9e0a820mr492159ljb.11.1683618284845; Tue, 09 May 2023 00:44:44 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1683618284; cv=pass; d=google.com; s=arc-20160816; b=yLVyJYvvB81tBov4sMrN14GlTfhWDGSrxpRvCuUMTbImmHaIk0/nzoq4wQiq8vEksm 7rz5wCiWmwiHRRuajIRect/yhH9hi8dNqcawEHVR8vWZywD5eiua0qevV7Gjbjkr+aJ/ dh8GjepAhUAau+Rs8MsaJBv8DFZ1YpoYJw6ACvdx6R5V5cxjhPPgTGd5WWwTKzn2pzST uck1X2FZufsyxFmUCGEvO56etUUjuC3arqjwWvzEpQkATtWARYXcaR2d2S/URC4ugguq 5rJ88Oi4QuBuQBS0qlzoh+lWo6wfjgO+wFH7KzPcTj0Sd6RPLAudWP1nsexveSAE6a+N gU5A== 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=nn51Thbj2GDiWjILGx8huR4gWhAsJb0XTJxRyH1YtYM=; b=tB148577K0IJfkWJX9ZZT46YNtnqXKo878vl7cteyN9xng+Nbl9m8ssthBsOBsOdjO HRWRKGjMNcITWUyEOUe+hNJUJBZVY2Lpoql5mGkLiezSAoZXUzpV7wTHuj0YhdzD2eQo BbhrSjfu0QXfYfsRTTYv2opMlSfk+Tb/Wn43QKrz+dwExqtMkD4BxZiQuiGrsB+TtTVN OQDj7sEncWf43M7nzhRHxyO3AWWVpW7SzDJzSt3iNpu95Dp30LUHhqcBpHPVTlc2iZ6D QH0ntcTQMqMjdt55RQPYZnpJCEp9v7RjDxfQaitlGCEM7vQt9LM4BpG+QaJ7rZBpxoIZ aFzQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=Zb7085hW; 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::61c as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2061c.outbound.protection.outlook.com. [2a01:111:f400:7e1a::61c]) by gmr-mx.google.com with ESMTPS id h5-20020a2ebc85000000b002ac885a8f29si571025ljf.3.2023.05.09.00.44.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 May 2023 00:44:44 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:7e1a::61c as permitted sender) client-ip=2a01:111:f400:7e1a::61c; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aHDIXnnk2e7XD1LLngM+bN5ihtEQ9YvIOIVkzI+CJCcH/gN5ifi1y+ca7TDRTTLX9N9uUXAmU2KUT5dFZroLgArzJ3pJhKTcXrTy31/YyDn8kAAK7k8Wzu/zZ1WwrwUFo4Gq2X7+bZYtDTs7uruF7MhkotE5AHIaTM7DuFCJOqCucAzVTBjeVWQP3Lcgj1flZPZ0Lr3+fPXdHVoz4bhL2xDZYB+vzE1zFt8Oz/SElpTK822rac1PVWNXcZTLirechRrHZxom8hJObUwn63vLwpt4jJW6/XspI2BheT1p49O3oUzmhwa035GTsAspJymdxYjKRNDpJJUN18twJjFpLg== 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=nn51Thbj2GDiWjILGx8huR4gWhAsJb0XTJxRyH1YtYM=; b=P75O8IwwK/x8oB6/YQ9hubavPCvbmtTsICNuxIMspzcGYcSa88rBbdCRMgxocYOeetDiLomTSL7EGkIrVo8cx3ZBAOTlb3fIJxY54KBty4qInE/TORSpiilHBgrUa7+ZhnhImDn/iNZ0sYS140B4SkHBjy/DfKlwz6H2cFSTikqgPMtScz3jOSDraa4Zo0ZqiAoaBZ8XQDAMsvo3017cNPJxFfe5SJK6Xpr9T70irymAG68BHsF2Qt55ydaIbJajVWBChzmBocr22PHhjW2oNd9ek/iB0zg8Nlfpy9JJn2ee3UiOEknSNhmyN9wTlhWVyVBWsOcr2PqSCL0tbZjJVw== 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=reject sp=reject pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from FR3P281CA0209.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a5::8) by DU0PR10MB6801.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:477::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.32; Tue, 9 May 2023 07:44:41 +0000 Received: from VE1EUR01FT011.eop-EUR01.prod.protection.outlook.com (2603:10a6:d10:a5:cafe::ba) by FR3P281CA0209.outlook.office365.com (2603:10a6:d10:a5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.18 via Frontend Transport; Tue, 9 May 2023 07:44:41 +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 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.6387.18 via Frontend Transport; Tue, 9 May 2023 07:44:41 +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.25; Tue, 9 May 2023 09:44:41 +0200 Received: from L15-Gen2.fritz.box (139.22.36.202) 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.25; Tue, 9 May 2023 09:44:39 +0200 X-Patchwork-Original-From: "'T. Schaffner' via isar-users" From: Tobias Schaffner To: CC: , , "Tobias Schaffner" Subject: [PATCH v2 1/4] simplify image-account-extension Date: Tue, 9 May 2023 09:44:09 +0200 Message-ID: <20230509074412.86392-2-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230509074412.86392-1-tobias.schaffner@siemens.com> References: <20230509074412.86392-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.22.36.202] 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_|DU0PR10MB6801:EE_ X-MS-Office365-Filtering-Correlation-Id: e6eb0eed-0d62-4654-ae75-08db50613fd3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PN3Dl75Ygb2sH/f67xExHl6qa6JctyrBwPuzD1LTFBTAyF+7kDCiu3Xxy3WKG0/LoebT7hCEyDuVORWBSXpiz2UQ4o/w0Bo2YNtJaOBmSJQL/6eydzTp2bOPoM8ilSdQBexHfCQQfFfCGZmrxKx7xgkut4w8167nQ3CX2NiqHNe7tB6lW8wWR3ZYEPpn6dGZ6MTERwUZPoSavT+1wxJzKNq/v1LqYYZKO6fAopgvVJHBpyWjYB4+NQrojkHCGiGO7/HIsZaP2aLXKmGoblPMA8Ijia/xc8xScc9W+6YnZf3OaHlS0B5h0rpSvmAoDUyVeAsfA7OnbymKZwIgNJZJ/aUf1k3MFH7bSLhNUw5BAmNjI7SG15dAhTmP+rDyX1SucXgCeQ4ZU0CnvMG2ppGVNfgGupRywu66fEs5y3FfEhSl596frIRUKNKQuYEVemaSREWaR8GHOy2Yf71Rz0OjhNewLURzwhwrH1xM1LTzqJQ893ojcwcRrO8Fu4Bl3WtVqAp9VzwESU5vGxa5jj13f7F+gbo3R4xoaG2OxOj5hLddvNM6htoXEggRZkuXA1QcfOQe4MHd2zQ5IImiTk7erfEH0JfIbOMCUmv7pnb5R6gCquZ1XQRkbqLiIUMrPR0i3Rl2OkxL/cyffgyhmc+00yFUbNsfnYrYgIs3mgJbM1EdDItCDA5OjhBEY2Ij9ZQjC360wuJ7nBAQNZ73XWKxBtbGs7FNH88792ycfB4yLmM= 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)(39860400002)(376002)(136003)(396003)(451199021)(40470700004)(46966006)(36840700001)(86362001)(36756003)(6666004)(316002)(54906003)(4326008)(70586007)(6916009)(478600001)(70206006)(82310400005)(40480700001)(15650500001)(8936002)(30864003)(8676002)(41300700001)(2906002)(356005)(5660300002)(82960400001)(186003)(82740400003)(81166007)(16526019)(107886003)(956004)(1076003)(36860700001)(26005)(47076005)(336012)(83380400001)(2616005)(40460700003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2023 07:44:41.5475 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e6eb0eed-0d62-4654-ae75-08db50613fd3 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: VE1EUR01FT011.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR10MB6801 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=Zb7085hW; 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::61c as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: "T. Schaffner" Reply-To: "T. Schaffner" 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=-1.2 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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..ab7b48a4 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, 2019-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 Tue May 9 07:44:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2791 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Tue, 09 May 2023 09:44:53 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lf1-f60.google.com (mail-lf1-f60.google.com [209.85.167.60]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 3497iqNB030645 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 9 May 2023 09:44:53 +0200 Received: by mail-lf1-f60.google.com with SMTP id 2adb3069b0e04-4f225b6dbbbsf1613983e87.1; Tue, 09 May 2023 00:44:53 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1683618287; cv=pass; d=google.com; s=arc-20160816; b=d7UkYl1nkuHN75ErwALQjvfU2CQfAUyKTGC8/J8OtyTYrjW7kgDx+by5DmTD4tYM35 vnMeoDD/hMUjNMsw4u/fU76tK1G1+vDea1edMcmDiIVAiqxZcVmek5MAFsIUQvlCM4IR Jpz0tqnp8WFhNntE4Tpqzb+97D7XXP4Fk/RwH+Z6fgfKcAMmbQlrbKjvizlwFuKAxYsF I56btEVmdzZeOQ8XpjWWG1DuksmmIXRRrs7rSDCs/CixHzHgDRge5/GvyF61E16GyQFK rgoUEYAMXyIkZzuYig4T/f1izkQOVMSbE+qsZre+JGHoqVWBQ1cabae9FJBMaDjB3N+P M67Q== 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:reply-to:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=e5dW/ohGUaXB/KwS4/7+O9sypFBokYOsvtxx8rEwTkg=; b=AkDog0CxCc3o18fOeyvWwDbnIpDjaFt+p357lkBEGVg51H0fathjCeSZLblx0yFaqP vx5zFuiePqpFC8JqKptpWQ2K3eLt/etB/7SgedQ4NhsGFykd8USq2HYpRbI2vgonL2FB G8cYN1XlXuwClOjds2kP2Vq53JC0eyTPOMq5coxyy6Nrrdqh19BdEisRZLx6Cv3Lh6+N JHZw2D4fIbi/WW9pMXXWH7REQdZJXlQEjfGeq49fMkrlcbNESuJnWfRdL8Cp/F76QBwU EES9gMhY57xQ8X8vjKUYqGviVialmrNhaoYjEWTHYaFUj1hzqa0NQJzuv23Ob236FIiK RlOw== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=ywyxNiat; 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:fe13::61f as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20221208; t=1683618287; x=1686210287; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=e5dW/ohGUaXB/KwS4/7+O9sypFBokYOsvtxx8rEwTkg=; b=fttmJ6PzByROS4//u08GmfmRZgUpPPKmGkhdLgeqD9dPxCPHGZSCWrWy80DFPiuqRH q4WCv9esftNHDGOLUChEojrdN3WJWJVq/XXBSZLVmbQEqbArr7jotO8FlKt+980/w0Jw W3NyFP5SgnaFkYT2a8EcP8UFgJmvnBWnjUXA5dkwRKlUIIeF0cQeouK2zV8H3Gbs6kaV J272MAyknrIN5qJRFcpqoBY1p8LQdWVtQnb0qI3y85ZTsjNgJ6UKxPlEYOTV7gIkJDSI a31Gv28GcqebJCjzsOY+l5aKbt9T74OiXqxBUtVZ3KGqD9lRT3d+xx2mhFU4N3Zbi0qx j/NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683618287; x=1686210287; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=e5dW/ohGUaXB/KwS4/7+O9sypFBokYOsvtxx8rEwTkg=; b=llNlmuU2ZwDe8Pba/HMo/HF6XO668UZ+pVbSTPQLRvacTLlDaPRaVCtW3GdTeCROGl 7RcUbyUmhzSXD1DfTBap+WdUcNOMyk8o7BivvJhaVn7PRgrV6I6Xho05NfotV9G2OvSc D2uNd54yVGN6iGuTb792yW45nK+rTZjBRX2Hh0pProhIlyO7KyUK6bNckuQXztAUIBXX BF/ifYVIZAjKT5wI05cx6dst+0oX/CeTtU9aa5szpMw247wCz8/6k/uZrZzYxvz9MNmy PWsZI/PBmLlcA3GqFCqccCVJ9HEJAB7qZNgcg2KzZXfiYVXQGGSBg0vFZhXhNae7kTsW 044Q== X-Gm-Message-State: AC+VfDxEYAUziScIGix4bNIb2fLqR1Ehz0Hov+q9xMCIRqZWqfKVkpxV 5rV3GYwRruGUS/Rjacasd+k= X-Google-Smtp-Source: ACHHUZ64IwYg6h6TelNN9o5wi/o+wPj4WFmuUFGbs2QDAZ4T5jNbmJu/jINtAdNrJIltTG+Zofp5qw== X-Received: by 2002:ac2:46e5:0:b0:4f1:5015:43ca with SMTP id q5-20020ac246e5000000b004f1501543camr411701lfo.11.1683618287404; Tue, 09 May 2023 00:44:47 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:651c:c87:b0:2ac:812a:6a80 with SMTP id bz7-20020a05651c0c8700b002ac812a6a80ls294618ljb.0.-pod-prod-08-eu; Tue, 09 May 2023 00:44:46 -0700 (PDT) X-Received: by 2002:a2e:9985:0:b0:2ac:98be:fa55 with SMTP id w5-20020a2e9985000000b002ac98befa55mr570889lji.27.1683618286052; Tue, 09 May 2023 00:44:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1683618286; cv=pass; d=google.com; s=arc-20160816; b=KpfZdnjBkCuvw942AYnSnXHVdpGYQd9adEVQdwcVnDduUYgvJnDWhmCNq4Oxp6be75 WLngPQWsa7s40WzO9FhsnepKmA1doNR5osk1V2H+oBvpkTTfJDl0Th+QFjw2dumU2MWT wr79sLurY1TI6z4LfhgSwqgtDVx44mAb52KIFfKu0N8HsjXrr4XiG+PNDNgCAHJf2Pvf h5jNEf1BALaVr6jPSSvrKu37z8uiDa0yQS67DFSRs3N8k/F2LcnYkHyeDa8vLhVaLVTc 1gKU05r8l2H19aHtqIv4hUKwgc2QwHRoHkdOjZRHpeGDgw1TRUpA5xjbXAx27FgErqoC JD+Q== 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=DF45QIdXR00WGXQ+FMKNtYrJoybkUr2VeP9dHQu6dXzrlCBt0G20GTHwyswDGoZd4D IGe4/BujPxkiQAt81mLoPeyyCCAcVRhBhJ+iCLmgqUW2GmBwTLKa0wXOV4iNqERbOUD7 GBDczpGWWRPNce8ljVFZEPAoFUx1XAwUHwBPmQn0ZbiUQaAJdrj6kJEKYrMrCH+JOVYr fbFdmJ+Uso0Zt8UH7J06qcnLTQ/QnIbK2003O6mbqbIa4928JWVwrSdV1XKY6UcVzWne OCmGJeVGsD5TbpVY57t2B8KFuMrsviVyUUFKg8Ks+4UVhfbYqMaShMl+LuKJh5Nwe25p auwA== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=ywyxNiat; 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:fe13::61f as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2061f.outbound.protection.outlook.com. [2a01:111:f400:fe13::61f]) by gmr-mx.google.com with ESMTPS id bz16-20020a05651c0c9000b002a8b2891ba7si575826ljb.1.2023.05.09.00.44.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 May 2023 00:44:45 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:fe13::61f as permitted sender) client-ip=2a01:111:f400:fe13::61f; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kS/WOOeY4nVkynGJHxl+Vv7djnEuA2+ormRf4GGJY9nXRt2575SSUqnWNJHwXHN9O6HF8muPBdgotVupn2hVhJ3ICOVuk0H7sxLl9T7VPppQ0c2iQaa/KxGHdnK70YjzmUVbszfCzaBIJk5yPmGldyUI8EzsJwrx87WsGhTWiSPphdloU7ujz5TZhTkKvzAcOq19QTVmbplDJYyjKVf/JUawXPfIknc2204HIgtskslfRKEM75BHxjrxBZ+rNvZeCTBzwJ3c8VAdJFWKojcjTQx1F1a36hDXl6KaFDZa5Q9n9r/1GkLtnT0rVRjy6p+hH/mjxiilUrUhDrq0l9U8yg== 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=NGlRSlxwE65l83zUKSWbEPhvxO4q4qqzci8yHFB9Xm8bU8YIsZxBlNb3NfYazyzkU39vzmNCSb872YEcOOSeI8l14HJODsHDv+/K+7E0f8Hp6jw7k34DD5TKI11LpWYaJxKQBrgOwliKQg7W6/0eT+scpyvg9M1RoPG0gVZEw3awOm5VqqyS32m3XG24nPo2s6txSjabp3Kypq8m37glHgmJD1sR1gkTnWMaNN4F0wgtEKlPJWQR4ZVspSmma6jdZj9yOW1KLs1XV4/oVNPJLjAj0VMbSkFoG2V75tIPzsTiMXkO0AYIGf/D067w5z1DDoUCcwrRJJlOKmdaCy1ehw== 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=reject sp=reject pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from GV3P280CA0011.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:b::7) by DU0PR10MB5703.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:310::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33; Tue, 9 May 2023 07:44:44 +0000 Received: from HE1EUR01FT053.eop-EUR01.prod.protection.outlook.com (2603:10a6:150:b:cafe::a2) by GV3P280CA0011.outlook.office365.com (2603:10a6:150:b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33 via Frontend Transport; Tue, 9 May 2023 07:44:43 +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 HE1EUR01FT053.mail.protection.outlook.com (10.152.1.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.18 via Frontend Transport; Tue, 9 May 2023 07:44:43 +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.25; Tue, 9 May 2023 09:44:43 +0200 Received: from L15-Gen2.fritz.box (139.22.36.202) 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.25; Tue, 9 May 2023 09:44:41 +0200 X-Patchwork-Original-From: "'T. Schaffner' via isar-users" From: Tobias Schaffner To: CC: , , "Tobias Schaffner" Subject: [PATCH v2 2/4] create a minimal python unittest infrastructure Date: Tue, 9 May 2023 09:44:10 +0200 Message-ID: <20230509074412.86392-3-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230509074412.86392-1-tobias.schaffner@siemens.com> References: <20230509074412.86392-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.22.36.202] 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: HE1EUR01FT053:EE_|DU0PR10MB5703:EE_ X-MS-Office365-Filtering-Correlation-Id: 37dc7ef2-7260-457a-77c2-08db50614117 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5aLG3VTwnrdvFFfuGNQwzyuLEiindCFeHI0++6YU2kcYpPfUnUNK8cCBjdgMhJPAFSUPLb7sbEbVRBEy/wZbV6BI3R/A9tA1+78yNXDiWtQLFch6HNsk4kSkv6tVhvnq+7XtiVo51ss0VrRArSlaAegGJCuO+PbmT+qOxt4nWQiLCax/+dj0z/5uVSOlkn0RXa5Gj1Ca4nhiUbbLWStRtrzVqZDaQE697pu3f9LIUd/rPlBbKxXFdBIn8m6ZMqI8djiHAGdiFJerOTyA7hD4JEnufr46BXMBzjAI1huP6KHzfVdQv0boqdAZ3ZKhFPYZo0wIJnD3Bgx6QPkmEprLBxKcJivnA9hvoTmxnTkM1dkichIpWXwoZU0PN6dxC/qVITSNe3OjswnC9l7lJG3QBGl4U/hWURH+nNeyFj3gBWIU40uWHPDfA8IBBXY5uoAVmSJ8iKehhaSecAnIO82WeGNk/OYE25DydUyVJ9XxHKxWoZPUW+dAjKYc0KnELj61RmgYlTnBzen92ogW3tQ6uSnsLgcq/67T+oh77G5s5tBRKn0W6xsBK0f3dDp44Edxd568xaSR7u3ECYjqoa3Y3eaVizXZVJeMq27nwdmtwLBAEd0JpsRiGehbSXWvgHe9IDY5aLOPW+CKsc4vzXRBJwwudZ2GnySOvzI47Ah6wAVDGQn3Y2sNzoKBUwyrvjnDZMiAm+ULiQnl7gdFbQtBEAYiC3q9XkEDOVljN1GZe+u1zzqEnfYzp28Z5vlHqg0uMqpm2O0gf7gRcCcikYymdA== 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)(376002)(396003)(136003)(346002)(451199021)(40470700004)(46966006)(36840700001)(36860700001)(336012)(47076005)(316002)(70586007)(4326008)(6916009)(478600001)(70206006)(16526019)(956004)(6666004)(2616005)(107886003)(1076003)(26005)(54906003)(186003)(86362001)(40480700001)(2906002)(40460700003)(36756003)(82740400003)(82960400001)(41300700001)(82310400005)(81166007)(356005)(5660300002)(8676002)(8936002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2023 07:44:43.6135 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 37dc7ef2-7260-457a-77c2-08db50614117 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: HE1EUR01FT053.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR10MB5703 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=ywyxNiat; 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:fe13::61f as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: "T. Schaffner" Reply-To: "T. Schaffner" 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=-1.2 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 Tue May 9 07:44:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2792 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Tue, 09 May 2023 09:45:11 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lj1-f184.google.com (mail-lj1-f184.google.com [209.85.208.184]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 3497jAj5030693 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 9 May 2023 09:45:11 +0200 Received: by mail-lj1-f184.google.com with SMTP id 38308e7fff4ca-2ac89cef5e8sf21778621fa.1; Tue, 09 May 2023 00:45:11 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1683618305; cv=pass; d=google.com; s=arc-20160816; b=n5JTFCqG/ghSWUMW/DDKzLMbN9EaC1XpMhnGiBx7kuSRB82+iligMGFLzXK12qdGeo U6ctWPg8ToTYBPg49GQ3YZjKCuoxK2SvxZ23+N8B1U9L3enq2YbQ3vZ3xJ/PlC1YaN2X 9UWtShqQrb+NF/zGK0BdmSC3772K4Z8ZmtiPRCocBHniL9nDPam9iEiLll/bjmdhqkMy wrSlM816isuUszOG1iHzJ2hezrTajuy3sINhn810e1vncJzEvlNtlnLg3L9ucYFmqj+a XGj/DSpVutr/1CP6ZA4alfd0iAzVdb2TR8647yLxGmzH8ek2jzrYE3ug1IN36WPFK1lL 2vSw== 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:reply-to:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=EH/6oiaDg8qMU88ieUl0OMm2aZZh0izlYMnCHSx0KjA=; b=r40eEIvCjJnaMhvRgk8jdXhMUvgR3gNI+VTzGUVwW/uYIoM9BNloZD80hJYjMOoKKj /fGlkMrcbpKbPwFVN1Kg3IFrEIh+nf92LCH+Xq/D/l+N9l+2pTXIRw3oWJ6i6xGfZFep TZx2tuCCxoUBAIwt98aq0/QW2zzQRTrTGdBjf1YvkoBsC9pa1nMOP8cfliHO6h8mwZ+o Yy2SwlazNheDkA3qwryfbQma0TVtFOYN9mGTpraTHVcYveAQF0K12B5P3AdfVWLa2GD2 r+4vD7XgAtkMg1eMvZoG7wW5iCWKj5V06S4WMozaXjCg6xn9IB2yAur+357f9rH9+Tv1 z/Ww== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=q9vErNeV; 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::610 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20221208; t=1683618305; x=1686210305; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=EH/6oiaDg8qMU88ieUl0OMm2aZZh0izlYMnCHSx0KjA=; b=jeEvoRF149qyrZHdWSbtgtpKRvQfOBR0DJ6kpTARRQ18liN4ogbJOTbrPajfGNZ2Wh c64EEfKVtkxDiFHCWuXh0GeQDrzyvsH0afs5XIDdQxulRE4CoHe8pFb49Bst9BxoP1sa rXnbPzmYgCOhaIbaHNaA1U9LuNl591cST7jUgDDqqJBuzUScbnlJzNPqhD7ZqD+NfW3a P1B5WeK6wmcwp2/uH6VB0gl8v+YNjo8g9G8lDkkSR3cBZC63/3xypYLmC58uAaYm2XQp H/8Cx1YTLsQaiCYd8ATMFzlHC1+ZNlv/mv0hWZReEFYwTdkJClEw5kBXF5BVQ8rctrKv Iwsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683618305; x=1686210305; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EH/6oiaDg8qMU88ieUl0OMm2aZZh0izlYMnCHSx0KjA=; b=dnpr4NBlUPzGvLsQHJsbavecktpzMR+tPBJKqdRTTMfi4wL6nIF/kN0hxe/pVVR6bd WTegsED4tu0azTqr+Jste0p4SIOlDbaBe+7OeRMAH9rKkohYqF6rLe9g2QWBoK9ejNv5 cr4p3ECnUMEGgRddQWmwYH7ntJtTp+yI0ysXLG8Eyru/nTwyjYUw5j5cmueTAG/Si1+j n/f3Y95eFTkNL2+NNKXVPGuIRx+j+zXwdZdvhXLd97dKPHYNNG1u4ARVIl4CzVhD/F/I UBvBz719fmWh16x8OTK6pZpfh71GEofeFf0+mHLpMJDLfuvPxaIUCYryPPbsH3C9JgnQ xZYg== X-Gm-Message-State: AC+VfDw5W2TazBcykiAh2JrFx5940ttfH6RwFaHeADf3bSQeZt6TzU+n RN0ZeeC1nx1M7DKcgxz0XUc= X-Google-Smtp-Source: ACHHUZ5xpV8Gzba5eAxZzhS0Yf2CE2MGIMcCmDV9MBJYo+I8YGHkRUeQf0gAbwZcc/E0vTNzlSghDQ== X-Received: by 2002:a2e:3e08:0:b0:2ac:87a6:1738 with SMTP id l8-20020a2e3e08000000b002ac87a61738mr488277lja.0.1683618305476; Tue, 09 May 2023 00:45:05 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:be13:0:b0:2a7:7ca6:a43b with SMTP id z19-20020a2ebe13000000b002a77ca6a43bls292098ljq.1.-pod-prod-03-eu; Tue, 09 May 2023 00:45:04 -0700 (PDT) X-Received: by 2002:a2e:90ca:0:b0:2a8:b188:139a with SMTP id o10-20020a2e90ca000000b002a8b188139amr500328ljg.45.1683618304111; Tue, 09 May 2023 00:45:04 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1683618304; cv=pass; d=google.com; s=arc-20160816; b=FbpaGSijVVBydHvZb2r+95fAaP7Y349QFWw1Rqlb3AahN1nEpHmwCe/P6d7lHbtCK3 s/bUtjovmsM8PoELhxRItPY0Ooqf7dnd8iB5TiCM1DDCZFbaRH82IBZjI1NoJhsopWtv yNp+tOo6Yda0PYEMGucjQ1+gVyu1AxQzdsfmfSBBiLRWKcAbtzIpeh4WpFilefo/4zdU IHcF0pOYVjrQ6gVZc0Yxwartd0cn7j1D8Z61DKtK01rjWOeE950g6wSNfkEBgTHkIyd/ +8gjFXb0BbyhccVkxs/orHXUoZJd0Z2iYG0Dd8hHK8pM/wYbOkXbC0ENDgS2z8cuodcr qYHA== 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=AdGpgVTe4kODEBB3S5TFyULTifYGUusndURqkyWP6FFhzmNXw3mvA9nxNdU1l//aHf Lh4zMlqoM8m3r9Qcn3sFpVudkOuNZ40zRRtBJ4AYEpt5MymqrEdJJnVgsWjDAjeW8s5R An7T0Cwx8yjAE6INv4UQPdG5xKSz8Ob/3j7rL6CpLsV/MXwiPzMIsIbNQc83WNC5qsBK psypz1/bQ/JdK1ZMmqhaoM32A4S3KNpVHySLHxF6YdJQw5ZvQp7hBqiS2Pm/vnbeionv kDvZOV8s3RHgUg3XbfGu/GtlDJIrMJPBtcOKOkJeUwcn47zk/bdE+8QfIWsltOnBkMkt HBhw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=q9vErNeV; 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::610 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on20610.outbound.protection.outlook.com. [2a01:111:f400:7eaf::610]) by gmr-mx.google.com with ESMTPS id bz16-20020a05651c0c9000b002a8b2891ba7si575864ljb.1.2023.05.09.00.45.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 May 2023 00:45:04 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:7eaf::610 as permitted sender) client-ip=2a01:111:f400:7eaf::610; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GV7xHfgmhs1ye5AmJhV64u6TDVzdxlVT7Q+HR8wQmqESQXI0D0LZjhAa5HUU+R7BrFWBjNQSdXtJbxn9SxiT1B/W15qNwBup2GLFSZAHNSx1NynspH8444gcOUxFCiT3Usap14xxbfxEfcP7PCsdDcfD8ScZKIwIdN52QXKi/cTVQNxuAxm+mypABJ5HZK3GwLodMQ7UsWqfpdwwaqcV0Ef+AeXY7oZqA/lqtmCLGjUXQCk/2DdqNiypzvs8VKAsaLWU8upv1Ts7Uv9uADb2d7NcSmk99Cq+WxcsBlQxPk4YVydrbHt2tHML5hmG83Nq2HWn0rGBzWrJ52RcY+JMXw== 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=Fk+DEQWXutDjUtt8VJMTwSlbCEWy81Cij0d2J0dkpazNT5AAg6wJuZOvP6TFAjyPge0WPX7MQ5rJiLSD4EhpsAu/AbkewX4xREjsKiHfMjhpM4Qur6RjAXAOLHaAGfE5PdJiDdWcW51zrDkMUP60IzZIUCMcDp0Nn0CzG69+wW04Wued6KEHorgc/oSvBp4qA4v05A/Kzo/JlNFoNpm2xqVJU+aDGAqNz9KGm0r7XZoemMe+b6obXcyzju1LNfYctnpwUE8m0/eZfBNNLnRJGNB9Qz+IQ2mjqOYrxqvztoHrtdqVdkC7rvIOXihPzp7MacML4o9OslMflm/QQNdj5Q== 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=reject sp=reject pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from GV2PEPF000000FC.SWEP280.PROD.OUTLOOK.COM (2603:10a6:144:1:0:1:0:19) by DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:45a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.32; Tue, 9 May 2023 07:45:02 +0000 Received: from HE1EUR01FT018.eop-EUR01.prod.protection.outlook.com (2a01:111:f400:7e1f::202) by GV2PEPF000000FC.outlook.office365.com (2603:1026:900::3) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.32 via Frontend Transport; Tue, 9 May 2023 07:45:02 +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 HE1EUR01FT018.mail.protection.outlook.com (10.152.0.175) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.18 via Frontend Transport; Tue, 9 May 2023 07:45:02 +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; Tue, 9 May 2023 09:45:01 +0200 Received: from L15-Gen2.fritz.box (139.22.36.202) 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; Tue, 9 May 2023 09:44:58 +0200 X-Patchwork-Original-From: "'T. Schaffner' via isar-users" From: Tobias Schaffner To: CC: , , "Tobias Schaffner" Subject: [PATCH v2 3/4] add unittests for the image-account-extension Date: Tue, 9 May 2023 09:44:11 +0200 Message-ID: <20230509074412.86392-4-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230509074412.86392-1-tobias.schaffner@siemens.com> References: <20230509074412.86392-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.22.36.202] 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: HE1EUR01FT018:EE_|DB9PR10MB7100:EE_ X-MS-Office365-Filtering-Correlation-Id: 858d4446-af2f-49c1-7fee-08db50614c30 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wzw8j8ilDyvSN2I+3khV09x4sx/zDrx8I/pdXQpvTcQRYbUOztreQSASEHRbHXPZ9hCUAWbSyobqfLU/Zei1DOxGeXNVgqfgsbUCfHQbLCoOjoKnOHOdZgmCjblVa4bxsr/bjBCll37wgmDi73FBoC49uc76uwzwOZKlXW4oDO/sfVRXq8j40ra62mUDCAg37QHnfaVBok1b+vuxZu5EBZW4dPcOFFBYY1gILMBNTBsMnOEMiQTuvPruWSOMn8sAH3Q6s8mm6xUH2+a+7PTmkvBP2jNA+tf5AbRTGMst5TsfkP2w0GuOF6ql6P1v6PY9PCGzH2HpGxjaSvxML5fvsueyql5gpVoDgXZBF6sqT6p7Q1hBxfihYAxdtossR6UVZpGTGhaZ8Dzp+vVOI37Nlpe8od5xBZ/oRf8jmPwM+sqWdMe3IMM5XDNiEfuS6ECys0ePnZ6/wgJtIK69gI9u53VB7/lFaIfSShYW4YQzCkvZDJ1Kl0Olb9VikOvfVvm0PzhJsmGmoGP5HES9YuU0UsrG+Kzfgt+5crALw1xtQrlskIWt+a+sqyh3hJLnLT6+GesIJq4DISosl9vSuVWTthWy/N6PW1igV++ZCNwwb8ep3Tt/xX+uYcUO/7iKXUjokse1SMouQdQr9xwjJ4dA0q1OuYOMWjdGTwMvGbNXaci30VmA2F/KNpOOpoUtJ5aB3Kt4gWWCDaEN5h16Gguppw== 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)(346002)(376002)(136003)(396003)(451199021)(46966006)(36840700001)(40470700004)(336012)(86362001)(36756003)(54906003)(316002)(478600001)(70206006)(6916009)(4326008)(70586007)(82310400005)(40480700001)(5660300002)(41300700001)(2906002)(15650500001)(8676002)(8936002)(186003)(356005)(16526019)(82960400001)(7596003)(7636003)(82740400003)(26005)(107886003)(1076003)(36860700001)(47076005)(83380400001)(2616005)(956004)(6666004)(40460700003);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2023 07:45:02.1166 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 858d4446-af2f-49c1-7fee-08db50614c30 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: HE1EUR01FT018.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR10MB7100 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=q9vErNeV; 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::610 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: "T. Schaffner" Reply-To: "T. Schaffner" 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=-1.2 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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 Tue May 9 07:44:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2793 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Tue, 09 May 2023 09:45:11 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-ej1-f57.google.com (mail-ej1-f57.google.com [209.85.218.57]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 3497jBre030696 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 9 May 2023 09:45:11 +0200 Received: by mail-ej1-f57.google.com with SMTP id a640c23a62f3a-969c36898d4sf82357666b.3; Tue, 09 May 2023 00:45:11 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1683618306; cv=pass; d=google.com; s=arc-20160816; b=QAQTFFRhf5ULvFw9qtbl2V1F46kBYatrEizi2yf2piG/ZqYF6i/1IpwX0bwwQsrcb4 4xjoOmnugvNQ/on2wysMzTLxUReaPkkc4mED1uPIfvz+GxZ52nwV1hQivmchAcK2P4HN t1fVnLirPOSOZe6matOkWXkGoi+zRnKIuXHJh+KVri2TfVxVBuE+5EFfE5ruhDAWI/gU 44SD5Uv6BvsMzVk54yzCLBM1Os+tPYxVX7eOj8UsMGvJREB5Ps+RXAIQGIyJUobq4rhW CGmfG5IC30kcQlylmQB0nyNTyrOvRF+M0X3smLL0gWAoz1bRTloQ+w6DmRxwXiJ2Qlsn 026A== 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:reply-to:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=XxPoIIidtwWXDpn/lxHtOrEZapzuWkKDIYcnRJT1Gbs=; b=XZKqMV3+ej2G9BqcSDa09Kgq/ZE/tom9YHQ/fNrLRfjQ3h8BPk83xCyxdkALrtsLWb zqfrJZiRD8FwiO+VaIFJFcRB1voRqgZOP0FY1vIqkjLgBPRW3vcsjSHlUq5KZdAzkbWy AtVQi3FkR0cek9SAcNY671VUYgAX1bK4uq0TyudPQBmSiIlojPMgQLL7ePthP2gsmNKL Zs85W6D9QXg/I0Fzlv9Fz5KIrZxVRgk3WtZmiOaIruKR4R9H9G0t4QUB2GpE5HsX0W5L 7dP7NJ9ujk3bbtvvFKg3+cC02i/N69RUBmzGxL3a4R4i8WwQh8W2fxhYxSS1hGlkYsNQ o16Q== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="QhN19J/z"; 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:fe1a::61e as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20221208; t=1683618306; x=1686210306; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=XxPoIIidtwWXDpn/lxHtOrEZapzuWkKDIYcnRJT1Gbs=; b=TqCxeTFKKvDQor4FAFB60d6NwViVK/DwVu46hWl5Aj1bfABqqBCfjhiyRtO/8H6z0l m1HrPZhrm6t571uaOrGEqsLmFSKVbT5FHvZUDinnXhyFV8mA8iYApSTq7tSZgqs5ig3B +fXxDYxUl28H0JSMHOZl5ujEcQ7cQaFktZF67XN4UPGPWpZgRtWi2fne8wXq7jKnfPE5 PfUD6zMTLAm3UnwjFZuTMffiA5GdxL/uVM4l7HFbht29BBxHXeVx/bv5ObrXm0/UPT/u N2h50RTmV2J7KT7h/fOskUbFsa7v7w/m+ZQl+r5h36iasbnHoOoWzbVjNLY1WjYyB+83 Eyjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683618306; x=1686210306; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XxPoIIidtwWXDpn/lxHtOrEZapzuWkKDIYcnRJT1Gbs=; b=UXZ1GHjaCRxGTvs6e4fjMWLTFGzqw2W52zVDKHKMizfPmEajXcu/X6LLUEht1P/c2X TsinkZObv4xkjVqjuat2/mkRn/5D0l/wxJdIW6XdybtdDxfoQcDYrciA8IiPXZYa/ojo QHaRfBfuD43Blju68nXPjrKLb+Uwj1Z5tAlDExGM23/QAbZapHAqBZEwE+rV7nCA/PeW mqB6Oo53KbddGgfi4djz/06fl2vjJsrvY4xttLCYTVaQZATbE4u3Vu9GvSaQNGK6De5F u6qoQqjRQRk2+LFm+Q59XamnTp8rdNB7fgdCKRZ5tFx9JRVVLG+L/8DO/qiSrO6nzym4 7s6g== X-Gm-Message-State: AC+VfDym0jRSFdFZxySvc4+MYapNy2mL02rGbgyYGVz9P8G/0SDXbqzn 2f20Jc9HciZwxoJ9F8NCJTOvtw== X-Google-Smtp-Source: ACHHUZ4UjcRLrnUZYVO0M9LjC16LF+Dw77rvvvhPPOaMp6Oa/Oxirfhg4AW0U8ycKJuUamqhceFEww== X-Received: by 2002:a17:907:2709:b0:966:13c0:d2e3 with SMTP id w9-20020a170907270900b0096613c0d2e3mr3644108ejk.13.1683618306010; Tue, 09 May 2023 00:45:06 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6402:403:b0:50b:f4e3:a863 with SMTP id q3-20020a056402040300b0050bf4e3a863ls108909edv.1.-pod-prod-01-eu; Tue, 09 May 2023 00:45:04 -0700 (PDT) X-Received: by 2002:a17:906:4fd6:b0:94e:116:8581 with SMTP id i22-20020a1709064fd600b0094e01168581mr11815561ejw.5.1683618304744; Tue, 09 May 2023 00:45:04 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1683618304; cv=pass; d=google.com; s=arc-20160816; b=zqRgIsQBNiPTufGt+af0c9ROpv38H0Jo1oo3cVymJ8ndzMtPPhxGMXbVByVJUsEPOQ VGaXhaJudrrgT6vKhNrZnLsHEIS39FbPVZnyHtNwUrSw2vroweTdkOlI/DLxYSOXn3OS MG04GexAn3s3Qa0zPLiDGNqPZK00xNTCJdslSNm0sawAk5MPY+RxK+fLvgjOPYJwPugd ftvjxIjeIGdR6CCAxVYy/ghUKDXE6t9QJacTmihmPagzcahtC4N2sF8of+5xeLZD5T54 0/B4EF5UixUJpbLmvzDbZuTJgIER04Qu1t7CSm09IMMInJ0o2i9FIxc/cBwKYc1apvJQ isXw== 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=EjBH2EqEornHM5vlaMYrRNGsSt3XOACK3LFIEgj3wsM=; b=NrqUhjqy0mNtzrWI9GGc18ftRwF+idsHS19jk+ZgNKu0BWO/B7ergK2b/f501YClVd XeLlSbh8mSb4xJivCmhmXMRzg/EyOmiEEX3Apt/rELjc8M/OMtWuEST/DSevqw7W+n4t Edq51XfwgVnf8q1q/PDxiuxCsGXb4ErU7AIo5B7KV3IfSBKDEB2sNv9x0udX9VdCvB+d 8BC/cgBzcTvxap1BDVVtmjIPAsoNB0y2FujFwp79bxkzwQXF2HxfUAMpEWbDWCWJlJlA exddGT/HkjqR3AgK45WpqarUxCaMnfkKHcyUMJ21wjQOEgq7qSTRdfdE2UXWS12tz6QL iImw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="QhN19J/z"; 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:fe1a::61e as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2061e.outbound.protection.outlook.com. [2a01:111:f400:fe1a::61e]) by gmr-mx.google.com with ESMTPS id n15-20020a05640205cf00b0050a31d1615bsi70012edx.1.2023.05.09.00.45.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 May 2023 00:45:04 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:fe1a::61e as permitted sender) client-ip=2a01:111:f400:fe1a::61e; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gegnRVBVwqiv73bIY5TASL+jBBtJOXe4Jc+fUcZxsM/6aNKDjXHgkKyZMXABdmhq6fHiJOizqNxUKDPIhrs7bXAFjXGgYlvSC5mSXXNXXIhh+DeNJmAMZO0v+HSki1o7lW9UPNg0QgWkZ1l0ToHZpSgQjHXiRjYYogxSirT2sbHBxsKlNpPPjc9hQCp8RXHOsTdKZXBqsLAY8svACdvJRsdpPH/2zyAd8S1JnPIUNviTg0fANmoV4MPxsnPTryTGVesvNbAXp01wXMWucAC8/eWSheWf24yIiP3GIR1KDmmeTXoRacVMpgLvyYKddTlBnsxGbJHplbG/9y5k2MzHQw== 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=EjBH2EqEornHM5vlaMYrRNGsSt3XOACK3LFIEgj3wsM=; b=aPyAiOixATGGz1TX6JJEtM43p+ExQqqnZlsUierGDLSpt/nMp58e6RcHptFSLx2OhIxHSggwZq/yzfkx8FFytj4fMuhDt63j2TatDP7dPEGR4SaHaisG1Kj6YtjoOzdtBauK4DDWKY3vXhkpDEQrMr89aWxLYuu2WH/gqUZAk5TImspwM/DVy5/PJqYD34NLdeegv38qr4RpKXLDpXPV8rNei6d/tLkm0tRKQTSzvK9j9EOKnO5E2ar07dla7u2zUkSiHcdGnyU5PawipvszYRuUeg3t2IxNUIlG5z6HT8lL9xyZsxUJjLkBUUbIDrtR8mtzFRVcZFOmPvPlyJcmzg== 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=reject sp=reject pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none Received: from AM5PR0301CA0030.eurprd03.prod.outlook.com (2603:10a6:206:14::43) by GV1PR10MB6026.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:150:8e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.32; Tue, 9 May 2023 07:45:03 +0000 Received: from VE1EUR01FT085.eop-EUR01.prod.protection.outlook.com (2603:10a6:206:14:cafe::f5) by AM5PR0301CA0030.outlook.office365.com (2603:10a6:206:14::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33 via Frontend Transport; Tue, 9 May 2023 07:45:03 +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 VE1EUR01FT085.mail.protection.outlook.com (10.152.3.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.18 via Frontend Transport; Tue, 9 May 2023 07:45:02 +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; Tue, 9 May 2023 09:45:02 +0200 Received: from L15-Gen2.fritz.box (139.22.36.202) 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; Tue, 9 May 2023 09:45:00 +0200 X-Patchwork-Original-From: "'T. Schaffner' via isar-users" From: Tobias Schaffner To: CC: , , "Tobias Schaffner" Subject: [PATCH v2 4/4] set minimal python version in user_manual to 3.5 Date: Tue, 9 May 2023 09:44:12 +0200 Message-ID: <20230509074412.86392-5-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230509074412.86392-1-tobias.schaffner@siemens.com> References: <20230509074412.86392-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.22.36.202] 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: VE1EUR01FT085:EE_|GV1PR10MB6026:EE_ X-MS-Office365-Filtering-Correlation-Id: a7bdd2b8-6d59-4ceb-0f05-08db50614c9c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KyjgvZsgqkwXopFVXxIA6hd+FhVhYUi8inVB3dINjNpKD7DyO03lli5wSE52gWJqiBDzcIwQPJAKG1riY4vk45slXwWd0WHFEvvplRE/SDRCdP4mT3rxV/VoLs+l2vc13IHYWcn6h3HtcuwvSpjOAECS1rnqKhMdyP41GZQo3jri5USP/8pj2DynPv2ll5fRW1K7ouqDKjOz1yhRITXsECkBv1J3qnQJHPW2NkcULqIRTtWrdQUp1USC79zH86YoOoV2U5GQmorr9R/+LWPGcV3LJTD1h7iT7NraN5fuz6e7r2cmIzr49Y/wep7KgaHJh/RmuydPyEwtb+ur9mdP/vW0umpmELqt/0bI3n2RyBamw+t0zFw74gDF5NJehoaLlg0UXvDJ3hTIo53WrfBnbrrT7fc+NSmOwT16ZpFlL3/lqYIqO4GjUd/pi8MwyZZldgVmnE7IqgpjE0ILr63wpZztZUmBL0a+q2mLcTTsPxGkMR73ivL6aL+CsmgFyelbdgiOcNMOiBe+39DIScDLENBpUEebG6DbGWWs7eW81AuOfK5px7AsvbbQYV4r/1Q8+Xr0M2txOyU9SpP6ti5s9AP3VuHu+GFrysulxusDP/dv/CxWiXAWNVkQnPVlRQTWM4x3uvKLEx2a/DRZd3BNqfckn3x+nyCIw40QQ9zikIqGnUIF3yiLf0m52U37BqWR35e1HEUNHoHGOk2nvijS2XFB/EoBt3rQybVNFvuTKfs= 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)(39860400002)(396003)(136003)(346002)(376002)(451199021)(40470700004)(36840700001)(46966006)(86362001)(36756003)(54906003)(4326008)(6916009)(478600001)(70586007)(70206006)(316002)(40480700001)(82310400005)(5660300002)(41300700001)(8936002)(4744005)(8676002)(2906002)(356005)(82960400001)(82740400003)(81166007)(16526019)(1076003)(36860700001)(26005)(107886003)(956004)(47076005)(83380400001)(336012)(186003)(6666004)(2616005)(40460700003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2023 07:45:02.9868 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a7bdd2b8-6d59-4ceb-0f05-08db50614c9c 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: VE1EUR01FT085.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR10MB6026 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="QhN19J/z"; 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:fe1a::61e as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: "T. Schaffner" Reply-To: "T. Schaffner" 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=-1.2 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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 60b7ca92..2b1c2e26 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