From patchwork Wed Dec 15 16:08:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Herbrechtsmeier X-Patchwork-Id: 1539 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id B3FCCC4167D for ; Thu, 16 Dec 2021 01:43:27 +0000 (UTC) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (EUR04-DB3-obe.outbound.protection.outlook.com [40.107.6.44]) by mx.groups.io with SMTP id smtpd.web10.230.1639584519863923480 for ; Wed, 15 Dec 2021 08:08:42 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=rEZcKlQC; spf=pass (domain: weidmueller.com, ip: 40.107.6.44, mailfrom: stefan.herbrechtsmeier-oss@weidmueller.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TD3vQFxIej3elZB4l1tLUXo283fV+ESXS7lRICr5Dkf2WC1Pe7AghK5vYElUjHE1PDw1F/vsflKL8sSYnOJzn4+P1T2a2PYcOnc5xCwsvmo3k253BWGOL0NDqJ07JLYmN07I+XhSpOdfPDjn/yGO1GReIIwlIAXinx7Ye7SLzzM1tvecOSmXOeNz5kgRuYUBf2ehMKMENjGzFHTo52RVdOxIc8B0S+cFfg9tBqSS5bcSXfJFJZDqCWo1efLVtdpXMLc7A/4D9Srf6THdHZi577/v0OmTpzXriAaqzM5QhtHNalo3zIAoVHCunjq5oaUAfnCbBEM7eV4y32QoKEF6MA== 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=1b3JqU/fDKuRYYmva5L0O/aOouLihRfs4Sgj7I02i5Y=; b=Wp6E1uiRJWYyLn9BmOnIIqSWo+UVjq2CQQlIRN+8kTs/e4HbbbVDW4GhnmxDRpPLxuwDB8wid3830FdJd0TVdzA/v+Ra00vpKNDRWmP0xPhGRjnjRebbT2gj/ce2IwAVMzWI2rZBaXr0KvPDr2GTS8RquRMmZybidiUNW8ULazIAVVsjnp22Et7D+0WHgj8+2OsvJivlboCEwPidiNczdyjA+DO/6MWo2PwGEDvsXqZin7owvKj1LzuYBI5bgtCCvne4qxY+XKmd5WA+lXpGsIdli30ncfiBMuFbNkwC32WTvVNSg52gEaEm7pRXywhld0rOVLfNU13fPgd0cPm/nA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=weidmueller.com; dmarc=pass action=none header.from=weidmueller.com; dkim=pass header.d=weidmueller.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=weidmueller.onmicrosoft.com; s=selector1-weidmueller-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1b3JqU/fDKuRYYmva5L0O/aOouLihRfs4Sgj7I02i5Y=; b=rEZcKlQCxh/4qg8zoxO5K9y8+Bv7p33lB+Rf7j5Y9tbFoUtLbRT8ooJazIdf61YjRfrX8+wTtCBPubPhFU1x2OQQAIk0LGUdnmDjRNCg/KnuFXg7ul09ZDcOAFRuDDg6Fi0YBCXoykYgD28G2tVdHSSuccnUCLewj/cgsoJ23WY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=weidmueller.com; Received: from PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) by PR2PR08MB4665.eurprd08.prod.outlook.com (2603:10a6:101:25::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.16; Wed, 15 Dec 2021 16:08:36 +0000 Received: from PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f:41c4:eb10:5010]) by PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f:41c4:eb10:5010%9]) with mapi id 15.20.4801.014; Wed, 15 Dec 2021 16:08:36 +0000 From: Stefan Herbrechtsmeier To: openembedded-core@lists.openembedded.org CC: Stefan Herbrechtsmeier Subject: [PATCH v3 1/4] recipetool: Sort output of guess_license function to be deterministic Date: Wed, 15 Dec 2021 17:08:10 +0100 Message-ID: <20211215160813.23368-1-stefan.herbrechtsmeier-oss@weidmueller.com> X-Mailer: git-send-email 2.30.2 X-ClientProxiedBy: AM6P191CA0097.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8a::38) To PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7d5b59a0-1d4d-4321-b416-08d9bfe52695 X-MS-TrafficTypeDiagnostic: PR2PR08MB4665:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:626; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jzvCKr9PFREnC2yy80yx6IjuLTZS2at4AvT/njyKdCOq48hK6zw1828QW0LNYBMwzYQWgX2L5r9v/FC49LCdvG0w3d/PSFzCGWRiwdcYiUkqQfwN7Eo2x9lRQVc5xAnqUDwKNuC7C3FxcloFy0Ir+U1vZDTe0rnXJwOC78JCjnqL2Cz4NT6NP/xu/bjXMulmUhWWSkV/emBxBwTOwOCuRacjS6RbEl8m3Nj7817dn6oPpMip2gPbeo5oh3VXZlaQYxCgk4HSynyEilPEjm9dhnk9GBU8B4+KXO5W6RUPJytakTz9aub/WJbqf8eJ5/QD96IQbQ2MYH221potXlQQ1pmVtsRoNiveuuEF95eIigkXGuWGdBeSBV+HSGlrpStxJ9zaVQkBUUp5YWmqxg6nmC5f0RgGbdJWLqk3ycjLT+GcrtsQq93EoZRQxcKAd3Q0WEXBL4VR8jkG09bjifswh8eCd0CkA0A7uaTH6ZlU+0PRmVpps7c3pJcvO+wwg8DLr1O6ZoIfAfp3vKlNcjKwp3GSXtW8y7UbctGbF9VUAMF/lFr6vCqjaSUeNdozTs1717PXicJZZ//Zd1L6VzTvhlFLuv/fTgG3ZKqv8W1pDjk63WkX/7oefn8n2UqxUTb8qx/ZJiLWWcTRhnK8dFbD8WN9+o/IkQT2ARz2wAUowKQusbFZy0HnRyjxdvkougkykBTFPCQhvVrJApLCjfBXFQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB6969.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(2906002)(6506007)(52116002)(38100700002)(316002)(1076003)(6666004)(38350700002)(6512007)(107886003)(4326008)(2616005)(6486002)(8676002)(66476007)(186003)(66556008)(6916009)(4744005)(26005)(66946007)(36756003)(83380400001)(508600001)(8936002)(5660300002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SKuCMZfvGT8gbvsc1pDeCEYewtOtEp2zckXLgjng4rymYXsPKplbmoc1vI6i04VlL4LqHgIpYOF2JH8CnRLB6Bgsg+a4pQTrXJZxcaiq7WX0QoyQqc03HKNoW6CES2Aue+DapX3xZEFKx+UwSFyx4SkAHJcmGX5JEkL5368ENfHMo6gx4wUx67CW8XgTUmOJwqXxmwdcT+sLXk+NnbbNdzE4UpaZqGyS+ybNFIepi8dnKCi1OKbdeEkb4q6nM9RUMsybmOQ9q4hi9ADguEPYQVbpBixcwL/0IqbfyfrfE51PuKzjzcTTCEXqCaFC7WNCHmK/VoC1u3ewYpSbHtjEM0/m/yK9CT5WLF59dYvRuPS4raBo/cmgpLJb6p+xrwcsAMlML/nN1iAZcfmMUYPEkpkJv5f6izuhBWStmN16ZQLDfKYfDM0kIUXrC/1prs3Yxj2YB+XME4Xsn0efAvIHxLdBNE10BN/CAfrtJbeD2yTbl4jqtE1iXAT7ZXXiW+zPMKkP1GOm1UQvL3xDPTFGipFkeJMNSa1eQkvcoDdI2m3LWSypYttmVdGyWNHv03ATgYidJbBysWIyq+EnG+3bHThu+2gpDeZvB+Ut7Q4pI2MW83PTH7krcJs0fbE3LD0+GwKPV1zCwQPaHZZEnh4kOA2O2fyTwy82i7ySmV+G03rS7nu9JlFpQSvbQU1jIzxIXsllZqLS9K5/W8I0+i0G+xZxnex3zMsfGHW/CNq5hGojIOcJcHlxXjn2lgA3wrZ8V48OpwgpDHZk/wmC1zNaRMDOfL35PRMevDHNaO1cIz9LyC8IIieQXyS6twrUTPITluck9HFESFH4JmRkeCUEwgkehn6Fju2qv42bj6yEiXTvgfn3rn4buVUBhixeBOQln1gCpTEPdna1A1VSb8OnHJ+yMkOFPZbBYEhp+eJmEW8t4PZaxK7oW9bF+xwHj8lvhJbD5b9mqgYegN51eh9BtQajg+83XWvdDTyGdCYVy5hH54ME/M4rQ8cpc0yeswOzEs0oH5ydCI14eeYZjCEIeb4cYxeadbcFPFX/mr3vs11KMyiGU8FJHFj/Ryq0K4ltoFJxMz3I5OSTuF0kfm3zpS80CxRqihH1ynLppDOpdDpXZlJ2MRK/oYBjd+WqbdaeVpVyMfbjJDFqhTidDdzFCYjNWgDJ3CQ5PwwWGR6odq/TpZoeDKslM/JFwEFuWCNaqktST12j+BnG2LgBY2IXqhH0p2/USpfGf8rJcRKQwHNqSkV5728Us/HkrG05d5q9YeklAvgOlVKJ2x2NnqqmV60L4gKLwHgQ9H8FTt0/JROw9KrbEtQHMXCfykzFeWuc8F3GLxZG+DP2C5euuFiovJC6xZcx52XlsteBMP2k4WqUAAdpVnpAMLD/eQVNJCaBomHx6v179TfoAWQx865op+p6FfRpSUc0X2VFropAugvDi/SINZsBpbrr3NmzT8XNmRLklcXefHFdQIcngbMWXTzwNgFZYx9waWdS6yWKWsVd3DNZXiLCkyPP209+YlSJjk7ZfNY392aIBUZzqT9EoN2MFraPljBcDXA28azsBygYnWp0tKFufJyKp+jt6NbjdEyQe2/w2DOh0Z11WK/PgZtZEsOO4K1cxHN18OSa7o0= X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d5b59a0-1d4d-4321-b416-08d9bfe52695 X-MS-Exchange-CrossTenant-AuthSource: PAXPR08MB6969.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2021 16:08:36.6840 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e4289438-1c5f-4c95-a51a-ee553b8b18ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +pofhvBQLxISvetuP6UPTMwmQ5NTsZpUksdD4xDmND9NLQwoCyk8bA2s5AYjw35+mJcgOANX8DROulOgJg5GDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4665 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 16 Dec 2021 01:43:27 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/159731 From: Stefan Herbrechtsmeier Sort the output of guess_license function by license file to be deterministic and to support self-testing. Signed-off-by: Stefan Herbrechtsmeier --- Changes in v3: - Add commit to fix selftest failure of autobuilder scripts/lib/recipetool/create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py index 406c97f1c5..28224dbc24 100644 --- a/scripts/lib/recipetool/create.py +++ b/scripts/lib/recipetool/create.py @@ -1201,7 +1201,7 @@ def guess_license(srctree, d): fullpath = os.path.join(root, fn) if not fullpath in licfiles: licfiles.append(fullpath) - for licfile in licfiles: + for licfile in sorted(licfiles): md5value = bb.utils.md5_file(licfile) license = md5sums.get(md5value, None) if not license: From patchwork Wed Dec 15 16:08:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Herbrechtsmeier X-Patchwork-Id: 1538 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8A16C4167E for ; Thu, 16 Dec 2021 01:43:28 +0000 (UTC) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (EUR04-DB3-obe.outbound.protection.outlook.com [40.107.6.44]) by mx.groups.io with SMTP id smtpd.web10.230.1639584519863923480 for ; Wed, 15 Dec 2021 08:08:44 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=qcDNCkle; spf=pass (domain: weidmueller.com, ip: 40.107.6.44, mailfrom: stefan.herbrechtsmeier-oss@weidmueller.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a0aft+ZXY08nw79zhNVhDSACobSK+CSJXGdMjMtVG9B2k/JMaaE5LPCNeQJhZ2pUfbH+gXXN+CqqVvPdSbls8g/QaaADMgjXLcV83KOAQA5u7WK/rvfysxMDvRbYy5+jHpcOk67EfQGVRtgGio+pQP2KvqVsENWY/dEW6+xhfuKwmJmAuGsSdRexphlrOUmepPcLxWwVOwkteDBYOZ64DlfUkGnA75cEuN+kCqw1fHuy9nRxGjvAoUcMOP2n82is53F8IDpGd6cqlu3ogtksOB2iLf4VguBAvT9LP12FvQYauGr0cmuZ/ADZzuoTlnrPvxpjOsMfKy55Q+azGpefwA== 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=rSHIumeib8qTzREZkFI0Tet0CpSUi7mjQ01EM7nhdW8=; b=jF7wyE9r0lt1gjF7l/5IWeud7jaSntaGIsB5NXIWL7FJqfynYLcBSpwvo5mIEg0CHWv+mMEmPtSGkG43Y1ruZenvCVnGVAGzM5nsc5cml7fG7LdpChzXuGgoYOHK8Yi85D09Xdi+fr7AXjEK+HU/yLYSZQ/9nk6tKyG+hSEzEnfiw3BOvDdkLFTpFY3CBcB86voD8hIkcn5+4uvPLx1YdWzlawoItJKcwSegDfzEb0K/7PqwaIwbm8ijgTsGxv395NwVi7aK5OxoyfHypRmz1NMMYh1nl0urk7HCndy2M6EdDLMNHjmXJ84nYz4xDj2Yu7D6xpw5CdIJQWb/4k8VsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=weidmueller.com; dmarc=pass action=none header.from=weidmueller.com; dkim=pass header.d=weidmueller.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=weidmueller.onmicrosoft.com; s=selector1-weidmueller-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rSHIumeib8qTzREZkFI0Tet0CpSUi7mjQ01EM7nhdW8=; b=qcDNCkled+AkxLeZ7trgyua3rchW8tz5II/OsRSLM3u7vkCLbshW34OBuLZB0k7mbLHkL8pIDNKntDxWk/C0Gz3n7U5DrZdUrmuXtIzc5V86m7TbDguytnIVYeqMFwvy5zdVbndJRIYIqcD9T8bi3NfylF/9wQHbiSRpVJctubI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=weidmueller.com; Received: from PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) by PR2PR08MB4665.eurprd08.prod.outlook.com (2603:10a6:101:25::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.16; Wed, 15 Dec 2021 16:08:37 +0000 Received: from PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f:41c4:eb10:5010]) by PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f:41c4:eb10:5010%9]) with mapi id 15.20.4801.014; Wed, 15 Dec 2021 16:08:37 +0000 From: Stefan Herbrechtsmeier To: openembedded-core@lists.openembedded.org CC: Stefan Herbrechtsmeier Subject: [PATCH v3 2/4] recipetool: Separate licenses with & operator Date: Wed, 15 Dec 2021 17:08:11 +0100 Message-ID: <20211215160813.23368-2-stefan.herbrechtsmeier-oss@weidmueller.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211215160813.23368-1-stefan.herbrechtsmeier-oss@weidmueller.com> References: <20211215160813.23368-1-stefan.herbrechtsmeier-oss@weidmueller.com> X-ClientProxiedBy: AM6P191CA0097.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8a::38) To PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 30bd1557-ae06-4960-fa8b-08d9bfe526ce X-MS-TrafficTypeDiagnostic: PR2PR08MB4665:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2399; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ijnr8uK2VuN35OmbxE/pBKMR+YROIb8PHdhlPSImHvp5yduX1ypZmtZy5N7RA04nVbV2/I7annIDTJOmEUGl215qswC1sf+S7aCM4bOvR+ZseecQI7u5qlax3pnURexk9Z/2gUOKFKoN9zhHbXZirnCRYohjo1LMGhJMEYdLNYLglzJKvtDjd3LcxORvrBZoMm0jsdBfKSVp7khncIxbEjppdBINFosXZO4C5L3QwEWmBIqZaYEM8r/WGfCWp28ow44FITV//2qk4CVM/ut+VAtxF+52/lvuR4XDFjX+D5A4A4MbeWegoyR4VnBHogCmn/de7OX6GGHsiI1p6nQMg5765mTLD8DTLHU7cc59xf6TYxPl+0TWFQke6xqLvIZla4MDhB2s1IXdy8ZC58d6ALUvuUdnZhjFgqhHZRFpWXH9Z8PzWFhYwCwGdY3pOYANJ9y2CxWePjAT28VHysJ7ZC7TV4kB46/8lc4/M5XYMLMlocuUrsuJBcfyxClA+mdiaa5fWoFcgR5DlPzRVULMqohVv9nNzx9AVrMJXFU9bk7yBbKlsbt27ZbnkAv1a3STnCmOh3tGk7TEkoihZG6GKx7dsCgD7RUAgeSZtkob2zs9wyC/Xweom7+oyVZk+qGjXp/uGlz9pY/os+EuVx76Uzgo7PIKr1Qxb21nQDIRC3DFFgljzWKhIm7MEvBh8waUbgACUIwkPYyFUHlfUlhyO+cTKUDVm1iGaKQutGuZkCP19/rIDh6o5Rk997M4D61XMT3Uzyo7Z//R2Hov+ZZutNN+GWu9OA/YR+KOuoVtOo8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB6969.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(2906002)(6506007)(52116002)(38100700002)(316002)(1076003)(6666004)(38350700002)(6512007)(107886003)(4326008)(2616005)(6486002)(8676002)(66476007)(186003)(66556008)(6916009)(26005)(66946007)(36756003)(83380400001)(508600001)(8936002)(5660300002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +z9NMDv1Jbug+B3Km6K9j3hkrNO3+/mVHwv1T5WRa0SQFuY268RTwwwNfSUNrRiItLHaFyps73mF8mdiWqJZOL/o63p2FSsEKGC0NmBZAHFQsISGYtec3qPYH+QJkGdW/i25rfPYlVfAk0QtXEVxh8KthOXNIJBY5N9VEUzycR4w2CwqXH5OWQkZgEKCWOFkE7J9CpsZPSr9Xojeyx0EE8RvJhuSsPMrlrExwD2sKZ6qN9f3Na0HgV4wDDsUYd4fdWzBu8kfbBTEOYZUZOsT8OoUB/fBNqOF0xFfxe+kGefxt1UAGJYy8fThhXB9Ojz8Bp5d37wtB1w5XoMtgnsR0+YKe9rY2zGan+62+UMyEnlRYIj/exx8mJA8tHtXIgQGzh0vlEWXNrMjrku7bjgsU1b+TNP/dC6ym0LjDV+3bekPFMr0rQWuXm4okL6KlkhgTdb5sETBbCYpjeNyWyixkyhF2Jdkdo9EQI5Sl/YYePe1aujbZ2Tg8W2WPBiCxJ6+VcUH/lciZf/gjtOrQR3KuC+LqNDineudwb/WLX1oFaOudDp7/ZTSAMEnK+Gl5/XFBm187AMBSdNNHfyRZ7TnCF3v3yDGPBHR2z4ExTuJn12Mm9YtfTBrzUTl7HQeIKCx3oCaENoJfUlXLsqRfYMhsK2tUpj5mZlvOpTUgBmtLkSgyXjPiFgp5D1THKZfKkuAVQj2U7lCuFmXATudyrM+6+fj86ZsEY8iyBM2E6g39Wh+49TlGp+MRQpDGyVZFYRPczpnvJBnlWoGsYKNsVBjk04wHjZdqERFLL6wLDYM69wG1G+zIec7eT59fYnMSOarBaQaCSiw5IYscP8xeMpJHa5LjORn/GqrhGTcVewoziLs7CPhin9XxXG716L9HnOsnO7OYKENTnlZBVJnFrehXAZS7yCGpPSNvvCGVFyzr7W/X5x9QZRVFXuvvelzAIkav4pFn//voZBVJlrW5wLIBWcPbPqmd5NzB+EYz3jxcqn2vVm2OdhKVE5e58gR+yJvvFp6Vpq+rf5or7YNVSW8P+P3CYR/dyQGcpT5+QrqxaFt6XRTW8z2tzFY94MGd6wmbSg14t9jOYx6s1snMmP3VIxvH2AFZa3volF8fqDXbtwGrGN6rXvq1gV7m/ZWsj9j9k0bfkGNFOYUsQOG/NtP/1pYiBJpWKupLafdh79Rp1RHSo89MRoo3NH/lAp0zib79/jBegvVnsRCzW33ps4CacBcOOLb+fdhdRVFJrxuDXgBr2xAe2zyYA7+Pok7fj4JE/qwbqY81GfuIo+BtYQLRVm6OpV1IUtAuApFkB2SY7ZFXmmjK4F+ay3rhhAW+mGzFo1h7bgvA4Xfcht8/1skQTyCLtl5OeRgfIt7uJ0TYMFfh1oqajidqPVxmNy+i2LwGBccrYDv0731EgrA2Gfz2Gp8oCSolTJ4ZYSkesJtuypvk9bfdA42TE07rhCADlHny7A/upK4EQT4ydo5wZeLoPd3V69RToaPH6zoArwEux8ztTKKRraNwRJf/CWzIfwWr526oAXSHLTuzse6RpyxX4AknDpYPbM5wrida7FZOzoUyHDOA1dcNF62wMfjUaiaiPz39P7jgprc1rOyvhtlEs/dBf45SbIxH3ef/eiehdI= X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30bd1557-ae06-4960-fa8b-08d9bfe526ce X-MS-Exchange-CrossTenant-AuthSource: PAXPR08MB6969.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2021 16:08:37.0863 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e4289438-1c5f-4c95-a51a-ee553b8b18ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pb2UB7DWvxFTzO80e7EEd+o/FM1Jq/bh4SOdtTWkPfk9DSPP/mw98X6BR1AuFXXeMouXT3VqpuVdoYBtXAFEww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4665 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 16 Dec 2021 01:43:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/159732 From: Stefan Herbrechtsmeier Separate licenses with & operator since it should be satisfied most use cases and it is a reasonable assumption that all the licenses apply. Furthermore flat, split and sort the licenses to minimize license string changes. Separate package licenses with & operator: -LICENSE:${PN} = "MIT ISC" +LICENSE:${PN} = "ISC & MIT" Respect | and brackets in LICENSE: -LICENSE = "BSD-3-Clause & (ISC & | & MIT)" +LICENSE = "BSD-3-Clause & (ISC | MIT)" Sort licenses: -LICENSE = "MIT & BSD-3-Clause & ISC" +LICENSE = "BSD-3-Clause & ISC & MIT" Remove duplicates: -LICENSE = "MIT & ISC & MIT" +LICENSE = "ISC & MIT" Signed-off-by: Stefan Herbrechtsmeier --- (no changes since v1) meta/lib/oeqa/selftest/cases/recipetool.py | 4 +-- scripts/lib/recipetool/create.py | 39 +++++++++++++++++----- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py index 439e41597c..95e4753976 100644 --- a/meta/lib/oeqa/selftest/cases/recipetool.py +++ b/meta/lib/oeqa/selftest/cases/recipetool.py @@ -426,7 +426,7 @@ class RecipetoolCreateTests(RecipetoolBase): checkvars = {} checkvars['SUMMARY'] = 'Node Server Example' checkvars['HOMEPAGE'] = 'https://github.com/savoirfairelinux/node-server-example#readme' - checkvars['LICENSE'] = set(['MIT', 'ISC', 'Unknown']) + checkvars['LICENSE'] = 'BSD-3-Clause & ISC & MIT & Unknown' urls = [] urls.append('npm://registry.npmjs.org/;package=@savoirfairelinux/node-server-example;version=${PV}') urls.append('npmsw://${THISDIR}/${BPN}/npm-shrinkwrap.json') @@ -483,7 +483,7 @@ class RecipetoolCreateTests(RecipetoolBase): result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri)) self.assertTrue(os.path.isfile(recipefile)) checkvars = {} - checkvars['LICENSE'] = set(['PSF', '&', 'BSD-3-Clause', 'GPL']) + checkvars['LICENSE'] = 'BSD-3-Clause & GPL & PSF' checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING.txt;md5=35a23d42b615470583563132872c97d6' checkvars['SRC_URI'] = 'https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-${PV}.tar.gz' checkvars['SRC_URI[md5sum]'] = 'c53768d63db3873b7d452833553469de' diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py index 28224dbc24..507a230511 100644 --- a/scripts/lib/recipetool/create.py +++ b/scripts/lib/recipetool/create.py @@ -919,6 +919,22 @@ def split_value(value): else: return value +def fixup_license(value): + # Ensure licenses with OR starts and ends with brackets + if '|' in value: + return '(' + value + ')' + return value + +def tidy_licenses(value): + """Flat, split and sort licenses""" + from oe.license import flattened_licenses + def _choose(a, b): + str_a, str_b = sorted((" & ".join(a), " & ".join(b)), key=str.casefold) + return ["(%s | %s)" % (str_a, str_b)] + if not isinstance(value, str): + value = " & ".join(value) + return sorted(list(set(flattened_licenses(value, _choose))), key=str.casefold) + def handle_license_vars(srctree, lines_before, handled, extravalues, d): lichandled = [x for x in handled if x[0] == 'license'] if lichandled: @@ -932,10 +948,13 @@ def handle_license_vars(srctree, lines_before, handled, extravalues, d): lines = [] if licvalues: for licvalue in licvalues: - if not licvalue[0] in licenses: - licenses.append(licvalue[0]) + license = licvalue[0] + lics = tidy_licenses(fixup_license(license)) + lics = [lic for lic in lics if lic not in licenses] + if len(lics): + licenses.extend(lics) lic_files_chksum.append('file://%s;md5=%s' % (licvalue[1], licvalue[2])) - if licvalue[0] == 'Unknown': + if license == 'Unknown': lic_unknown.append(licvalue[1]) if lic_unknown: lines.append('#') @@ -944,9 +963,7 @@ def handle_license_vars(srctree, lines_before, handled, extravalues, d): for licfile in lic_unknown: lines.append('# %s' % licfile) - extra_license = split_value(extravalues.pop('LICENSE', [])) - if '&' in extra_license: - extra_license.remove('&') + extra_license = tidy_licenses(extravalues.pop('LICENSE', '')) if extra_license: if licenses == ['Unknown']: licenses = extra_license @@ -987,7 +1004,7 @@ def handle_license_vars(srctree, lines_before, handled, extravalues, d): lines.append('# instead of &. If there is any doubt, check the accompanying documentation') lines.append('# to determine which situation is applicable.') - lines.append('LICENSE = "%s"' % ' & '.join(licenses)) + lines.append('LICENSE = "%s"' % ' & '.join(sorted(licenses, key=str.casefold))) lines.append('LIC_FILES_CHKSUM = "%s"' % ' \\\n '.join(lic_files_chksum)) lines.append('') @@ -1226,6 +1243,7 @@ def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=[], pn=' """ pkglicenses = {pn: []} for license, licpath, _ in licvalues: + license = fixup_license(license) for pkgname, pkgpath in packages.items(): if licpath.startswith(pkgpath + '/'): if pkgname in pkglicenses: @@ -1238,11 +1256,14 @@ def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=[], pn=' pkglicenses[pn].append(license) outlicenses = {} for pkgname in packages: - license = ' '.join(list(set(pkglicenses.get(pkgname, ['Unknown'])))) or 'Unknown' + # Assume AND operator between license files + license = ' & '.join(list(set(pkglicenses.get(pkgname, ['Unknown'])))) or 'Unknown' if license == 'Unknown' and pkgname in fallback_licenses: license = fallback_licenses[pkgname] + licenses = tidy_licenses(license) + license = ' & '.join(licenses) outlines.append('LICENSE:%s = "%s"' % (pkgname, license)) - outlicenses[pkgname] = license.split() + outlicenses[pkgname] = licenses return outlicenses def read_pkgconfig_provides(d): From patchwork Wed Dec 15 16:08:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Herbrechtsmeier X-Patchwork-Id: 1536 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7AE7C43217 for ; Thu, 16 Dec 2021 01:43:27 +0000 (UTC) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (EUR04-DB3-obe.outbound.protection.outlook.com [40.107.6.80]) by mx.groups.io with SMTP id smtpd.web08.244.1639584527069971504 for ; Wed, 15 Dec 2021 08:08:50 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=lt7cVYmR; spf=pass (domain: weidmueller.com, ip: 40.107.6.80, mailfrom: stefan.herbrechtsmeier-oss@weidmueller.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EgKOaYurR/TZR3D4z12EsOh4vQM6uo1NWkq/kQVt7mMW0/W8R4/hXbJK3ILT0j7AG6i21GbhY8LahIyL9taWHVYxLz48V/efnEzMACMhMRTFV0r2O7G5Y1unQ6oxvhQ4kh67vXT15FpQpCILygLAG9aHYSaCDh47WJ8YrBcoXMcEOlDcU7qsO5S1TjYNqlDIJqAhtYxeQJE20uOcMaFcrYh6csD2SpwJ83CWb71MEmlWDrBRGpjNPHAyGVeCXfB4jsO9S/DcuelAK3a695yOrvL56EUdksxnJ11GnG2/g91wvp0j0omUmuk2XMDdXfGPeOD3700nKtbPky3bHBkTGw== 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=ktlikhEqPnPNewZrNyzVw68/Ddno7d2GXTs+5Sojr7Q=; b=h+z7yqUwk5QhNPRTQECTUDZieEw0DqAEPmZzbw5GrHPxsuUEqcon9v91FZkBCx5poLmUR0wP2gURu2rCFmta6y0Q0B0npqIPsQ4iDz3PiNDiwNMaHQXJJ0ZXMOzzlFL94kbs8yjKaAa0WqQr7fp1z/7sbpriWjov0l90kVAKYcoILY3QaGmKED+GQJIhyYZi3hDa0ZmZRQIpJxghoopNFrSe+ysX5gW/3zuy0VF5A89GVLYVx2MXA/8ytBT6sR3sx4T3CDTfaSsv1NkjLAacOhFgMQ5oczEfCBoouPq80yXvXHw+vBFN6MfNlmy51sM1akKVo8OuSYtHkBHspiWd0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=weidmueller.com; dmarc=pass action=none header.from=weidmueller.com; dkim=pass header.d=weidmueller.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=weidmueller.onmicrosoft.com; s=selector1-weidmueller-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ktlikhEqPnPNewZrNyzVw68/Ddno7d2GXTs+5Sojr7Q=; b=lt7cVYmRh6p5z21vTglfATJDb1qkJ0u7v2vuGZjpkdVf0gGCETQW2giz2+QFbJFTBx1RrcWoVExF3juDDm6JJ1G6xCWaj71hd472xhys4xWoG5n3YkQtx4mo6bZ87/GOFmjOsMtnrpySNjl/YeIdxQ0aIIuU8nsQu1WlKYmc9I8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=weidmueller.com; Received: from PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) by PR2PR08MB4665.eurprd08.prod.outlook.com (2603:10a6:101:25::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.16; Wed, 15 Dec 2021 16:08:37 +0000 Received: from PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f:41c4:eb10:5010]) by PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f:41c4:eb10:5010%9]) with mapi id 15.20.4801.014; Wed, 15 Dec 2021 16:08:37 +0000 From: Stefan Herbrechtsmeier To: openembedded-core@lists.openembedded.org CC: Stefan Herbrechtsmeier Subject: [PATCH v3 3/4] selftest: recipetool: Add test for split_pkg_licenses function Date: Wed, 15 Dec 2021 17:08:12 +0100 Message-ID: <20211215160813.23368-3-stefan.herbrechtsmeier-oss@weidmueller.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211215160813.23368-1-stefan.herbrechtsmeier-oss@weidmueller.com> References: <20211215160813.23368-1-stefan.herbrechtsmeier-oss@weidmueller.com> X-ClientProxiedBy: AM6P191CA0097.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8a::38) To PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0fa890ae-d9ed-4db4-3436-08d9bfe5270c X-MS-TrafficTypeDiagnostic: PR2PR08MB4665:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:404; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2IrtZHZom1aSqKZdK7pG/etcYLwOWkvUM3muueQgiQqpt7jhueT1obj5grCAO0JDwAkZgo96PQINNLmFua6dAs2FZrTjYWedeqhAZFtyCT/wILJ9HeGmytoeAD1yBtVnv+nZlc18Jf+LxZtUN3ZdZxrHuOdI2c8Un++yYVKNNZRoa+UtoQoHh+yMekj8upnZUTGY2VvnEnp9D4QU29eEJv7QzJVABO194ivMOVIo/LM6kaPuYz9wfjakFJD4R7fxXulBf9HNDhCR08x0obWvz0lwut07UoheXNeceqcI6rdb6RI52L8o9xknVeOJCCKMFG9dgeLurlU6HkuAdTk/s9yrXcMAmt53Icm4FIbnBS14ZlGewzcFuZQTIjw2yxhYqZ05617j6JtZkPMyNWIVU8uNuAgUXQwnt/8Bpzitk+RUp7/gzLil7HJWjorSJaSWgG6zD+Q2yrL109I6suaT5EKqL7iS7PZiWYuy3/KSRe58oD4s4zc7t2kJ+5zQl/aqbZzXLM61GoiMP8lyaZTb01Pekm7kBc2MFsLmklHkaZq5FqxUClMjLHMIkSiSw3krJ/02QoD+ePhUSx2ykmVoXxiAqhP5yaVk99mrjYAw+tseElzn2GXGBI8JJZIuDuq56z+rNDBINgZhum0O7Bu8mlJ947dw5ihJkY2zI5tY0hvZaPQBj0Qfm3ORvznq0eBWlG5bK+FvQq3sz4P+j4P6Og== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB6969.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(2906002)(6506007)(52116002)(38100700002)(316002)(1076003)(6666004)(38350700002)(6512007)(107886003)(4326008)(2616005)(6486002)(8676002)(66476007)(186003)(66556008)(6916009)(26005)(66946007)(36756003)(508600001)(8936002)(5660300002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cIyjNILnTh8L/gNPz3Hek07MRxzxCLPaQEKhL5cPqrIisFodIyp/1CZusD8IbjhmluC9ZRUrYrZyGn2rZnELOVi16paYgSgULI/NxeEmC6Z+xdsgkLdrDIyNpBAJNijaYxhf83+Um+5s3iRY9Eag585FgZHUYw3SNVdGo0jdhInGVmmL0Zq3nKzKvPM+gsweAavf8/Uz26i9UxFCE7lP1W4R3xax2BFF5wGFXdUj10whtJr8CzbLhaGwXARJHr0NYPTeyKhuSCSTLf+J8wVs/jtkthVv1Qg1AVf7fF72de3gTzwlYdoMDfBF3rNkMEu2EeE9zrujdi+o0XoodLq/v+aw96eYpahFTJV9a83UWAX25OYLST81O6BQ8d6U7GL8CzjTgeyKHB9Wcz++H0to4xvP73OLW7mZywkMSWKuE8Vp3ee1cy+SZik4jMrPUu2neJ+vfQWlRz6QVHlCaiHGf7m32rVHCUtfG1MVu6qyRJ71rNj0JaPkMZJ8uyiABcUHyLrYLmBhKKZvoBRBgsq5CAA93fyxsu3h0PSLRv/NRcx7UT97FTU1Sg7uOT+qbh9MlbUAxnfs5CwEEJvwXBYcq77Ee7TPMrNOcD5USfDuBskUVa/i2ouXeobT+4uT/L0xe+0DQURCN+yxrjD29413NiZUoySb8eNCuPfT3rfofAp5PYq3D76I5n7pHpFY2jBx6xkCgh1SZSo7wFu9DlEu8AvqnR6+LYva55hR+dT9fuXcxDG7vSq5eFdIiHWlgVlHYYv4uZqgPawS8MgxDs/xn6av6LiFE+t0idcLiS/pj/t/MrDy9lMGy85zswhrR9jo4fpiUcfaWR817ycByaDc5XGhD8CSiOWL5U0ryRtL1v1er6sZTunDLLKgFPW/hT9gMpEv+mAk75ijD24REGJAPSSLDqTwBnUQSl55Kf3KVx4yLFDc5oBBdLHB5JHE8cmaBwlf+zuG+fprvp/lFukjUZH7Qx8Yi5fidseKr7LhTK46x9YsgqvGCiqVtgoP2nlO/jxR407Pkv+o+iv5J8rbb4QAWTGsd+U4ejjyv9fJrCEomhefTWBcccndXuk3BSEkrnl+ZQkjTvr4VEyyipOHeoHUtOvBKQiS0hTzexQpkXYMlInEmAoioWFbKIxyWKogs6yfyjDMlUqCb42ZVVRZLxUhJjiyWj37aLcg90I+iSrwQJcD6yATA9fZdp037ec6ffoubPiuCZwObc/LEl75EHK3fjASk7pTbVO83ZGICrNY2hG/JUN79qf8julv4gx4GZGa3JmBiYVOwYO0tqZhJwKvQ6M9nlryB5F93AIAG6zUtiIj/WB0dUXC9vr4sF1vMmEQQTWZUpZOUCkZQ+Eju3n/CSI8tYwh1h8fwtSn4xwbfPInAW1yAT4ojoT20xm6F8U6tf4B/yIyZDskohdtAVEsOk4dAtjkDChp4CEFqzgduNx+HKEjcWinUGYiJ1IjuVVjmHpN2y4BuI79unO82VA+UTr3iqYSbMJEwKlLlm57N9npth8nrCSz/AIscW+4Tey86UAq8M9WlwXnkMRQBfnxV1r+T8r3PZbYOnW0WEpDaf/8uQJM3e1JKG45lgqutHQ6hUPxF0MMrqgyeECvsMhbzr4/wQ3W6z9Ve3YMG9Y= X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fa890ae-d9ed-4db4-3436-08d9bfe5270c X-MS-Exchange-CrossTenant-AuthSource: PAXPR08MB6969.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2021 16:08:37.4367 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e4289438-1c5f-4c95-a51a-ee553b8b18ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EcfciL59PVRD5YVACN7IFNa+X0rTXUy1Yi9rp1CWxJe+9USUafVV4JDKJ7/6qnw1KOxPzR7BS2ZYP+//a01yTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4665 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 16 Dec 2021 01:43:27 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/159734 From: Stefan Herbrechtsmeier Signed-off-by: Stefan Herbrechtsmeier --- (no changes since v1) meta/lib/oeqa/selftest/cases/recipetool.py | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py index 95e4753976..1c73b2c5e0 100644 --- a/meta/lib/oeqa/selftest/cases/recipetool.py +++ b/meta/lib/oeqa/selftest/cases/recipetool.py @@ -541,9 +541,13 @@ class RecipetoolTests(RecipetoolBase): @classmethod def setUpClass(cls): + import sys + super(RecipetoolTests, cls).setUpClass() bb_vars = get_bb_vars(['BBPATH']) cls.bbpath = bb_vars['BBPATH'] + libpath = os.path.join(get_bb_var('COREBASE'), 'scripts', 'lib', 'recipetool') + sys.path.insert(0, libpath) def _copy_file_with_cleanup(self, srcfile, basedstdir, *paths): dstdir = basedstdir @@ -588,6 +592,66 @@ class RecipetoolTests(RecipetoolBase): with open(srcfile, 'w') as fh: fh.writelines(plugincontent) + def test_recipetool_split_pkg_licenses(self): + from create import split_pkg_licenses + licvalues = [ + # Duplicate licenses + ('BSD-2-Clause', 'x/COPYING', None), + ('BSD-2-Clause', 'x/LICENSE', None), + # Multiple licenses + ('MIT', 'x/a/LICENSE.MIT', None), + ('ISC', 'x/a/LICENSE.ISC', None), + # Alternative licenses + ('(MIT | ISC)', 'x/b/LICENSE', None), + # Alternative licenses without brackets + ('MIT | BSD-2-Clause', 'x/c/LICENSE', None), + # Multi licenses with alternatives + ('MIT', 'x/d/COPYING', None), + ('MIT | BSD-2-Clause', 'x/d/LICENSE', None), + # Multi licenses with alternatives and brackets + ('Apache-2.0 & ((MIT | ISC) & BSD-3-Clause)', 'x/e/LICENSE', None) + ] + packages = { + '${PN}': '', + 'a': 'x/a', + 'b': 'x/b', + 'c': 'x/c', + 'd': 'x/d', + 'e': 'x/e', + 'f': 'x/f', + 'g': 'x/g', + } + fallback_licenses = { + # Ignored + 'a': 'BSD-3-Clause', + # Used + 'f': 'BSD-3-Clause' + } + outlines = [] + outlicenses = split_pkg_licenses(licvalues, packages, outlines, fallback_licenses) + expected_outlicenses = { + '${PN}': ['BSD-2-Clause'], + 'a': ['ISC', 'MIT'], + 'b': ['(ISC | MIT)'], + 'c': ['(BSD-2-Clause | MIT)'], + 'd': ['(BSD-2-Clause | MIT)', 'MIT'], + 'e': ['(ISC | MIT)', 'Apache-2.0', 'BSD-3-Clause'], + 'f': ['BSD-3-Clause'], + 'g': ['Unknown'] + } + self.assertEqual(outlicenses, expected_outlicenses) + expected_outlines = [ + 'LICENSE:${PN} = "BSD-2-Clause"', + 'LICENSE:a = "ISC & MIT"', + 'LICENSE:b = "(ISC | MIT)"', + 'LICENSE:c = "(BSD-2-Clause | MIT)"', + 'LICENSE:d = "(BSD-2-Clause | MIT) & MIT"', + 'LICENSE:e = "(ISC | MIT) & Apache-2.0 & BSD-3-Clause"', + 'LICENSE:f = "BSD-3-Clause"', + 'LICENSE:g = "Unknown"' + ] + self.assertEqual(outlines, expected_outlines) + class RecipetoolAppendsrcBase(RecipetoolBase): def _try_recipetool_appendsrcfile(self, testrecipe, newfile, destfile, options, expectedlines, expectedfiles): From patchwork Wed Dec 15 16:08:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Herbrechtsmeier X-Patchwork-Id: 1540 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7C99C4321E for ; Thu, 16 Dec 2021 01:43:27 +0000 (UTC) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (EUR04-DB3-obe.outbound.protection.outlook.com [40.107.6.80]) by mx.groups.io with SMTP id smtpd.web08.244.1639584527069971504 for ; Wed, 15 Dec 2021 08:08:48 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@weidmueller.onmicrosoft.com header.s=selector1-weidmueller-onmicrosoft-com header.b=QkMS80QQ; spf=pass (domain: weidmueller.com, ip: 40.107.6.80, mailfrom: stefan.herbrechtsmeier-oss@weidmueller.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kiXrXJ/kstvr5U1gj7pNjjK5BFMqrGsXodnXpQLEj6siMXsNBIzCwHTr9sgvKYMPb5O8tnevRXFn9Bg1o/SZYTlKiJweXf2rCmAzW/E4OPaKMyuONGcMmTqc9pnl1tK7cw92vDKA5o+SYw+8cB6xijwtaL+rAgQGAHjyPbEyKi88DHfXYZ/0Cwb4txiGKDpEdcYT22r54OtCHvP6ZpLCZxDhu31AiOJBGUitt44EF6Xe6jh/CH/wI2o4fTO0oQOfji/QYzVSrchZXeSsJxR2+AQTGGqUE9bAkp6hyGRVMtOX1DKw/rLo04ADXAee0Kg2oTTiRvgJH/WpJWmFfnp7NA== 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=ro61iFU6F5vAjZXAWQ20lo9bYzcmuYcz0HWZGyeSpQ8=; b=L3UDwWBaXKVR3jonxXWqlaT3cjyQRmr4iRFY7NAy5wzIcRQLtkUJ+eWLqad6vKjOBd28PpyJzViFkikdTxInJ4tYYxSJonG5HN+W40bOJN4b/CyQMaC4Um2JvokPDj8OfFqJrfYgaFo1GYdSHG0P5CbaiYNuMOFoO8IclT/GyVWudzkUCxKAbMuVLL1kOvM9vQ5I/Ye9hKYgr+ittfAZUzUVmwoWJvHJ55F5T8ZYhhbB2hazkCgyUEnwvXcN0wlf+07xpz+lCKVPZZrGK1W6mNMdMvHkYZgwOkmKH/6OebElljDUSvL88eYUgZIvbKHPC2Z0w3SzMHuoKMwhFoEyVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=weidmueller.com; dmarc=pass action=none header.from=weidmueller.com; dkim=pass header.d=weidmueller.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=weidmueller.onmicrosoft.com; s=selector1-weidmueller-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ro61iFU6F5vAjZXAWQ20lo9bYzcmuYcz0HWZGyeSpQ8=; b=QkMS80QQZtzXTEmCcd6ttC/F84/Nxl1k7HhtDmtNmPeKUxnZUad3dHjAjV02qoVX/AoOsU2hJr5tB4qz/3az5A911sgS2O8zIXY3QuCqi9r3/0TavVbYhUktslGmDxHlru4BvGiQhMW87XOshX0x8RqCwja51zq4sZ+lnR521bA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=weidmueller.com; Received: from PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) by PR2PR08MB4665.eurprd08.prod.outlook.com (2603:10a6:101:25::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.16; Wed, 15 Dec 2021 16:08:37 +0000 Received: from PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f:41c4:eb10:5010]) by PAXPR08MB6969.eurprd08.prod.outlook.com ([fe80::f:41c4:eb10:5010%9]) with mapi id 15.20.4801.014; Wed, 15 Dec 2021 16:08:37 +0000 From: Stefan Herbrechtsmeier To: openembedded-core@lists.openembedded.org CC: Stefan Herbrechtsmeier Subject: [PATCH v3 4/4] selftest: recipetool: Add test for handle_license_vars function Date: Wed, 15 Dec 2021 17:08:13 +0100 Message-ID: <20211215160813.23368-4-stefan.herbrechtsmeier-oss@weidmueller.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211215160813.23368-1-stefan.herbrechtsmeier-oss@weidmueller.com> References: <20211215160813.23368-1-stefan.herbrechtsmeier-oss@weidmueller.com> X-ClientProxiedBy: AM6P191CA0097.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8a::38) To PAXPR08MB6969.eurprd08.prod.outlook.com (2603:10a6:102:1d8::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 12eaaaaa-388a-444d-fc36-08d9bfe52741 X-MS-TrafficTypeDiagnostic: PR2PR08MB4665:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yG/g4hDHpoXZf75OjWJA4kwGdHQOvhU1j/BPK+t1vab6JcGAP/wgFaCpKs0J6iOeCel7Rku/ZzBKFYQuzi/SzJkC7MYqPL+eaLMvMP6CMgCRRUGz0nnGSG3UmRZSP5PCKkJZGY0kPbE4rjkNPY6QHtRVd3A17/ZpwrDG/5sEd1/qT9oxBXyLYS5CpPD2TjdjZC9oQ4i79GVn2+rYPhTRrbeV12YfDHFze0tWM4KcKjc/pqLaUjrgaVu9wK/BIqZ8iKk2BTGs6oJSHOeTZleDpyl97DViZPzLe/o8JuzXi6VJFQXj7VjyOiWWokRmzC4dA1VgQVZ08bH68qvsWq2BdI6RmMzQBGDhyFzaBL9s5c/f4bHNxVRSTQ6WMNwWysIBK77pCzf+HP/eVB7t5aTu/XOhhQ85siCIS4vI4ZcpuIMOKlSXDUsMXIaAqm9FDtHhS26nWQukh1bkA2QvGDZMcAsr2n0u6LhX6l7jv+dnlX2l4eFt6ah7pGPdO7XC5HC0WVTrA+qtXK+lB7PSfqZVRhkDnv/j2VCdkznjYoWlgQofklkByw6m4Tv0m5irZgnFyCRs1IuRuxXgCpjlcOj0731Mcreke9y/xdE9xNnOjq5P4JwEt0UQ9iPtch2a5C0QF3Yn35SutWMEbFH8rrtL6GWsr+MJjkutjW4YA7ylPC07B2sG7HY8zVHoQOrEaFtfsGTHBKNM4a2w5vRSniFx2A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB6969.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(2906002)(6506007)(52116002)(38100700002)(316002)(1076003)(6666004)(38350700002)(6512007)(107886003)(4326008)(2616005)(6486002)(8676002)(66476007)(186003)(66556008)(6916009)(26005)(66946007)(36756003)(83380400001)(508600001)(8936002)(5660300002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jlsI6IAl600dLBJjOjwn6m5lHQX5LQM5SHmefYQSSfCPT+pW7rujYm0VCc4cxUYKvZ/dpeIVm2L7jcosIMB9dhJn2ft0Qw0KiLtSJYUJEJTmpbQjxHRwXHvImZBvZqspWh6v3jbeVQcecGuAMWUxKLocPvKhE4cvfopFFM/uu2PRWTjrt5MVvW2l6sH0VuC7xN0J+nFQ1/dC9ifDR6/KmSC5QMxAQBgxmHSqB6GiC3MGnN36IYGCqmu4wr2dcwV7O64+HIPx+jkrom/CruEuXTzNlfzC+3Phsb8QTPe5sXM9VXWkcEcirL9Lu3PWVzKU5uHLu44cx0OtSGItAvngEB8Eq/Bd9yFsoQRYyQkTe+wfb3JwNmmCJczTnu/3fa2K05SDxECZUn1Z7PaXsiEQtfMzmNtZWnOA29W+uDKPO7UvpyE1bvuWHr3rdiscnvxV76ytwl+RO37uXAhK4TEaSQ9hLuItu1FGbzqdZ6EV+7XH+uPrM6YeiIu5M3ZPJiEKqs1dq/JafygR0NATIpyFCVTW8j2ksQSNBDp1H2qNr3I3mo/Ug7llKCa0NImfrnFx9K+vaDxlQ1Qm0EPeevIu+DJnfCBg/GOuRQ4bzgV8vmB42HCze6t7VEiraab5m03LA1PNDbV8WSyb7KHaseyoHVzIXSdxbwWJMEMDXOwLrqzJBgEFJmvmh7gk/4CrqsB3p9QCl++zKKmKJCmU6Gqb2xhsAB6hvzCnihTZm7bskjNW3Z30x/LEbZ0asW8b6frtuqzFy60pTdnnAkxFWsLvt5EJkUiatvLSBwfkY3J+A0PGrH/SEbfFxo8zMvFkfPP6JWE7QJPKIMvw5i7/9BRxJx2Xu2JwE58yr0rMzOR3dtUHFyKz1OdjDqwq/738iXqBG4WMGMtYNcRlJyPn50UJgNfAOhClo//m1i547gpInGKierVTGVYnlUuESAgG0lWDkp4VLlB+Lk2vIJAgunsOeQGsP/ULE3erCBai2kszYmMnk4TJdQPRD4uXS3+MV8I48u0NBWz9+UF/vD+3OQ7OHHd7c6Ju+T1h1VsKkia55AKyt54cpHnvtMyncPqJDUGM2bS6C1JMuMW2j409YaMRok6HgTRMipbzpAkTScHAuJwhtzWrcWVk1a8m3Dj0lS74D5pQRQhmf3kw+gSuESRi+uLILA0bajlfx1aL3V2s7iSduYerKbMq7S6+nmQELL7f3Gb1F55sTw9FrwPIjx8MrqvS3mw8aLtI3icF6E6fr/RcVDVa81QuFU/9Z2rzvJQd3sSXxzdMhMnKEFjJgZM57Muo5wDylWqDAPAyKvKEpueD1RMQucoOfHf6MV6JOeyEIrKN1MohJgdmvNxELDU0TvZF7Ar1bZnkTeMldkC76ks79iBbtjB4BCNA5NphfB83Tw+HaP5nVWhqL2EgyA1rdtUKZ6dsg817H6HUQd3hhOszkqQxrJ1R7Tt/goetev9z0h1vLNGjdzeqIx6RARraP+pmTxVscK8lnsk+I2OE87f0tZlTrMYILWJMI6a+ecFhsLL4gsqhMR1b8ulcgOIMZVPsZuieZa59q7EsMUNefjy7Q+LbrIfqvFKmXKPUjIkxkgMncGCTZE89wbunAUVe3ryH9OJg5HrvYW3H2KJdFPc= X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12eaaaaa-388a-444d-fc36-08d9bfe52741 X-MS-Exchange-CrossTenant-AuthSource: PAXPR08MB6969.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2021 16:08:37.8121 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e4289438-1c5f-4c95-a51a-ee553b8b18ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: s/Add8A/1vpsLFs23PlOH5wIBQS7alr03j8d16+vJcQ/fh0bKhY9jQP6OlrtuP/C/wO8jCailX1lBGWWqvwuaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4665 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 16 Dec 2021 01:43:27 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/159733 From: Stefan Herbrechtsmeier Signed-off-by: Stefan Herbrechtsmeier --- Changes in v3: - Sort LIC_FILES_CHKSUM values meta/lib/oeqa/selftest/cases/recipetool.py | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py index 1c73b2c5e0..9db1ddb532 100644 --- a/meta/lib/oeqa/selftest/cases/recipetool.py +++ b/meta/lib/oeqa/selftest/cases/recipetool.py @@ -592,6 +592,68 @@ class RecipetoolTests(RecipetoolBase): with open(srcfile, 'w') as fh: fh.writelines(plugincontent) + def test_recipetool_handle_license_vars(self): + from create import handle_license_vars + from unittest.mock import Mock + + commonlicdir = get_bb_var('COMMON_LICENSE_DIR') + + d = bb.tinfoil.TinfoilDataStoreConnector + d.getVar = Mock(return_value=commonlicdir) + + srctree = tempfile.mkdtemp(prefix='recipetoolqa') + self.track_for_cleanup(srctree) + + # Multiple licenses + licenses = ['MIT', 'ISC', 'BSD-3-Clause', 'Apache-2.0'] + for licence in licenses: + shutil.copy(os.path.join(commonlicdir, licence), os.path.join(srctree, 'LICENSE.' + licence)) + # Duplicate license + shutil.copy(os.path.join(commonlicdir, 'MIT'), os.path.join(srctree, 'LICENSE')) + + extravalues = { + # Duplicate and missing licenses + 'LICENSE': 'Zlib & BSD-2-Clause & Zlib', + 'LIC_FILES_CHKSUM': [ + 'file://README.md;md5=0123456789abcdef0123456789abcd' + ] + } + lines_before = [] + handled = [] + licvalues = handle_license_vars(srctree, lines_before, handled, extravalues, d) + expected_lines_before = [ + '# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is', + '# your responsibility to verify that the values are complete and correct.', + '# NOTE: Original package / source metadata indicates license is: BSD-2-Clause & Zlib', + '#', + '# NOTE: multiple licenses have been detected; they have been separated with &', + '# in the LICENSE value for now since it is a reasonable assumption that all', + '# of the licenses apply. If instead there is a choice between the multiple', + '# licenses then you should change the value to separate the licenses with |', + '# instead of &. If there is any doubt, check the accompanying documentation', + '# to determine which situation is applicable.', + 'LICENSE = "Apache-2.0 & BSD-2-Clause & BSD-3-Clause & ISC & MIT & Zlib"', + 'LIC_FILES_CHKSUM = "file://LICENSE;md5=0835ade698e0bcf8506ecda2f7b4f302 \\\n' + ' file://LICENSE.Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10 \\\n' + ' file://LICENSE.BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9 \\\n' + ' file://LICENSE.ISC;md5=f3b90e78ea0cffb20bf5cca7947a896d \\\n' + ' file://LICENSE.MIT;md5=0835ade698e0bcf8506ecda2f7b4f302 \\\n' + ' file://README.md;md5=0123456789abcdef0123456789abcd"', + '' + ] + self.assertEqual(lines_before, expected_lines_before) + expected_licvalues = [ + ('MIT', 'LICENSE', '0835ade698e0bcf8506ecda2f7b4f302'), + ('Apache-2.0', 'LICENSE.Apache-2.0', '89aea4e17d99a7cacdbeed46a0096b10'), + ('BSD-3-Clause', 'LICENSE.BSD-3-Clause', '550794465ba0ec5312d6919e203a55f9'), + ('ISC', 'LICENSE.ISC', 'f3b90e78ea0cffb20bf5cca7947a896d'), + ('MIT', 'LICENSE.MIT', '0835ade698e0bcf8506ecda2f7b4f302') + ] + self.assertEqual(handled, [('license', expected_licvalues)]) + self.assertEqual(extravalues, {}) + self.assertEqual(licvalues, expected_licvalues) + + def test_recipetool_split_pkg_licenses(self): from create import split_pkg_licenses licvalues = [