From patchwork Mon May 22 06:55:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2821 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 22 May 2023 08:56:07 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lf1-f62.google.com (mail-lf1-f62.google.com [209.85.167.62]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 34M6u6UY015504 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 May 2023 08:56:06 +0200 Received: by mail-lf1-f62.google.com with SMTP id 2adb3069b0e04-4f19bffbc23sf3228594e87.1; Sun, 21 May 2023 23:56:06 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1684738561; cv=pass; d=google.com; s=arc-20160816; b=nN2jaFLToBnYWgSPFwuC0+V9ydfi6ftJ6UAgAh+mvzO1FRRG0PCoplB1DhpN4Cy+Kq poAxecqEyHMjWSjo3knTpjQApEouCzg/V+PBb9UEIg3VigMW48rMxDasJqAJBxiQDRHN 45LoxIuQarVEpAtSgL3ev4y1o4f/+wHb3EmuCZlJmB6WcOLffEDgCwQIFkpkPK1bjsDV I5H59e0J163WJUbdrDgjt354x1QSWlctrpmysrLFEax5ldARRt91+O+4Rl9y6xH6RlJq LkZxl8IolmYvvErF/PU25N+6Oca9+evhfLuyTacez5nshs+c4UeLZM3eaFfCFdkD2gD0 GDbA== 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=/UYm65THGIOi1lXnwP7WiJL9tqHfzdkxxiPEMxLgNXI=; b=r6k6BKMNtX8u2cWo3FOgssypTn8ffN1xmHI6Jf5RrxKY7DkglSilT7stODVefobD4O 7McHA0lSAEl90qGcK2KAFndqATzs/gZjorYfzDEnaUG3COwkdN+RUX3QhAXgz3b1C4kf x7Omg4WnSC6DHlz4guaG4Hh5ghlKStGHxYJbojV/a30zOQm2cawjjN0ewvpYnXCbRWf4 C43w8K6r32hkT8DyYFkXwgr3Gvm7kDpD1DOc+CmxtmAczt4dnql33uHp6jMAtUHY8QAU 0aDqoLq9gXPdUJJlICa9wEqwKsQJn/afpQMZD3f+ZFX90dXN9oa96TXvJNuwbAZ3JpXP 26YA== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=HJyPacEv; 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::608 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=1684738561; x=1687330561; 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=/UYm65THGIOi1lXnwP7WiJL9tqHfzdkxxiPEMxLgNXI=; b=cxZBiEXLvmweDlIgOPwEnLI2NhkScG8WQzGx1ItDxTRtBul4pbpaxubNOHURH/2uRq /4obmiFTOCLQcjTa32mZmqkhUZKQ05nyKpf7L5dA5258Xn+GT5xznLCRXF1yqo9IidTu qp74E6ZugJg+EBVI6WiT5g4BFlnV8dUShSSPTxctFe8bvYXmhUMaIyMMlr5EbNqClLaG 5nbK9sRAPD8Le81wdfZO8VdOQiLNf4PAH6llZ9kD/UzAZjqoHyoSeKu7crSLcqpH1ANU cbNT7broOiY+AdBFn/5vEgxzUnLmeCZyjMkkd8xkj7cRXT0xel2txUyYAQe7QRVnO/xm os5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684738561; x=1687330561; 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=/UYm65THGIOi1lXnwP7WiJL9tqHfzdkxxiPEMxLgNXI=; b=kldzq8QjU+HAPnqHs3qqeHnZGwexyTWzhPWvljEPEP4sqD8Mfo1XazGgk5XIAaSObr M/vAHFq/Je9VnHddcefqcBIhuZMy7EKGInSJKjYdZtX8MATtkKpFQjTnR1zeVcUjLqQ7 W3dqOt4XMWxc8YV05A0upadFNP0n5CGdldBM5+w3WYibrJmLp068eB3vzpAtdUqvA/q1 JIPxHTwAXJ/1J7omqz0WHChWGYKeVIgfIC/bwUAO5OkitH/NPueVrH8GspwtkmwfZ3Iy cJ0mFCTQitZ8/71jWm8HgDHO324pzzNU78X/VMiodZYv4lR78EZi4LigfEipk68X9tNh oGTw== X-Gm-Message-State: AC+VfDzGwREqYX2a9YD0zbw4sGvpOjbDFDYYD4yxgtXhUgfSGgzksTQG 4iwdwdP7RebjnzIKY0/kk/I= X-Google-Smtp-Source: ACHHUZ6d2QOMhSwtSHM+9AANOoRP6pYvmJlrDcB8OyJkYtpcfjq9qzXUMji8TO7thSUGSspfd20FDQ== X-Received: by 2002:ac2:44ce:0:b0:4f3:a9f2:f874 with SMTP id d14-20020ac244ce000000b004f3a9f2f874mr2322134lfm.0.1684738560888; Sun, 21 May 2023 23:56:00 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:651c:545:b0:2ac:831f:b82f with SMTP id q5-20020a05651c054500b002ac831fb82fls48349ljp.0.-pod-prod-09-eu; Sun, 21 May 2023 23:55:59 -0700 (PDT) X-Received: by 2002:a2e:9d02:0:b0:2a0:3f9f:fec6 with SMTP id t2-20020a2e9d02000000b002a03f9ffec6mr3769331lji.37.1684738559527; Sun, 21 May 2023 23:55:59 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1684738559; cv=pass; d=google.com; s=arc-20160816; b=a39ConEgF6yCyt7NpkNpq0oCjPWyqC0tQV6/IQhzfCNr3O4IoC9mKs4JXUpCYxmyE0 K3+VtFKPlRj7Uus+uZadqBDbXct17Ofa2jClVl1jjgMFX9maT4VXE3ozJksyUucMoWT9 JM1N12gxkFBG89NTKGMJoyHLktsnJ8juKFLZ1e1BZkM8BcE85oC+Ur9mySz+uqbi0bW+ pesn2B6TW6r9yDT6zus+2C1gCaj7+JWjbDhMF9Ml7JT2wOTaCfS6YRtHKZka8m5iPKq+ ngPrtZvpP4eu5o7zgiLJ5kGQOy5LJ9dcmIUEpdW9eIe4pdi6+BBRsfglJJsqyL6HhhcJ L0Qw== 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=EexWQs+iqzfAHsMuMLN2st82VjDu97uRawPLPMDrkGo=; b=TI3hXTbXDaTsm0DEbg8lhBe/hggObQOMS6wOr3ZyiJt/Jq83pmj/DgbEDmnLQ3HnkJ cRqU0T+Kk4jzfA8fphallpCWJ3ragBjAI0JFIJsu4tYb0AKlOOST3EGyVVMwa5lopqnq t7GUIIlGQxXZVjVk7i94uq3bfuGCox/WUeEaqoTWDiMLwmC6In4XGqSzU6d1g11bP8iF MoYaQC2GFdWW2NczSgH30kSnjF/f2cUKCy+3QkbxQe9jtDhH50ZVNj9XYQ2Pb44zxALY eQDN3EKBQbskPZfDpP5A1bzhDg1CGkYakfzzayq1bjNqpIaeMRDLAY9eFwEUptGhUMSX UgxA== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=HJyPacEv; 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::608 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-am0eur02on20608.outbound.protection.outlook.com. [2a01:111:f400:fe13::608]) by gmr-mx.google.com with ESMTPS id by12-20020a05651c1a0c00b002a77f4969bdsi343223ljb.5.2023.05.21.23.55.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 21 May 2023 23:55:59 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:fe13::608 as permitted sender) client-ip=2a01:111:f400:fe13::608; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QDV2iHaZ3pTuO5xGRwd8D/+3tCJBjp2IjFiy7tlvmdsrWo7pKvPztYf48UTn6UNzkhohIlc5h5P3r98behgqU9QROCZ4/eOkP53GmEXss1o2suZx88NjDjW8Zvj6ANB3ulOMwICuw1QBf63wmYYxBuD8TYKy2WQGExiHkXb9vQPowTyEQ3cQu5Ha67DZJsRlEF4yWdKlg2fxuP8TP/0noLl2HumIVrTxdNPrwz94yO8rjtXbRTwjAY9M7d8cwcc36C9zMAviLQmBZuyEpaBY0y8Q/N+n8+bUFp+j1WEY8SiCB3fFEJNa0+dhgO45FM/yUnGXQnKz3QyM1aXfWj9H9g== 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=EexWQs+iqzfAHsMuMLN2st82VjDu97uRawPLPMDrkGo=; b=n6Mf2H8z8iQvC48gKmsROFAMw4hr/vNVsuyEeM72Z7vHlev2BXCI945ojGFEm7jN6oYNXn1cwm2/UUUMRrPzgGQTaded51IqfwJqj7bc9ZUHWHlXBEUXf9OD/s0yIV+7PkxftWLg4exGZ6EjdAejCHb2HFwViy7tenu32sf6PfucIdNsqR3RdR4hVHXmLOY9KFjkItm2pH8Q5Mb/aSziX2Bn/jCK0L5CYU7/I8bi99xZc0Etupa0e1+OxuaNTboe5/aGblMu7o4J98oLJuxm+nXvs925aJwFAFCvYGBeIUexcbww6U4UxapgnYFbhNIepLEcQKr0XDBr1S9x6XMBDA== 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 GVYP280CA0045.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:f9::14) by AS8PR10MB7017.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:5a4::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Mon, 22 May 2023 06:55:57 +0000 Received: from HE1EUR01FT065.eop-EUR01.prod.protection.outlook.com (2603:10a6:150:f9:cafe::b2) by GVYP280CA0045.outlook.office365.com (2603:10a6:150:f9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28 via Frontend Transport; Mon, 22 May 2023 06:55:57 +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 HE1EUR01FT065.mail.protection.outlook.com (10.152.0.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.13 via Frontend Transport; Mon, 22 May 2023 06:55:57 +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; Mon, 22 May 2023 08:55:56 +0200 Received: from L15-Gen2.fritz.box (139.22.37.93) 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; Mon, 22 May 2023 08:55:55 +0200 X-Patchwork-Original-From: "'T. Schaffner' via isar-users" From: Tobias Schaffner To: CC: , , , Tobias Schaffner Subject: [PATCH v3 1/4] simplify image-account-extension Date: Mon, 22 May 2023 08:55:28 +0200 Message-ID: <20230522065531.2300448-2-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230522065531.2300448-1-tobias.schaffner@siemens.com> References: <20230522065531.2300448-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.22.37.93] 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: HE1EUR01FT065:EE_|AS8PR10MB7017:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f341c1e-b43e-4b49-dc5f-08db5a91983e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qL+hpBwPMlKE7vXdQpNCfYyoGzI01vZoqU/hnFmH+QY4ekrbTgyIpWS3w1h/zGfHgwOS0B7j9DnWqml4NxjDbqnhTvBu9ScOIrMc+QxMzOBEQoOto82HvV2gEFOoqzJkCYaX4M5J/GUEHF5dU5ft/lfJu3/wdrh8uATNIpRae3itffq51ERcyEyV4p05mjYodJYFtQcxSUBQzWBt0opWEo+WSHLNmfo6+EojdpVTcNRqbhEszEFRaol4OJIVakqnG9bmKbPRgzZUFr4CZ6upfUuJIpEAyttIPvvFmHM3MfkrBa0HDaY7yoOnjeTvvMvHRnnG03N7GZaaL0epSat3YoSNE216Qwrqf9XP7zC+lRZKWYY/t6gLEFMvWahM+8TfM3yW3O8RVNKnfqZrl4l1vpfH+HBBfBqlZEyAWqmamx5RAZ0AFtcyO8YBpekAABZ14gXrex3wl3py95aLqrml9DkVQPYWKMy4TU1wZfhwiPk/87JAzLAt3TeCAuLHw5AlK6IkhmKdz0hkjACLXDQ7QL42VbHzdQ/BQHyMFIL7FjIHBQKeZTFngf5vYIHBmIULNsLS/f7yZJWe0h8OvO5A6uiClavPKBBsFCi87uv4mvFdZ1bTnvY+0i4V8xFfvF8I0mVmhDSU0xofP46ocsmSwkR/6eZIuuyoXCHPpJmx3PRShSF9dhpBzCwiPVEAxji6AslC2OAF3fUI2VDc5jqY/Xf7GwGc5h4Pd/gjrI4uAZ4/OEkmMX0scHNUpBJk+Q25nZAtlw6dkQaozjYUYBInwg== 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)(346002)(376002)(39860400002)(396003)(451199021)(40470700004)(36840700001)(46966006)(15650500001)(5660300002)(41300700001)(82960400001)(40480700001)(82740400003)(6916009)(4326008)(40460700003)(316002)(8936002)(8676002)(70206006)(70586007)(86362001)(356005)(36756003)(83380400001)(6666004)(36860700001)(336012)(1076003)(956004)(26005)(186003)(16526019)(2616005)(47076005)(54906003)(30864003)(81166007)(2906002)(82310400005)(107886003)(478600001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2023 06:55:57.3068 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5f341c1e-b43e-4b49-dc5f-08db5a91983e 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: HE1EUR01FT065.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR10MB7017 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=HJyPacEv; 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::608 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..5080202d 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) + + if exists: + if args: + bb.process.run([*chroot, "/usr/sbin/groupmod", *args, entry]) + else: + flags = (d.getVarFlag(group_entry, "flags") or "").split() + if "system" in flags: + args.append("--system") + + 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 Mon May 22 06:55:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2822 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 22 May 2023 08:56:08 +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 34M6u765015506 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 May 2023 08:56:07 +0200 Received: by mail-lf1-f60.google.com with SMTP id 2adb3069b0e04-4f3932e5a4esf1722577e87.0; Sun, 21 May 2023 23:56:07 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1684738562; cv=pass; d=google.com; s=arc-20160816; b=mPV451T5+NnxqnHtzj8ppwDJiUmSji3lcPUVt+8iwUf65ookJeNohd9c4wArIJMqDB a4/uV0lZ2RJVMyFJZ3RQZnxWJeYGrsyb7LE2YufBuZleefzvVWIG8xf8W0eYBycVN2Pi VaflIwXPSieozICoK+jQIFtBiGP1DNMDROQmY7S6pWBVxUq5eJxyC7H7wbfiHwoSf0Ez yS4FGc1o76WqM4K2UgTB7TIUIWmHGnzdkW4yeG5V2mf5WseQRXqEwJryS6YsAq5jkpto jrCyfuvUKoG3PklxK/99Fmi1+xUzEIWMV8s9wHug3C04+2IUI4+CDBqO2xh2J4PIwqIF Ppsw== 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=GVE2YpHqXiG2TcfEgJbnRNuD48o4ZFuJOKNRMFq3KMc=; b=MYUh7tBGjvmfl2WDST8kvvK/sYjZ3QqnQEbdv0yxrequeCPgSgQW+A2Nn6kbssjVy+ VyIMEJDYab96LIpml2wOgHO7g50DcEOuxvbVz5UmTw/lNwRzFZDrJFeVqzCFXNJZC/co vIaN6cDwP82WHnQ543x/f0NS3dzzLYTumqXLXCx0BLCkMUZUwaTnpYGuXfiJy1zLd3Bt /j2cBhAalRtPpzcACDDzDqcmABJS6G+1+VB4kHjwX8ZihZ3tqM5VH59/g1g6LugSX7IJ zzjohGUnJZ88ef72vJ5pSn4s9+cQ2mKBprhrcV1fOVgIiV0K5mJu1aM1IyXLVoXpqk8x Aksg== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="yD1/oZxC"; 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:fe16::626 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=1684738562; x=1687330562; 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=GVE2YpHqXiG2TcfEgJbnRNuD48o4ZFuJOKNRMFq3KMc=; b=NnZQRvwh+sXeTyfSafdJcF2hdADtX0mKO3CINjuE51xxMtZPJI62uSPbKCibtsLbnM rpd+LI5wTtbTspycJDkxxAwD/9AJ74ztKFn+JZmpSLFvE64x5TfiEdXKTDf57Lzcb78w D4XN7JfW7GUxA7I1TsgsDt9zcdDsyiwKyVfeRxrKgDQkrG1wKiI/H4HsGmjh4v1bb6Jj UAkDiKJol0FvCmcjTYpRf6mrpXCYrXsFZdpr3ZKl7MNVv2LRvs3ji6S1WkjAyOdRGz4/ u7ynNyql5My3xIQ6FJ2DteYfI93aTqnzc79OCXhRpG1wuYxYSuM9lw70IruARsSh+dWE i1tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684738562; x=1687330562; 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=GVE2YpHqXiG2TcfEgJbnRNuD48o4ZFuJOKNRMFq3KMc=; b=fYpAwTevLjX1Vx5goHo9f4kKFxsAZgaTYSzri5vMgf0J1edYT1EA5lzwSb56UMBd2R Z0eZoOxEUMyVTvrhsXp2B2WTmd10pUVfeXSxaXMLWcKZ53WevmhJKpf5Wlv9szzYZuCN MbT1JK1IWVGYSTmzzMSOKWLdr1DG7H8eFuTiSPlejm0j2ZgFniP0pAGDJP6kek/Fy/2G KwHIl2y8bFULUdeniug3xLGFC7Y+8fq1TnxXyeptaFIw2mNmJdwcHfynvEtXgYo35dcI pnvu4WFcgRgC3kqTsgNHTlFP8/GPpNNOaU7llmyVqHUZDjlZawxsG2Ho3sNyodQLk0zQ yfRA== X-Gm-Message-State: AC+VfDwExFge54yoaiNiIEV15zXdraL8agpBpfcWorZZkXbYw6a2x90y MnP4uxNtGWvCJ0ft3Snrwew= X-Google-Smtp-Source: ACHHUZ799f2UwBduzzoYywEI4jTM+C/iqanrA2yFCWm+3E2p/cKe4k0AhOiRKvCSR9ztVSLFl1PerA== X-Received: by 2002:a19:f00a:0:b0:4f3:a7d3:28d4 with SMTP id p10-20020a19f00a000000b004f3a7d328d4mr2346364lfc.0.1684738561994; Sun, 21 May 2023 23:56:01 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a19:7715:0:b0:4f2:5056:2be with SMTP id s21-20020a197715000000b004f2505602bels871657lfc.0.-pod-prod-04-eu; Sun, 21 May 2023 23:56:00 -0700 (PDT) X-Received: by 2002:a05:6512:146:b0:4f3:b2ce:7a15 with SMTP id m6-20020a056512014600b004f3b2ce7a15mr2693678lfo.29.1684738560607; Sun, 21 May 2023 23:56:00 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1684738560; cv=pass; d=google.com; s=arc-20160816; b=hFDCK0sYuKNSWsHFvh42tFuKGD3nXM41FV6FvpDcIh9O1zwG/M1gaegKzCk7upfmFK VR5rmKsNzVvg2GE3XvxZgFszYCqQnj8evfPEA60rdv5gh4WaCw1ti3aIX5ER/XMJkUY5 nZSCCABb04AHpS/smYcOXsPg4Lv9rrjC5uLYl569M5Czq2ueJkaK3IL0PQWlcvUe2VnR V9SFYkLvFcX34zgHcijSWwbAFEAplHBJr3L/KVcc9KcBeNpBgBm76DDZBr8KZh+huOZC n0PJxaPw9Eu6dkJA3jYGR4Vxppn6SFLvnQZgrc49nB5FTbi0fI7igDqpScGM8keoRoOR OGNw== 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=Sb58tk+P48NT0xhCu/iU3/k9GW5PNRR0rLYWN9BJ/mtQ92PmplEyuJhdE/s/ZuxgxL JAH5K/s5I8JVqgHrKC+bY/EydMrVP9DlbsyycJc11hEBj7RjXwQm1E/vxzqo+zX9+qeK 9eLDKovqmtBJAnEb4seXBLRnavq5DeJa+7Vzj4biorpdFQ8K8AKiBQ6FsJk1rrC+PTOi Ux6Ej7qdgHcDBJToIaXtF4VnYm+wP3Ywuml9SAGsQ6qeWob7m9ChXHrw5VlBOrSX3+/p /h45rXUWHU4zn71FsWlDLmlJ6jqEhtQIdjf9dLhfXsZmJdHc9ISiTn/2L+Rk+5I1DI44 Kg1A== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="yD1/oZxC"; 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:fe16::626 as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on20626.outbound.protection.outlook.com. [2a01:111:f400:fe16::626]) by gmr-mx.google.com with ESMTPS id o15-20020ac24bcf000000b004f1371664bfsi407380lfq.8.2023.05.21.23.56.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 21 May 2023 23:56:00 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:fe16::626 as permitted sender) client-ip=2a01:111:f400:fe16::626; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RHMcbnVY2EODO0qKkl32cmq2RPDYnSxDLDVVkNFhaz48MHuFyIDVrPqwBH4iSZOewN33ghd8wy/cs5uUiC/zp08rZfym/GVB8IXK8OzW0tu74FFZGXSyUrjmRn1WSQEPZHGX2BCBQfjtQv1itpwJeRH2pt5260ohRQY97aBouYM7SNImh16jzsN3vCuYnzrcqxhkrwNKyXy1644l1uW45bM7SgrxEH2HFbNQBuNoRkbT81v0QRGflNgeNPfi3+faNzQNGCdR9vtIeLDZ7DwGG/SGAztAKyqS5aBD8aebdZM4DjMv2ASnFGbUVJ9iD0zqe5/kJZfZQiQ0s0UaKMmU1A== 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=nZhjB3Qp0kwsLMYh0JrrzQkt3RttEwxMxDO+L0vsBWhdJx/8+MohDiovraazHR42Ef4vUNeR+W4/X0BP6VQ2ZUILaygDe6d1I6zRZy/V4NGzzEcH7xFzM/YumhHPBHpElK5oYWM9ht+9Bvrc83k5NrxyFykXxjMKruH1WwEImP97QStOm43qMxt7w9xd5zN7GJNNPCcGxzXO3KOaYLYxPyH1NGIt92ho9Ik+e3N4rCyKRNYNqVdskkrjBar5Byy8KKnAVf351RRyB6PwHSDbRdzzyGvki8xJUMvVsoQEIMjxYbLCEY1D3M9mOMjdPoGjXJyzNyAWhQ0YV3b/pikdng== 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 GV2PEPF000000F9.SWEP280.PROD.OUTLOOK.COM (2603:10a6:144:1:0:1:0:18) by VI1PR10MB3197.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:13c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Mon, 22 May 2023 06:55:58 +0000 Received: from HE1EUR01FT102.eop-EUR01.prod.protection.outlook.com (2a01:111:f400:7e1f::208) by GV2PEPF000000F9.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.6411.21 via Frontend Transport; Mon, 22 May 2023 06:55:58 +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.6411.19 via Frontend Transport; Mon, 22 May 2023 06:55:58 +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; Mon, 22 May 2023 08:55:57 +0200 Received: from L15-Gen2.fritz.box (139.22.37.93) 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; Mon, 22 May 2023 08:55:56 +0200 X-Patchwork-Original-From: "'T. Schaffner' via isar-users" From: Tobias Schaffner To: CC: , , , Tobias Schaffner Subject: [PATCH v3 2/4] create a minimal python unittest infrastructure Date: Mon, 22 May 2023 08:55:29 +0200 Message-ID: <20230522065531.2300448-3-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230522065531.2300448-1-tobias.schaffner@siemens.com> References: <20230522065531.2300448-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.22.37.93] 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_|VI1PR10MB3197:EE_ X-MS-Office365-Filtering-Correlation-Id: ce035dd9-8c74-4228-d503-08db5a9198b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XShwAA6C5ZvM55QOzjyXIXwiasZMd8sAdWqdZIpwHNoK2EqBnmzr4OIdfDs/GPQxTKgFy35ewyyFw1ptZBQbb9CucSo3nru+pincPDsgdBzWgmZfPFi5ktlFaNZ8rzln55xg53kFYWw35E2sxCRPFu9tOcUR6oswlf1EzeImg3gPXz3X2birKOpX4BRaKOFPOTru5Gto72mj6rRHEetGgfyicQGWZH5JbMXh1MZQdJHblNnxoHM9MPuoSe9PL+A0ZpConzi9vKIa6ivtvppG9wTQGnBIpr/8rX/4mLBlRRb/E+U9owXoA6qc64hjwhpmzFyRL4Nkwd6LNfkFQuj7EO2jJqq72WtdPYs3W8e3t6l25R1H6EB+vOt3IdvvnSSsCMRKnTdIM6LTSSlMaDg+aX0GH2DsAb0C0EeNc/x0UIcrYNtOwRmzjfnJzTqNqV7IqwYX6HRGuM7DlAhK+dUEkoq2GOB9qk9j/ScOIQmQ+flLg/IA7v8OmB24bhQpV0TJ2vnF09kwgG31s2AG5sqom2Ly7+bi9wjBuIvud4fjUDpoV2TgnwIz5kWnDjJAJRncSAHVJh9t1R9fe6wflfWNh453lL6Nq3BH59ogkGNFNTxXglbIhXyyg/AwITTHql2/bR5LemmpWXABhAugGIljnG5UCyLaCcvONW9oPlwR1P44zgF0yGmVuOLznAvN+JoyOJ8yepjy2K2t4OyaNvOm67byBqrc9NOAb0NkcFQ5gCOh4quY7NjrpMwQeacRVGrgVoFIpQp1KZvXARwvCCmIUsuKxGXm0lHTDV3lzWqgkaQ= 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)(136003)(396003)(39860400002)(346002)(376002)(451199021)(40470700004)(46966006)(36840700001)(8676002)(8936002)(5660300002)(82310400005)(47076005)(36860700001)(186003)(16526019)(107886003)(1076003)(26005)(956004)(2616005)(336012)(86362001)(82960400001)(356005)(81166007)(82740400003)(40460700003)(41300700001)(40480700001)(6666004)(478600001)(4326008)(6916009)(36756003)(70586007)(70206006)(316002)(54906003)(2906002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2023 06:55:58.0709 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ce035dd9-8c74-4228-d503-08db5a9198b4 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: VI1PR10MB3197 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="yD1/oZxC"; 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:fe16::626 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 Mon May 22 06:55:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2824 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 22 May 2023 08:56:20 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-wr1-f64.google.com (mail-wr1-f64.google.com [209.85.221.64]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 34M6uKEd015575 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 May 2023 08:56:20 +0200 Received: by mail-wr1-f64.google.com with SMTP id ffacd0b85a97d-30a8ba2debdsf294050f8f.3; Sun, 21 May 2023 23:56:20 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1684738575; cv=pass; d=google.com; s=arc-20160816; b=RHoSatMfLobJ9AUBTOA6XSdU0sDzTFYiLpZsg9OYSdFihxPJDkONySRfoZqUMy3c31 7EZ4fHhn7wVilw7R+IYyydGeUV+SHGwvJsTq6/7Q3GCzjTylFf6nlpkoSZ5ojKFsyvnf +vRZR+O1NNPGsNp7272XHaFzYHrrO53Na5TF+M7HpD06N2ronDqzssWbi7puR7gaps32 t68SSQ2jMVu1Pbcvj2uOylBJbT1oUaekvNyxIomT+dKHxycYN5ykgaJKyk2ZoMcXPJo+ BBndGxPzHFTy1Zi/VCSI6u584EDaha4xdJPzZxsn+O3UFsXeD6BuyjMCRmCgwRkQNu9i BOGQ== 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=WHagoh3SH+kt5uRDP4VTZMWWTK8Pao5CznHAQzGYatI=; b=gd/HHJvxhRWH7pgsvY8T1ETktZqTMavmad064hFgghYQvVC+PRLQozNUbo46raYbNG jHVxCEcCzERS0YWC9DmJHstduDKEFrUhj9R3IjMdeDcECjYcD+mMghZwU1HQAvnN5kyU Dk0G1Za8pQOhPeK9By5BN5h+Wa3ayAginmvWH4FwZdMwPeM8NNu2FHlAWmL2OkISsrp/ 6uhUzMl34bLEHcZCbMo3c0xQEYFZOWhH6ZI8E0ABT3g6CqZ+NZyZhCAbstLZ8Ws8em0P O8tPj+gaGe4AwiyR6g2bW6oKHWEp+EgBTAFoaoOr4DliYWGpiPqBQ3pBiqApQw5+lYEL WYUw== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="DBg4/A82"; 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:fe1f::61d 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=1684738575; x=1687330575; 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=WHagoh3SH+kt5uRDP4VTZMWWTK8Pao5CznHAQzGYatI=; b=GSmkY0BEUlnlQ3LOeL3P3sURJR2pzTqNOFaDOEtYroMdEn1DGznCjBXpboTNwtl34x D1QdoopdUmpKHA9Fh32IPAUMvBO2aUOPMrLlffGJjp/waAf3147jKnRF3v3JeRpkSHVK elrKBNIqwQk4F2rW5USvty4ZaaA+hw6b2E0OsFRAeial/0qy5n9uUtbJVEI/5THpmjGJ yr14LjrKoZDhZQFxXtWSzcb4AMacZzMtJ80HCdQ1bt7atq9eQPTXwikb5WbWWAQLq061 S9xtYYEVl4Eq6Tmolz4/7iA6SGoS0T+e16iySvCKIkaB9583dPvvk/us1UHQg6o1acj4 eEsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684738575; x=1687330575; 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=WHagoh3SH+kt5uRDP4VTZMWWTK8Pao5CznHAQzGYatI=; b=UfFQa7AaEAXaiU72XdlhtESDAxIxTekaSDbeNU2ZOB1rFBdiV3j0RhYs5c3hl6/snb j6bzo0qnPLaY4bKHnsyh8TisFMNvuKLURbGYXlkBmKRgkZEP55KiIVYkG/wJtjU4LgrF ZweulkL5M3ff2IvW44RJUKG7qiANZesVMMJH2pLvVbmwsmH/inr/yAuDlVxlMiBewPrC m7KNv+JEzdyrrZzwKuqz440/9xqMvPsuBtBx6K7IlPgaLvP+g8SG4pJrLQ640iL7Eg7v +TUDreIHk7y0TxhQEWWyrAp84KA9+NINxfORB8fN71b2/NEfJhH7M8sFh/aNlYF2u9V1 6+EA== X-Gm-Message-State: AC+VfDzenRWN0kNxi9c4PY/4YcEJGhlcFMJkdAr7Qv/gIHuI8mvGUXep TviWmq60A4/cmKvOnLXVNU8= X-Google-Smtp-Source: ACHHUZ5pl9b/jLGgmFcKxNOt6qJlbl7ZQtaELo4lzJIHNPqGHwrZlMnGychAVCAdCi8ME1TPY33huA== X-Received: by 2002:adf:f108:0:b0:306:37c8:c03 with SMTP id r8-20020adff108000000b0030637c80c03mr1163598wro.1.1684738574369; Sun, 21 May 2023 23:56:14 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:600c:1f14:b0:3f6:4f0:b68 with SMTP id bd20-20020a05600c1f1400b003f604f00b68ls345278wmb.1.-pod-prod-06-eu; Sun, 21 May 2023 23:56:13 -0700 (PDT) X-Received: by 2002:a1c:c911:0:b0:3f5:772:f333 with SMTP id f17-20020a1cc911000000b003f50772f333mr5937916wmb.4.1684738573010; Sun, 21 May 2023 23:56:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1684738572; cv=pass; d=google.com; s=arc-20160816; b=jFLzZvHuCLYjspJPYXRrqg6xgLxiZqdzW9XgA7dgcQJG68i8PD0BQruwHFlUWkj37R 5f0Ww6TOg9TX41hmegV8BJUvgrnl6bR36FoEOj6tb+VSpBCpD9akr+u/8KOfkocQKJ1J 0HaABGOuXn/W4c9dRX7D3vJoUfQgDQYOZWUiXujZ7QO/p/rXYvIOUDL9Es6dtv+mwjav lL+arpEZkCv4ZWRQlMVsSBWo22xywKJNhh0ISp59Ea/q2hROXLprvDTHaQ7gGBn+XG7o 7WuaJERnRibqgNg+zq3c+jUpV0JzH35ii+c/F1fg7S5Hpq2hNr9Cn+/Sn1AiL0xQ0Csk T05Q== 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=PXLFACKnECamQJKvcDOxZB/I8bmMb7NEPNGC8FxrGo8=; b=cTQhkuLLNf/ezfBQpjYuailFUNPHSE416WrUrGpZvnswI8ubJzoJf5UIyvjnzqoYcB rEptwk9KgKnbFMuALgv/XZpk6pgZt08dJboroHk3HrGw5P4RfeA1Qahxjpuhf8D+PtWX 0ZUrz7iOdMJRmFhM/62H5ZjPm7w15/M3KvFfNiWDaCTMzD5U/v9DgVRDCTGemtpqP7Lp Ccp49a1QqqIDkGG1fhTobm4MhERdlb6XkvIMbFOpHpsN8lqOwO39JlOp6t8AKG0/qm2t wCjDm1oeIzGbKGvbrAn5ORtazSpw/i68z00ifeYXHMRa8RsBV7Vjv1ZwXKCBEtjy+oRi 4iHQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="DBg4/A82"; 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:fe1f::61d as permitted sender) smtp.mailfrom=tobias.schaffner@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on061d.outbound.protection.outlook.com. [2a01:111:f400:fe1f::61d]) by gmr-mx.google.com with ESMTPS id ay7-20020a05600c1e0700b003f605aae39csi111671wmb.1.2023.05.21.23.56.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 21 May 2023 23:56:12 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:fe1f::61d as permitted sender) client-ip=2a01:111:f400:fe1f::61d; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CsUaOJXuup7mMbplX/A7drptZNnrCX5AiUYHPp5TJUcnd8Zb/YfsnvZVp6lf9CEXqjifqRJLuE0EKegfHOgpMXcB24zaamedO6zzk2rZjWR0kFMJaoUm6p4zenaPfCWUyKGN9S2T45Keg3GL28RRRnP+RvAAQ79PE0blgpIL/YcXvHdzJbBF75Ha9v/TzB7vDla7cnZyXtgZmYDkJLxrS0m8WOcL0vIq98vWONc/yq+crQ9TRo0xC3S5kmBMbPPAZBZXfUWzDX1tbYbKLaQzH65T36dPW8PG2kyKgcWAFSNiglnmBgxY3itzfDw3OASnmgg4a1eFYK7NCJ86jSnccQ== 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=PXLFACKnECamQJKvcDOxZB/I8bmMb7NEPNGC8FxrGo8=; b=PSfX/XAdUBVGDC+A03buzT66sGhUUrvkB5YrjwW+kbdqiFHl8RfzuTPM2GcfvqAHh0CwXxdgg/bFWAGG8vskWsUL5eBl9wRMPu21Ndo7p0rkJSYFnXqFwPZE9urkXCdHLHswBEWFHHbOAqvtGen51h28pqGUpGM0nnaSV5M72+V8IRVXfsyEBERgm7r1Zw1KdysW9H0qAzA3oyrs0nhdnmt5B2cBUjKj+M3GMjaGQTbYrJvn8ZM+YpzlClEUaWpMhUb+L9Usk/EZ/JzwCTlphcQk5zPnmIHFIdtJK+ahuAs+l/OJgY02J7p2siz9au33u/xG47Iv+AUbXpLKy5q8NA== 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 OS6P279CA0064.NORP279.PROD.OUTLOOK.COM (2603:10a6:e10:3f::14) by AS4PR10MB5343.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:4bb::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.27; Mon, 22 May 2023 06:56:11 +0000 Received: from HE1EUR01FT069.eop-EUR01.prod.protection.outlook.com (2603:10a6:e10:3f:cafe::41) by OS6P279CA0064.outlook.office365.com (2603:10a6:e10:3f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28 via Frontend Transport; Mon, 22 May 2023 06:56:11 +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 HE1EUR01FT069.mail.protection.outlook.com (10.152.1.52) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.13 via Frontend Transport; Mon, 22 May 2023 06:56:11 +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; Mon, 22 May 2023 08:56:10 +0200 Received: from L15-Gen2.fritz.box (139.22.37.93) 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; Mon, 22 May 2023 08:56:09 +0200 X-Patchwork-Original-From: "'T. Schaffner' via isar-users" From: Tobias Schaffner To: CC: , , , Tobias Schaffner Subject: [PATCH v3 3/4] add unittests for the image-account-extension Date: Mon, 22 May 2023 08:55:30 +0200 Message-ID: <20230522065531.2300448-4-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230522065531.2300448-1-tobias.schaffner@siemens.com> References: <20230522065531.2300448-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.22.37.93] X-ClientProxiedBy: DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) To DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1EUR01FT069:EE_|AS4PR10MB5343:EE_ X-MS-Office365-Filtering-Correlation-Id: 5154923f-46f5-48d3-9da3-08db5a91a0ad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1WlCckqLu7bkKnTDZLK9iuBSiJRmOJUVdQxcsOLo/wq0lvkTZRWInBrtdGb7harAv58Xgb+r6OGJo6IV/Rnj1qyH1qebZtLoY/Hl7CeBPWkJG9NQw4r8vo9txIZhCNdJ6pIEetwGXA3FP5p3QFZniXwfF4dMO/RPYveIvLueinzZnFEXbqjqsPkObDuTDV1SKVwbEqaks5o2PiX7jfSDuV2MoCK4te7hlZBuiSDwofeRTfLa8G92ulBxSlt19B6nPMF8H1qLG9tvx4Q06AT1uwYPH+qvuZpSxovMGZ4Nva2FQXyobHUcn8oUCBdi+IjcjRbe/xJX8ra7lmbY+9YjJYbxfB9PKzHS3XxRWngvOh4gjJ7eh9U6rkTbwNE1JI0NIH9oSj89NyL3Pw6K6m9qCp6h7BD7dqp7xSg0m7qWvPM0vvu8PXAgC2LMKUc8NdDwuzy9HOn1YGOVeWLixigxJwkY8H+VII++jXfw1Neb9pwf4znOCXHrZiURe8iL1ENemMs02z7JHRbZqWJE/LLfhrnYIOkPBG40vatqVPSaFgqM5Y8zqts7o46Gt1Ll2Dwo8+sWItuOy8CJJctklvu60WIFPxHoJtYLeh+mZrOg1L4OfG1vPNlGctVwavynvu7NZQd6P7jgoXQN8KzCrxfFA/EERgXnb0qPLIOXiZqj8DLa+AeK3B9Vkv5DqrSlxR3y+wxb0m4mQfM5kNFSBXUh8ETv4gBwnTlHcSu0njezckDvRpA8FK4QvhRL8Qc2ozX3orXRZOH37Ri/RQXBVGw6sA== 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)(376002)(39860400002)(136003)(396003)(346002)(451199021)(36840700001)(46966006)(40470700004)(40480700001)(40460700003)(336012)(956004)(47076005)(2616005)(83380400001)(186003)(2906002)(16526019)(15650500001)(36860700001)(6916009)(4326008)(70206006)(70586007)(41300700001)(316002)(6666004)(54906003)(478600001)(5660300002)(26005)(1076003)(107886003)(8676002)(8936002)(82310400005)(82740400003)(82960400001)(81166007)(86362001)(356005)(36756003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2023 06:56:11.4544 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5154923f-46f5-48d3-9da3-08db5a91a0ad 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: HE1EUR01FT069.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR10MB5343 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="DBg4/A82"; 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:fe1f::61d 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 | 157 ++++++++++++++++++ 1 file changed, 157 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..b7ad0c5c --- /dev/null +++ b/testsuite/unittests/test_image_account_extension.py @@ -0,0 +1,157 @@ +# 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_new_group_system_flag(self): + test_group = "new" + d, _ = self.setup(test_group) + d.setVarFlag("GROUP_{}".format(test_group), "flags", "system") + + with patch.object(bb.process, "run") as run_mock: + image_create_groups(d) + + assert run_mock.call_count == 1 + assert "--system" in run_mock.call_args[0][0] + + def test_existing_group_no_system_flag(self): + test_group = "test" + d, _ = self.setup(test_group) + d.setVarFlag("GROUP_{}".format(test_group), "flags", "system") + d.setVarFlag("GROUP_{}".format(test_group), "gid", "1005") + + with patch.object(bb.process, "run") as run_mock: + image_create_groups(d) + + assert run_mock.call_count == 1 + assert "--system" not in run_mock.call_args[0][0] + + +if __name__ == "__main__": + unittest.main() From patchwork Mon May 22 06:55:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Schaffner X-Patchwork-Id: 2823 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 22 May 2023 08:56:20 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f59.google.com (mail-wm1-f59.google.com [209.85.128.59]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 34M6uKG3015576 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 May 2023 08:56:20 +0200 Received: by mail-wm1-f59.google.com with SMTP id 5b1f17b1804b1-3f433a2308bsf13235195e9.0; Sun, 21 May 2023 23:56:20 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1684738575; cv=pass; d=google.com; s=arc-20160816; b=0ooV3D7arT4w3xHyGr14AfhIXIja02F65sbqk5r8OK+BEoZfKaBuzh6kRuJiEJZFti C2rrkxho3S87rHM8V2xPoBE5+ppUJfyYzCUjXcR5exxNMq3VSNRBvq0s0UAoXo/A2vIr A51x/ZJmtWLfPevAa6JTV7zz0zX873ICVtXK3XfGvB8DAoNel6OruX+vn54dib5DWPhk 7BNrzljiCvpWR2gy0oGDvM+XbHjGI8CL7N0N2O/n9PfFdyq4BCNG4H9wgOhqXRb0ZKvB 4HRgZy6j/K1a3lYaowioNeWrtFaMI/JLG0mWPzFDfhINhuZuG1jym5Fo8sWH7qbPgwv9 o3TQ== 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=XAc5J7FZoFyAzRyjMTZlvcWSKlL+RN/hHmKWXYpTkCM=; b=BCW2u012fvePwRZe9yGCq9jVG/h5UBwgIO9EndMt2dzq+nMPOG+Z5Q9KU/01fRx34W j2E8JhHOdxnAyGr8Fl/qQ2avJO8aRQMsOkLBy8SLqepXWa77yyFynwS8S0ilqibMcvna IXQZ5p8sdEgTWYCUVWB28/qAQuhwcmRX6ljvjMdUqXfoYsF0rpZk1waZt3/ORS2OfUUa T9aC+BLDwhAwS5yoahuho+kem+Xqrkp/vQRZ/CDZ2SZc42o+sIFumh8jwvJEt1VBC8bM 5w5eUyw05eezzPMO7jmJ0Lh66E7FP3+7XsIm3ToR7y69bDrjSr5Uoqf2x3aoK48a3dO3 2Zmg== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=aUuWPwiX; 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::618 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=1684738575; x=1687330575; 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=XAc5J7FZoFyAzRyjMTZlvcWSKlL+RN/hHmKWXYpTkCM=; b=nBqcWzWfaj0eyz2TmeUvJYmguJRWqfYVBslHzCAINi46jV4m1awmSoMKJaHloyivXx EtTv1gONZvLY1h0vBkKTuAanDI3krm3sY3sHMz5l2XfDx3nQd56MBpLzZiXL82N7VwHb Vb7Qsl7dw5fiYeO6EHW8FctBH60luOVuxFRq6GDtZiaTHtOiU7GDUnTwhIw6zJ+DkO9r qVuC57NUF4epD5oKZRjXrZWeaNp5e1CpiSbGM//0lo1CNAz5ov6Z5FBPtqkScSV8cbzE UfrQ1zp1Y9jmfklAghvSG1hn7Ls/LjI8kY4YWmDkw7Ful0+Zg3bcHiC/eF5LrYRgjykh q6MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684738575; x=1687330575; 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=XAc5J7FZoFyAzRyjMTZlvcWSKlL+RN/hHmKWXYpTkCM=; b=H8ovVD16MDuaMx7uDzowOMoKe8s1um0gWyiTOlNUm2SaUMDiDcoNc/vb+ZSR59wlTY Ymbj0RugqDcpbQH14ILY6X6txpnIjjl0h8zvldAkc7WXw3YRTgSDz5EnClw+xNy0miqk rDw0tBCac/ShEbhhith+gv3+XDgS18QKGtMxKK+Cx9NEEmpdVbpIYFFeI4wWD2FbOWNN lDn2zPC69mSbBAP/7HD42vrEwW4K5LQKaIWaGtNT7/AQUIoUk/JigbH8zHKPsEOHZ3I4 FZgqO/gxqR5we+XaElU6+UY4VFrJ9ortY/6wUwSlAxelsvLzeUDJuo09+SSgJjhTCKM7 btaw== X-Gm-Message-State: AC+VfDwGbXB3VB3CEwtBUcj9+bSzhLwVYjkdf0/reFDL8be+evcn4w/f 61e9vDUOZ68KNpRIs0WmXpc= X-Google-Smtp-Source: ACHHUZ7j40IicbuSUtlL2Qs34FtNChtki1vvw+3zfeM+uvTjsXbns154vJMfUOvl8TclXihvWgbqww== X-Received: by 2002:a5d:6406:0:b0:307:a36b:e7a8 with SMTP id z6-20020a5d6406000000b00307a36be7a8mr1735806wru.5.1684738574443; Sun, 21 May 2023 23:56:14 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:600c:3b27:b0:3f5:dbda:d09f with SMTP id m39-20020a05600c3b2700b003f5dbdad09fls22413wms.1.-pod-prod-02-eu; Sun, 21 May 2023 23:56:13 -0700 (PDT) X-Received: by 2002:a05:600c:2209:b0:3f6:2ae:230e with SMTP id z9-20020a05600c220900b003f602ae230emr2465582wml.3.1684738573186; Sun, 21 May 2023 23:56:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1684738573; cv=pass; d=google.com; s=arc-20160816; b=VT6VMFpXNuvNPz9OhR4QHjlXw7g6XXI80+JTjEo7gEpuzoMliAAwQbMsH4MhiZ/I+1 9IJZMAB3CAoUXJH8Fx6FPi1SU8ZRNY4SU/+3JpFf8Y4wSb0N9GKoiy257mDXBbxrypeB Zll0x6aVo1SwActeUniTHNAVJbZsp7IKjX+wFQ66JLsqGkc8XBGV7Ns741I1kTma8+hi 54XmcxJJ3k4LTYzRHAO2GXBRi9AO3+EElYg2MzgBXBp+CmHMdXXSvfyZPzRAi7/061zO XhWakEY0QTo7zyUY+HBsU+WoDKwsIbwdespaehaY1qTXVHXuY3KOUY1Ne3/f9OEqrWfn b2Ng== 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=YaXylQu7Me0BDO6sA0mk0WW9xmybTQFQ4sNg/mRhyTWYd0dYP60YBuA66m2mBzeRLj RikRhzraBzBbbbG9BKBcGv6B8bi7E6LJ+n4HPk766yc1d+smPGA1ApU6b6ytxlTVCvJ5 oXf8YAyj/4/HmSNf3BBEML8b0QUtg2NCwslUUna36Qw6v3Xi5bp+rzrKqH0TF77ylwXS jjubfJMfFrsKqWolzvbT8y00fsoXb3Jvs9aYWHcZ3DHhAk/utBUgYNENbyBd42EBg7ty ciptEbWWZEB872mery8C8cZNcwzmV8QopLuetnXPaK7S3MqCjeAUlqrTInDg6mui63GW v/9g== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=aUuWPwiX; 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::618 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-dbaeur03on20618.outbound.protection.outlook.com. [2a01:111:f400:fe1a::618]) by gmr-mx.google.com with ESMTPS id co17-20020a0560000a1100b003077d1d7d11si350079wrb.7.2023.05.21.23.56.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 21 May 2023 23:56:13 -0700 (PDT) Received-SPF: pass (google.com: domain of tobias.schaffner@siemens.com designates 2a01:111:f400:fe1a::618 as permitted sender) client-ip=2a01:111:f400:fe1a::618; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TB9A1/mxFh7zL+Ph7rulATQFydolkgju5yx0zKEBe9YGQz4tLzsnNc5UfosYIogYemo3T0NInj+tZofn/cm134FA//H/lPOxhfg6FHl4kd0OtFyP9KQeIz8PkAsExqtBS7fpCTZ1IQ7OB2aw5yPP0K4vlyW6/5KvB1HvZEuPCMNaq9OY1NBGYa0kp4jma0h76aMEtr1srKlfAOx0uoq6sxy9kMsncr3x3oP4Zf36j3RJ7y4qYAkbJ6nLaQX04lWvHtg+kLN0OVl8tOrTkWAPVAorp/j6Cp6cUFOhH6++K0s8vU3H3PWmzv7E9GYzkkZVolhPU9KNP715LCJcH0neMA== 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=EWKkcLYtbihyYs90lWtoQ+IIKdYaKxo75MoE9u4upLx9YDa1qr6ze2ngOk/xGg4zH+TR+1XQBWsXzft8pjbv2aW7omjRy5V/PTas44LqBdLDpb6Dot/bnHsDNl+EE0GPRIbPQTciDVwxBJgy0xciMl6B21gxekw8qDTnTYiLbFOvhdA1fNj1twebau6drfG7a6OA8perJUUcf6NBVr6ET56GBHKHDcQFmTNLxmuRtBPtKSkP+oyA1DQBaDbZjmDYUcWpU71f9+zGSYiLq0VPx9R95PS5VKtItEKfm09MamisJ8UxMbUpR6ieKbWCR9HQeD3R9DOTDomKm6FvcwOVQQ== 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 OL1P279CA0027.NORP279.PROD.OUTLOOK.COM (2603:10a6:e10:13::14) by PRAPR10MB7624.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:297::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Mon, 22 May 2023 06:56:12 +0000 Received: from HE1EUR01FT105.eop-EUR01.prod.protection.outlook.com (2603:10a6:e10:13:cafe::6c) by OL1P279CA0027.outlook.office365.com (2603:10a6:e10:13::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28 via Frontend Transport; Mon, 22 May 2023 06:56:12 +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 HE1EUR01FT105.mail.protection.outlook.com (10.152.0.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.19 via Frontend Transport; Mon, 22 May 2023 06:56:11 +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; Mon, 22 May 2023 08:56:11 +0200 Received: from L15-Gen2.fritz.box (139.22.37.93) 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; Mon, 22 May 2023 08:56:10 +0200 X-Patchwork-Original-From: "'T. Schaffner' via isar-users" From: Tobias Schaffner To: CC: , , , Tobias Schaffner Subject: [PATCH v3 4/4] set minimal python version in user_manual to 3.5 Date: Mon, 22 May 2023 08:55:31 +0200 Message-ID: <20230522065531.2300448-5-tobias.schaffner@siemens.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230522065531.2300448-1-tobias.schaffner@siemens.com> References: <20230522065531.2300448-1-tobias.schaffner@siemens.com> MIME-Version: 1.0 X-Originating-IP: [139.22.37.93] X-ClientProxiedBy: DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) To DEMCHDC8WBA.ad011.siemens.net (139.25.226.105) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1EUR01FT105:EE_|PRAPR10MB7624:EE_ X-MS-Office365-Filtering-Correlation-Id: ad3d331d-9ec6-4b19-f264-08db5a91a0f2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hqjBM+0cIxWF3N957/rNndSGuFtfKCxlXqEaAruC6OjYjkgSte2l5VJw7+PKSf9/apLCcHso1XpgyyvcnfpcTt61Uni/Y/ffB0FhkQ4XGLY/xeQSFNnjlD2G6VTgJQwr3n5mCjbKwUkdAkXnkky0HBSMaXmIYnRXW0PNq3ARx9vYZTrUFe7iAdQdirQamTzRKhOrWBtg4tnTCFCTtnGT70a7gukBAkStAVjZMYi24iy8pPici08rD/GcVow9OjIQu3AV4IjmNa//HeG90lniOSKRlE2gyvmorbsiZVZtgPzbdrG/IrkdL7pw8tXLSOdL4PmaWkBLAGZkUfumq8Mtkbv2z+mAvopdLjMbOf2hEACBZXHDAh9hT06IAPuD8JoYpjJjpk7aICC6K5U83eoBYBm4X0KzgS/Q5n/fXU2iLQYggRpppDmgvNCgFpS0BQ48/u0Ce4//940C9bkQ5IFpyPgEEKEuVL4+XgoxoqnVGesa66EyNZodcpCBvLfZwEduZ2NWl89R8CtvNiDoQZz45rD1feDUqHiamGXrvtDBDLeRoR7IcsSbuX4flOMGiczDVwJiJz6PQ02RgzEInaoG/Sw1Cefu9zZSCKbPV+wokMj/azaRPGev/Rn6VTYPf1Kz9htgBX3eFq12Sm8aD8lcNDcIdM7/GZHRPUTSe5lCm4a5QOOj60rCQ/IMBm1UWe/myw0YC7ToEW0P2GRWijJ6/XyQ65rErqRn6CFRtp1PJwAPHOfyS+taxsS/QGSkKV+EjWeKD2a3n/JQBoBGhmUAtA== 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)(396003)(136003)(346002)(376002)(39860400002)(451199021)(36840700001)(46966006)(40470700004)(8676002)(8936002)(5660300002)(36860700001)(47076005)(82310400005)(186003)(16526019)(26005)(1076003)(336012)(83380400001)(86362001)(2616005)(956004)(81166007)(356005)(82740400003)(82960400001)(107886003)(40460700003)(41300700001)(6666004)(40480700001)(70206006)(70586007)(316002)(6916009)(36756003)(4326008)(478600001)(54906003)(4744005)(2906002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2023 06:56:11.9153 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ad3d331d-9ec6-4b19-f264-08db5a91a0f2 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: HE1EUR01FT105.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PRAPR10MB7624 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=aUuWPwiX; 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::618 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 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