From patchwork Wed Mar 29 15:30:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?RnLDqWTDqXJpYyBNYXJ0aW5zb25z?= X-Patchwork-Id: 21910 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 D445BC74A5B for ; Wed, 29 Mar 2023 15:30:56 +0000 (UTC) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by mx.groups.io with SMTP id smtpd.web10.1029.1680103849594932018 for ; Wed, 29 Mar 2023 08:30:49 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ifKHCPaz; spf=pass (domain: gmail.com, ip: 209.85.128.43, mailfrom: frederic.martinsons@gmail.com) Received: by mail-wm1-f43.google.com with SMTP id bg16-20020a05600c3c9000b003eb34e21bdfso11746953wmb.0 for ; Wed, 29 Mar 2023 08:30:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680103848; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6lzaowPBGNyClSitAu7sVLJ9GXQv0xYa51QvIRhfNm0=; b=ifKHCPaz1uuZFu5fFVf4W4Moh2O6EwwQGkTRL6URL0fPGY7ds60W+Jn2T8+7Y9QCAc s5vpBZQhVcT15owyMI2jXLa/haGMaF16FpC7HEHZXZaCmOCzj45kBAvapxvoaTzLNNT2 zTheC7hfEt8BNUhiM5KMIpF1Jt260uPxBmdTQIUh8SXONkp8HBXygcSYKEiJzt/9KZ2X gc4zdNhaBL5A7/dTlWmPGyREx3U8Uup8o+7JyhPtvi9O84lN8VFUT2b/XrjzecqzZqm8 7SBYG5wS/Psqc71k4OLSslRgE9d9dA0n8MnU4KJJHHq/sDR26oKQh6k2KVU8ox3DfyYn Mb6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680103848; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6lzaowPBGNyClSitAu7sVLJ9GXQv0xYa51QvIRhfNm0=; b=Z/RWBNfNh8HSXXdyZFHsDchbRfWDsqCZ3+/1cnVSF//NZxO2CZJzbLoj3nnQU/Rh4G YPW7V5o0+SfwGFPuV+zqlpbkxBXe8+1FBbb/U1vw7lV7KyV1vbkMXlMrE4bSKz2avSMd ook7LlBDqD1RKUqP8w4onkHVtQ/KiQFCboT/LAdxXKGFK3A7sBbsaUrt1KeGHxGnkxW+ In03Eqgwl9/OXRA4ONwbOgkposdCkUyMl/dpoiazPtRXduBkeehuXrXX0dQEqdgIptPX 2QBOKoakjfN2c7unEa34bgRc4o1OZfIig+CDLZyg7njzdm1o3l3+zN8CxMthi9S4OnZC yVGw== X-Gm-Message-State: AO0yUKX04S8kIQVgNmFVwHKUsDEj2sOZnn6yKwFeK6uvOG34zgKV81Oj d/yPyps0c+UckYkl2X2meauxhByTcVE= X-Google-Smtp-Source: AK7set+WfgjGXSx/mfoTMBvw23VqVxUwif5Gq5dfeJAbWyj6DdXYGlemGf8Y9ejyamz2PR4DjIDVbQ== X-Received: by 2002:a05:600c:220e:b0:3ee:a205:848f with SMTP id z14-20020a05600c220e00b003eea205848fmr14305408wml.20.1680103847618; Wed, 29 Mar 2023 08:30:47 -0700 (PDT) Received: from work-pc.core.sigfox.net ([2a01:e0a:8d5:c6c0:f236:1d99:4c31:5762]) by smtp.gmail.com with ESMTPSA id a13-20020a05600c224d00b003edef091b17sm2607378wmm.37.2023.03.29.08.30.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Mar 2023 08:30:47 -0700 (PDT) From: frederic.martinsons@gmail.com To: openembedded-core@lists.openembedded.org Cc: alex.kiernan@gmail.com Subject: [PATCH V4 1/5] cargo_common.bbclass: Support local github repos Date: Wed, 29 Mar 2023 17:30:30 +0200 Message-Id: <09a3ae010aaa2617dac03ff602c4ce68e0cc4060.1680103647.git.frederic.martinsons@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 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 ; Wed, 29 Mar 2023 15:30:56 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/179286 From: Alex Kiernan Since disable network was added cargo configurations which reference git repos fail as they attempt to fetch across the network as part of do_compile, even if EXTRA_OECARGO_PATHS to add them as part of `paths` is used, as this is documented as only working for packages which exist in crates.io. Add parsing of the SRC_URIs for git repos and include `[patch]` sections to redirect to the checked out source repos which the bitbake fetcher has already populated. There are still cases which don't work - if you have multiple copies of the same repo with different revisions, there's currently no way to represent that and anything using a repo which has a virtual manifest will fail to build (see https://github.com/rust-lang/cargo/issues/4934). Signed-off-by: Alex Kiernan --- meta/classes-recipe/cargo_common.bbclass | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/meta/classes-recipe/cargo_common.bbclass b/meta/classes-recipe/cargo_common.bbclass index f503a001dd..63b1382908 100644 --- a/meta/classes-recipe/cargo_common.bbclass +++ b/meta/classes-recipe/cargo_common.bbclass @@ -116,6 +116,36 @@ cargo_common_do_configure () { EOF } +python cargo_common_do_patch_paths() { + cargo_config = os.path.join(d.getVar("CARGO_HOME"), "config") + if not os.path.exists(cargo_config): + return + + src_uri = (d.getVar('SRC_URI') or "").split() + if len(src_uri) == 0: + return + + patches = dict() + workdir = d.getVar('WORKDIR') + fetcher = bb.fetch2.Fetch(src_uri, d) + for url in fetcher.urls: + ud = fetcher.ud[url] + if ud.type == 'git': + name = ud.parm.get('name') + destsuffix = ud.parm.get('destsuffix') + if name is not None and destsuffix is not None: + repo = '%s://%s%s' % (ud.proto, ud.host, ud.path) + path = '%s = { path = "%s" }' % (name, os.path.join(workdir, destsuffix)) + patches.setdefault(repo, []).append(path) + + with open(cargo_config, "a+") as config: + for k, v in patches.items(): + print('\n[patch."%s"]' % k, file=config) + for name in v: + print(name, file=config) +} +do_configure[postfuncs] += "cargo_common_do_patch_paths" + oe_cargo_fix_env () { export CC="${RUST_TARGET_CC}" export CXX="${RUST_TARGET_CXX}" From patchwork Wed Mar 29 15:30:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?RnLDqWTDqXJpYyBNYXJ0aW5zb25z?= X-Patchwork-Id: 21911 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 E1C25C77B62 for ; Wed, 29 Mar 2023 15:30:56 +0000 (UTC) Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by mx.groups.io with SMTP id smtpd.web11.1102.1680103850977946221 for ; Wed, 29 Mar 2023 08:30:51 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=TZJruCsF; spf=pass (domain: gmail.com, ip: 209.85.128.45, mailfrom: frederic.martinsons@gmail.com) Received: by mail-wm1-f45.google.com with SMTP id m6-20020a05600c3b0600b003ee6e324b19so9954635wms.1 for ; Wed, 29 Mar 2023 08:30:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680103849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CKr1j1hZIjN/A0KbFl3IZ5cAZYIF8AY0qU7hY1/3eOs=; b=TZJruCsFHuM84iIuwxO1pua5zTrsMtzC6hmru4sZNA+vKZJKyTjulXVya5At/lcZMP /Aw4xnCldaQT2JzMVnhI3w9njDPrKLK9Z8Mm/7fO14jat5V5bLorS4Zm2yit5ksbAd7B YrEBwpyMZHdbvBi1FF19XsocUs5kMaBtmeGNjUmbUW05G7GRwVjcVZ790I9HWcsrXePv 5pjCFTMfpM55VwEKijq/9MjYBtpcLz9RTMbXXgW6pPf1fFSNUBhs73amERraEFCf6iRG 4uRf26mVmmN4WeQvTGqZGYAUuqC9idHh7f4LoMPrqPRZlm4e4/8HiqUSIgqg7Mcq+hEu JBbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680103849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CKr1j1hZIjN/A0KbFl3IZ5cAZYIF8AY0qU7hY1/3eOs=; b=Kq3MeERI/ZztuhAaQc3OojomiqeZOo8bzm9QvFzQifyp5wo5QWzrwU95BNqkj5xTqO tWatInJfpz98dAEo4Di/SKx/WPJJ4xDLwzTOnxwZ2gjxnDhFZokQ09Lfmp7KeRpaRV+Z NQqKKnY8ax0MIpyNa7ztwi6dbt8NiE6GuiN+LwMfKW+FBRXLzUD9tnurLysM2bBLBlUZ ajjkKDtvTtLEgw1kKsWhXWLsWdqT5zGqPZ5lnGXOOXXPoilOdJemwmA/x+PlhdD7NxKR prcn6EERcuJrpxVRbMzgLGtq9O8QG3aH6X0GSPHmdlXOByGZcqABSi9C1yoVyRe04bWJ OdFg== X-Gm-Message-State: AO0yUKUPrmyip0haun58sWaxGrho4VvLpXnTrxzlRbsKNN353h8oez7D RtOJdOAKI4GFP+7ekQT2JnlyEiqyvjE= X-Google-Smtp-Source: AK7set+mPLE0nwI7RujFAEGHNcdqxRnHUtDBSPZHS9T7zE9nQqB+TvabX83m9fb0e+eato48xgZ4jg== X-Received: by 2002:a05:600c:20d:b0:3ee:672d:caae with SMTP id 13-20020a05600c020d00b003ee672dcaaemr16030272wmi.36.1680103848959; Wed, 29 Mar 2023 08:30:48 -0700 (PDT) Received: from work-pc.core.sigfox.net ([2a01:e0a:8d5:c6c0:f236:1d99:4c31:5762]) by smtp.gmail.com with ESMTPSA id a13-20020a05600c224d00b003edef091b17sm2607378wmm.37.2023.03.29.08.30.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Mar 2023 08:30:48 -0700 (PDT) From: frederic.martinsons@gmail.com To: openembedded-core@lists.openembedded.org Cc: alex.kiernan@gmail.com Subject: [PATCH V4 2/5] cargo_common.bbclass: add support of user in url for patch Date: Wed, 29 Mar 2023 17:30:31 +0200 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 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 ; Wed, 29 Mar 2023 15:30:56 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/179287 From: Frederic Martinsons To handle url like git://git@repo/project Signed-off-by: Frederic Martinsons --- meta/classes-recipe/cargo_common.bbclass | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/meta/classes-recipe/cargo_common.bbclass b/meta/classes-recipe/cargo_common.bbclass index 63b1382908..82ab25b59c 100644 --- a/meta/classes-recipe/cargo_common.bbclass +++ b/meta/classes-recipe/cargo_common.bbclass @@ -134,7 +134,10 @@ python cargo_common_do_patch_paths() { name = ud.parm.get('name') destsuffix = ud.parm.get('destsuffix') if name is not None and destsuffix is not None: - repo = '%s://%s%s' % (ud.proto, ud.host, ud.path) + if ud.user: + repo = '%s://%s@%s%s' % (ud.proto, ud.user, ud.host, ud.path) + else: + repo = '%s://%s%s' % (ud.proto, ud.host, ud.path) path = '%s = { path = "%s" }' % (name, os.path.join(workdir, destsuffix)) patches.setdefault(repo, []).append(path) From patchwork Wed Mar 29 15:30:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?RnLDqWTDqXJpYyBNYXJ0aW5zb25z?= X-Patchwork-Id: 21909 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 E10F5C77B61 for ; Wed, 29 Mar 2023 15:30:56 +0000 (UTC) Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by mx.groups.io with SMTP id smtpd.web10.1033.1680103852377466388 for ; Wed, 29 Mar 2023 08:30:52 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=YJXBV3ry; spf=pass (domain: gmail.com, ip: 209.85.128.54, mailfrom: frederic.martinsons@gmail.com) Received: by mail-wm1-f54.google.com with SMTP id n19so9206171wms.0 for ; Wed, 29 Mar 2023 08:30:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680103850; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ol8FfIAHbEw0jNdubbhfpGHjv/EAyiWShTkIPW2gNVQ=; b=YJXBV3ry/0beTf+oGH+6qsUJkizW2B6DINY7d3IrC+f5duBFucs2jJET6+iPDCZL5o /ceOds0+BqYzjy2UQXbn/JYsttHjWUWWdfCGvNbLLuf7HfnCcPz7aYdscnNygi2TSMJj Og3g9BASWd2aW6cTsNgouuiLDR7OVDH9Egs1fPFK4LIgzPKBZez6kBFnWzkYXIv6hqkH /3mLezTqySFdEGude0OtuoHI0cWtdcjVc5bKsW9yWH+kE5/nuUFsQ9yVgDSQqw4llp+K AXTg9I2jnE09L7IDzrHpIxtqotiC2Q/I1Df4ivD4qqjYsaB7W7eKmlM8QLxrx9crdgYP X/NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680103850; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ol8FfIAHbEw0jNdubbhfpGHjv/EAyiWShTkIPW2gNVQ=; b=mTZKfx6QdaJV5hyIcrjfsj2Zt6MDRpiwnWFVBjfxA4YvJ5IPwt9e7gs/jOtEdOmlut JGpq+SDslknor+7n6kkAB9KAsengMnqX3j57gI3nV4HuZCkfkDCw8QH/vDjVAjfN7+Zz o5vkZQ+kO3GvO7PyogdCUxsJewB4juZACFnB9p44HSr5Xep2ZDkA8/K3M3a/BGTK8YTe 5mZZvB3ZVYkKMy+7DQVDtO4DEuVu8VqnS/I4Nm66iSH3dVw64sdvjDZoygB718a0vPKF nyuK7ZXTjiVlq7LaNceWvkbdb8BduR2RjQvWiQx8Gk9BgVEZGOMrqiHKK3bFvDftdLv+ ywXw== X-Gm-Message-State: AAQBX9d9jcoQNj9EayU3c0heDdkJmXplMwfy/uhpL6SRaxDXXAs3cP3d XL6GCCrbhNt0q+u08um53WGKr0h66p0= X-Google-Smtp-Source: AKy350Ze78Y2fHvQv6BWayeA7LWRxfYapq4IHErjucjHFZ8w2glCI9GFS8IZgjuyQPuACPQzdQQTvw== X-Received: by 2002:a7b:cd93:0:b0:3ed:346d:4534 with SMTP id y19-20020a7bcd93000000b003ed346d4534mr2187805wmj.0.1680103850557; Wed, 29 Mar 2023 08:30:50 -0700 (PDT) Received: from work-pc.core.sigfox.net ([2a01:e0a:8d5:c6c0:f236:1d99:4c31:5762]) by smtp.gmail.com with ESMTPSA id a13-20020a05600c224d00b003edef091b17sm2607378wmm.37.2023.03.29.08.30.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Mar 2023 08:30:50 -0700 (PDT) From: frederic.martinsons@gmail.com To: openembedded-core@lists.openembedded.org Cc: alex.kiernan@gmail.com Subject: [PATCH V4 3/5] devtool: add support for multiple git url inside a cargo based recipe Date: Wed, 29 Mar 2023 17:30:32 +0200 Message-Id: <0e0921c5735b85c6020a3292aec05fcf7947bebd.1680103647.git.frederic.martinsons@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 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 ; Wed, 29 Mar 2023 15:30:56 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/179288 From: Frederic Martinsons Without that, the possible git urls that are in SRC_URI of a recipe are removed from SRC_URI during devtool process and so the cargo_common_do_patch_paths in cargo_common.bbclass cannot patch these packages to fetch them locally. I use a generic type name because I foresee this change will be useful for recipe that used a package manager (cargo but also npm) see https://bugzilla.yoctoproject.org/show_bug.cgi?id=11015 Signed-off-by: Frederic Martinsons --- meta/classes/externalsrc.bbclass | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass index 26c5803ee6..b00fdba8e9 100644 --- a/meta/classes/externalsrc.bbclass +++ b/meta/classes/externalsrc.bbclass @@ -68,9 +68,7 @@ python () { for url in fetch.urls: url_data = fetch.ud[url] parm = url_data.parm - if (url_data.type == 'file' or - url_data.type == 'npmsw' or url_data.type == 'crate' or - 'type' in parm and parm['type'] == 'kmeta'): + if url_data.type in ['file', 'npmsw', 'crate'] or parm.get('type') in ['kmeta', 'git-dependency']: local_srcuri.append(url) d.setVar('SRC_URI', ' '.join(local_srcuri)) From patchwork Wed Mar 29 15:30:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?RnLDqWTDqXJpYyBNYXJ0aW5zb25z?= X-Patchwork-Id: 21908 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 E340FC6FD18 for ; Wed, 29 Mar 2023 15:30:56 +0000 (UTC) Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by mx.groups.io with SMTP id smtpd.web10.1034.1680103853991073604 for ; Wed, 29 Mar 2023 08:30:54 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=avb7QVBi; spf=pass (domain: gmail.com, ip: 209.85.128.44, mailfrom: frederic.martinsons@gmail.com) Received: by mail-wm1-f44.google.com with SMTP id u1so9172398wmn.5 for ; Wed, 29 Mar 2023 08:30:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680103852; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=q2b0TPXaHTFMvF4K3YVDuI9TJZiA28rwMBdM4p9jhj0=; b=avb7QVBiwGYLBZ5PmNL4FjGFJwaLTesSaRfJTeTG0oxLd8eLlinOnkTYID3xkomC0D kJCebauMeTBfYFa+fEQjetvDeB26tehpGGvudpt0BRznJXrcZItieuwGjWpwZd0p76x4 g+nwPa5KFP09IVLm3zU+eu2j5RNBOQFq84F84SsLbHshH06LeT7BAnkBxYws3kU3LHS9 dsH882Z9d33FpohLY6xbbf9VR7U+xbzaISRCVSwJ5uIhfqIpRBK7h+iC30zNkrswX7X6 H7UL4wxJ5QceERmlfNjMSrIWBeTBVKunI3E9UTWBL6XosFHNsG+LVAnNucIOVy6LIFMc Drcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680103852; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=q2b0TPXaHTFMvF4K3YVDuI9TJZiA28rwMBdM4p9jhj0=; b=JQabBV3u7q7dg3BBe0MpvsH5d4g9OYocVIzt1DH+GRlWOVxPO+6O7EU1TdiBY3OUQM RdBCcsldaRN8jBo5fJN/SGelabTQvPTXtyE+ZfQYsbbYuf8RDJDirlJpwR4CS9j2viAC MJ0lDdLBQOlz2NvA2tjGMQAr2UFKZecUrqjeMQhzXuYabgKnMZca2ZBweUYdbuTcOBmt j9yVzvXc1+OkjK06ms9JUlVDTnYEksnRqogGuAMwT9LSv2wIo1TQp9sTRmTPZskD6HoC LguBnsDDG31ZHf38Rret26xlETJRdPQEKC4VlnHN0ykcSOCd3I0Ey2moyOuYMaVnrM8r AzAQ== X-Gm-Message-State: AAQBX9e8UUCAZFosTzNJi/N73gCwT9U7Eb7ElStmBvovuS4ov5cXQSjF L7RTyN5XZJ2v/b57T2B+LfqENyUYtCE= X-Google-Smtp-Source: AKy350Z4x/BOEZrqXPR/mN/bYIC8sOgDpFG0ht3qDz6HnFWTvgAjG+A2Lsmttff1MEpuZyxH1FQaVA== X-Received: by 2002:a7b:cd98:0:b0:3f0:3c2:3fa4 with SMTP id y24-20020a7bcd98000000b003f003c23fa4mr2191489wmj.12.1680103852182; Wed, 29 Mar 2023 08:30:52 -0700 (PDT) Received: from work-pc.core.sigfox.net ([2a01:e0a:8d5:c6c0:f236:1d99:4c31:5762]) by smtp.gmail.com with ESMTPSA id a13-20020a05600c224d00b003edef091b17sm2607378wmm.37.2023.03.29.08.30.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Mar 2023 08:30:51 -0700 (PDT) From: frederic.martinsons@gmail.com To: openembedded-core@lists.openembedded.org Cc: alex.kiernan@gmail.com Subject: [PATCH V4 4/5] patch: support of git patches when the source uri contained subpath parameter Date: Wed, 29 Mar 2023 17:30:33 +0200 Message-Id: <917c1245019b2f55e02422da93cef9ba03670a0a.1680103647.git.frederic.martinsons@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 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 ; Wed, 29 Mar 2023 15:30:56 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/179289 From: Frederic Martinsons This is for a specific case where: - A recipe use a subpath on a git repo (e.g. git://repo.git/projects;subpath=subproject) - The recipe contains a patch to apply - a devtool modify is used on this recipe With these conditions, the patch cannot be applied at all. GitApplyTree class is used for handling patch under devtool, but when subpath is present in SRC_URI, the resulting git tree is dirty (every files and directories which was not in subpath are suppressed) and so "git am" refuse to apply patches. That would not be an issue since the GitApplyTree have a fallback to PatchTree in case of error, but during this error management, there is a "git reset --hard HEAD" call which suppress the subpath operation and finally prevents the patch to be applied even with PatchTree. When devtool is not involved, only PatchTree class is used and the above problem is irrelevant. To support git patching during devtool, the presence of subpath and the dirtyness of the repo are checked. If both conditions are met, we directly call PatchTree like it was already done in case of error during git apply. Signed-off-by: Frederic Martinsons --- meta/lib/oe/patch.py | 57 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py index b2dc8d0a90..d047b3b947 100644 --- a/meta/lib/oe/patch.py +++ b/meta/lib/oe/patch.py @@ -499,6 +499,36 @@ class GitApplyTree(PatchTree): finally: shutil.rmtree(tempdir) + def _need_dirty_check(self): + fetch = bb.fetch2.Fetch([], self.d) + check_dirtyness = False + for url in fetch.urls: + url_data = fetch.ud[url] + parm = url_data.parm + # a git url with subpath param will surely be dirty + # since the git tree from which we clone will be emptied + # from all files that are not in the subpath + if url_data.type == 'git' and parm.get('subpath'): + check_dirtyness = True + return check_dirtyness + + def _commitpatch(self, patch, patchfilevar): + output = "" + # Add all files + shellcmd = ["git", "add", "-f", "-A", "."] + output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) + # Exclude the patches directory + shellcmd = ["git", "reset", "HEAD", self.patchdir] + output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) + # Commit the result + (tmpfile, shellcmd) = self.prepareCommit(patch['file'], self.commituser, self.commitemail) + try: + shellcmd.insert(0, patchfilevar) + output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) + finally: + os.remove(tmpfile) + return output + def _applypatch(self, patch, force = False, reverse = False, run = True): import shutil @@ -534,6 +564,19 @@ class GitApplyTree(PatchTree): shutil.copy2(commithook, applyhook) try: patchfilevar = 'PATCHFILE="%s"' % os.path.basename(patch['file']) + if self._need_dirty_check(): + # Check dirtyness of the tree + try: + output = runcmd(["git", "--work-tree=%s" % reporoot, "status", "--short"]) + except CmdError: + pass + else: + if output: + # The tree is dirty, not need to try to apply patches with git anymore + # since they fail, fallback directly to patch + output = PatchTree._applypatch(self, patch, force, reverse, run) + output += self._commitpatch(patch, patchfilevar) + return output try: shellcmd = [patchfilevar, "git", "--work-tree=%s" % reporoot] self.gitCommandUserOptions(shellcmd, self.commituser, self.commitemail) @@ -560,19 +603,7 @@ class GitApplyTree(PatchTree): except CmdError: # Fall back to patch output = PatchTree._applypatch(self, patch, force, reverse, run) - # Add all files - shellcmd = ["git", "add", "-f", "-A", "."] - output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) - # Exclude the patches directory - shellcmd = ["git", "reset", "HEAD", self.patchdir] - output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) - # Commit the result - (tmpfile, shellcmd) = self.prepareCommit(patch['file'], self.commituser, self.commitemail) - try: - shellcmd.insert(0, patchfilevar) - output += runcmd(["sh", "-c", " ".join(shellcmd)], self.dir) - finally: - os.remove(tmpfile) + output += self._commitpatch(patch, patchfilevar) return output finally: shutil.rmtree(hooks_dir) From patchwork Wed Mar 29 15:30:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?RnLDqWTDqXJpYyBNYXJ0aW5zb25z?= X-Patchwork-Id: 21912 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 C0FD4C74A5B for ; Wed, 29 Mar 2023 15:31:06 +0000 (UTC) Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by mx.groups.io with SMTP id smtpd.web10.1039.1680103858548098734 for ; Wed, 29 Mar 2023 08:30:59 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=b713DuOY; spf=pass (domain: gmail.com, ip: 209.85.128.42, mailfrom: frederic.martinsons@gmail.com) Received: by mail-wm1-f42.google.com with SMTP id o24-20020a05600c511800b003ef59905f26so9915607wms.2 for ; Wed, 29 Mar 2023 08:30:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680103856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gbsm7KdajcpdMD4j3P676yY2PLPnC9DJhs0k8TBdMIg=; b=b713DuOYtvy2jFiR0xm5XBdL7Poq/50rx6FnYDXnPEbYe3CItVISieSbVWz5qIPSIL 7atkpMP9DyltudaMPvl+k7LkNPv3SUkf7OXmlJ3ZtX+bE8iDBhbRMCfS0jc5j1qB1nd9 +e2frKkqzFrQ55s1t1hCABA42H6V7FVUit0G6vrbjNW5/2ADKxXo6VNWV5Ked0YO4xYa eJxJzIAU9g+3WstPKk3facehC1L1sB39dVi3jvEy5BaIV3V0BztQ12QRlHAxLq1430ON 30XSSFpKfqc87oIXqMuqphT/G489e3fXPBivtLl7n5BCxiSbb4xDe/e30PUFvH5llan+ tTDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680103856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gbsm7KdajcpdMD4j3P676yY2PLPnC9DJhs0k8TBdMIg=; b=lUB1WCtAuCSwOkNCijzTvVaytiSMhxEIaOkVgWd76OZz1SV4aAx6Ikj/5IxUIMkufS FrHj4rx+b1Wxtn339UMA+lpVnznU/ZuxdZnxEj/38E/8Bbrp64MA6STsB1Y2S5wG+CWV jx6pGSudiRXv+cDPD5vbRmsRy4Ol0Nyd4gCyHSX7L2EbgQ6IShu8JbV0tjjRkZzxTsW3 USAppemjqYpDmYeXhkAbKSEaefDf6GXDKXZLUKFbcupsAUv111FG8TAzUFJRdFwEEsZg Yxoi+weLMrq5DvYAwnvW2MLdlEr3+3nE+wskCr6Wi/sbBzH1igOrB8i2hr6WFhU/X6sY K4PQ== X-Gm-Message-State: AO0yUKVJARvfE6M4eNAq3TQzEBxJdh0rlBEvJAxbnbnNAgITrUnCW1WY Kd5W5OlEG5mGEKJ8nf8C//D7ZaTsXaY= X-Google-Smtp-Source: AK7set+Lx1MQlc9wSqxibcN7A2vcRKwH5LFHR72zrX9n09bI6caJbn2KdlzIwEevh/W4l+6nWNE1xw== X-Received: by 2002:a05:600c:3795:b0:3dc:4fd7:31f7 with SMTP id o21-20020a05600c379500b003dc4fd731f7mr14365185wmr.41.1680103856165; Wed, 29 Mar 2023 08:30:56 -0700 (PDT) Received: from work-pc.core.sigfox.net ([2a01:e0a:8d5:c6c0:f236:1d99:4c31:5762]) by smtp.gmail.com with ESMTPSA id a13-20020a05600c224d00b003edef091b17sm2607378wmm.37.2023.03.29.08.30.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Mar 2023 08:30:55 -0700 (PDT) From: frederic.martinsons@gmail.com To: openembedded-core@lists.openembedded.org Cc: alex.kiernan@gmail.com Subject: [PATCH V4 5/5] meta-selftest: provide a recipe for zvariant Date: Wed, 29 Mar 2023 17:30:34 +0200 Message-Id: <8d69fe1e3f390a7e8fa568abdc20e5d0ee634fc1.1680103647.git.frederic.martinsons@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 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 ; Wed, 29 Mar 2023 15:31:06 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/179290 From: Frederic Martinsons This recipe is for showing a "real world" example of a crate that depends on some git repositories. Usually, this kind of crate is built within a global workspace (here it is the zbus project) and so doesn't need a Cargo.lock on its own. For the sake of the demonstration, I had to tweak things a little to be able to compile zvariant in standalone (no relative path in dependency, no symlink to LICENSE provide a Cargo.lock) The use case where the crate had some git repository in dependency is very common for "private" crate that are not aimed to be published on crates.io. When the project grow bigger, it is common to have a bin and multiple lib developped in parallel, and these libs are surely on a git repostitory. A test case have been also added to check for: - the previous patch about git subpath parameter and devtool - the correctness of overriding dependencies (first patch of the series) Signed-off-by: Frederic Martinsons --- .../zvariant/zvariant-crates.inc | 140 ++ .../0001-Tweak-zvariant-crate-config.patch | 1292 +++++++++++++++++ .../zvariant/zvariant_3.12.0.bb | 26 + meta/lib/oeqa/selftest/cases/devtool.py | 93 ++ 4 files changed, 1551 insertions(+) create mode 100644 meta-selftest/recipes-extended/zvariant/zvariant-crates.inc create mode 100644 meta-selftest/recipes-extended/zvariant/zvariant/0001-Tweak-zvariant-crate-config.patch create mode 100644 meta-selftest/recipes-extended/zvariant/zvariant_3.12.0.bb diff --git a/meta-selftest/recipes-extended/zvariant/zvariant-crates.inc b/meta-selftest/recipes-extended/zvariant/zvariant-crates.inc new file mode 100644 index 0000000000..41f50b1b0c --- /dev/null +++ b/meta-selftest/recipes-extended/zvariant/zvariant-crates.inc @@ -0,0 +1,140 @@ +SRC_URI += " \ + crate://crates.io/anes/0.1.6 \ + crate://crates.io/anyhow/1.0.70 \ + crate://crates.io/arrayvec/0.7.2 \ + crate://crates.io/atty/0.2.14 \ + crate://crates.io/autocfg/1.1.0 \ + crate://crates.io/bitflags/1.3.2 \ + crate://crates.io/bumpalo/3.12.0 \ + crate://crates.io/byteorder/1.4.3 \ + crate://crates.io/cast/0.3.0 \ + crate://crates.io/cfg-if/1.0.0 \ + crate://crates.io/chrono/0.4.24 \ + crate://crates.io/ciborium-io/0.2.0 \ + crate://crates.io/ciborium-ll/0.2.0 \ + crate://crates.io/ciborium/0.2.0 \ + crate://crates.io/clap/3.2.23 \ + crate://crates.io/clap_lex/0.2.4 \ + crate://crates.io/criterion-plot/0.5.0 \ + crate://crates.io/criterion/0.4.0 \ + crate://crates.io/crossbeam-channel/0.5.7 \ + crate://crates.io/crossbeam-deque/0.8.3 \ + crate://crates.io/crossbeam-epoch/0.9.14 \ + crate://crates.io/crossbeam-utils/0.8.15 \ + crate://crates.io/either/1.8.1 \ + crate://crates.io/enumflags2/0.7.5 \ + crate://crates.io/enumflags2_derive/0.7.4 \ + crate://crates.io/form_urlencoded/1.1.0 \ + crate://crates.io/futures-channel/0.3.27 \ + crate://crates.io/futures-core/0.3.27 \ + crate://crates.io/futures-executor/0.3.27 \ + crate://crates.io/futures-macro/0.3.27 \ + crate://crates.io/futures-task/0.3.27 \ + crate://crates.io/futures-util/0.3.27 \ + crate://crates.io/getrandom/0.2.8 \ + crate://crates.io/half/1.8.2 \ + crate://crates.io/hashbrown/0.12.3 \ + crate://crates.io/heck/0.3.3 \ + crate://crates.io/hermit-abi/0.1.19 \ + crate://crates.io/hermit-abi/0.2.6 \ + crate://crates.io/idna/0.3.0 \ + crate://crates.io/indexmap/1.9.2 \ + crate://crates.io/itertools/0.10.5 \ + crate://crates.io/itertools/0.9.0 \ + crate://crates.io/itoa/1.0.6 \ + crate://crates.io/js-sys/0.3.61 \ + crate://crates.io/lazy_static/1.4.0 \ + crate://crates.io/libc/0.2.140 \ + crate://crates.io/log/0.4.17 \ + crate://crates.io/memchr/2.5.0 \ + crate://crates.io/memoffset/0.8.0 \ + crate://crates.io/num-integer/0.1.45 \ + crate://crates.io/num-traits/0.2.15 \ + crate://crates.io/num_cpus/1.15.0 \ + crate://crates.io/once_cell/1.17.1 \ + crate://crates.io/oorandom/11.1.3 \ + crate://crates.io/os_str_bytes/6.5.0 \ + crate://crates.io/percent-encoding/2.2.0 \ + crate://crates.io/pin-project-lite/0.2.9 \ + crate://crates.io/pin-utils/0.1.0 \ + crate://crates.io/pkg-config/0.3.26 \ + crate://crates.io/plotters-backend/0.3.4 \ + crate://crates.io/plotters-svg/0.3.3 \ + crate://crates.io/plotters/0.3.4 \ + crate://crates.io/ppv-lite86/0.2.17 \ + crate://crates.io/proc-macro-crate/0.1.5 \ + crate://crates.io/proc-macro-crate/1.3.1 \ + crate://crates.io/proc-macro-error-attr/1.0.4 \ + crate://crates.io/proc-macro-error/1.0.4 \ + crate://crates.io/proc-macro2/1.0.53 \ + crate://crates.io/quote/1.0.26 \ + crate://crates.io/rand/0.8.5 \ + crate://crates.io/rand_chacha/0.3.1 \ + crate://crates.io/rand_core/0.6.4 \ + crate://crates.io/rayon-core/1.11.0 \ + crate://crates.io/rayon/1.7.0 \ + crate://crates.io/regex-syntax/0.6.29 \ + crate://crates.io/regex/1.7.2 \ + crate://crates.io/ryu/1.0.13 \ + crate://crates.io/same-file/1.0.6 \ + crate://crates.io/scopeguard/1.1.0 \ + crate://crates.io/serde/1.0.158 \ + crate://crates.io/serde_bytes/0.11.9 \ + crate://crates.io/serde_derive/1.0.158 \ + crate://crates.io/serde_json/1.0.94 \ + crate://crates.io/serde_repr/0.1.12 \ + crate://crates.io/slab/0.4.8 \ + crate://crates.io/static_assertions/1.1.0 \ + crate://crates.io/strum/0.18.0 \ + crate://crates.io/strum_macros/0.18.0 \ + crate://crates.io/syn/1.0.109 \ + crate://crates.io/syn/2.0.8 \ + crate://crates.io/system-deps/1.3.2 \ + crate://crates.io/textwrap/0.16.0 \ + crate://crates.io/thiserror-impl/1.0.40 \ + crate://crates.io/thiserror/1.0.40 \ + crate://crates.io/time-core/0.1.0 \ + crate://crates.io/time-macros/0.2.8 \ + crate://crates.io/time/0.3.20 \ + crate://crates.io/tinytemplate/1.2.1 \ + crate://crates.io/tinyvec/1.6.0 \ + crate://crates.io/tinyvec_macros/0.1.1 \ + crate://crates.io/toml/0.5.11 \ + crate://crates.io/toml_datetime/0.6.1 \ + crate://crates.io/toml_edit/0.19.8 \ + crate://crates.io/unicode-bidi/0.3.13 \ + crate://crates.io/unicode-ident/1.0.8 \ + crate://crates.io/unicode-normalization/0.1.22 \ + crate://crates.io/unicode-segmentation/1.10.1 \ + crate://crates.io/url/2.3.1 \ + crate://crates.io/uuid/1.3.0 \ + crate://crates.io/version-compare/0.0.10 \ + crate://crates.io/version_check/0.9.4 \ + crate://crates.io/walkdir/2.3.3 \ + crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \ + crate://crates.io/wasm-bindgen-backend/0.2.84 \ + crate://crates.io/wasm-bindgen-macro-support/0.2.84 \ + crate://crates.io/wasm-bindgen-macro/0.2.84 \ + crate://crates.io/wasm-bindgen-shared/0.2.84 \ + crate://crates.io/wasm-bindgen/0.2.84 \ + crate://crates.io/web-sys/0.3.61 \ + crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \ + crate://crates.io/winapi-util/0.1.5 \ + crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \ + crate://crates.io/winapi/0.3.9 \ + crate://crates.io/winnow/0.4.0 \ + crate://crates.io/zvariant_derive/3.12.0 \ + crate://crates.io/zvariant_utils/1.0.0 \ + git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib;type=git-dependency \ + git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys;type=git-dependency \ + git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys;type=git-dependency \ +" + +SRCREV_FORMAT .= "_glib" +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93" + +SRCREV_FORMAT .= "_glib-sys" +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01" + +SRCREV_FORMAT .= "_gobject-sys" +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01" diff --git a/meta-selftest/recipes-extended/zvariant/zvariant/0001-Tweak-zvariant-crate-config.patch b/meta-selftest/recipes-extended/zvariant/zvariant/0001-Tweak-zvariant-crate-config.patch new file mode 100644 index 0000000000..ac6c5117bb --- /dev/null +++ b/meta-selftest/recipes-extended/zvariant/zvariant/0001-Tweak-zvariant-crate-config.patch @@ -0,0 +1,1292 @@ +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001 +From: Frederic Martinsons +Date: Thu, 23 Mar 2023 07:12:37 +0100 +Subject: [PATCH] Tweak zvariant crate config + +This library crate is a part of zbus project, and is aimed to +be published amongst the whole project. + +Nevertheless, this recipe is for showing example of real +code which uses a local registry via git url inside yocto +environment. + +I didn't find a real example of binary crate that uses git +dependency but it seems to me a very common use case +when we are working on multiple local crates that are not +aimed to be published on public registry. + +Long story short, this patch add a modified Cargo.toml +to use the zvariant_derive dependency from crates.io instead +of zbus local one and a pre generated Cargo.lock in order +to make cargo patch process inside cargo_common.bbclass work + +It also copied the LICENCE file from zbus project instead +of symlink to it. + +Upstream-Status: Inappropriate +Signed-off-by: Frederic Martinsons +--- + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++ + zvariant/Cargo.toml | 2 +- + zvariant/LICENSE | 24 +- + 3 files changed, 1222 insertions(+), 2 deletions(-) + create mode 100644 zvariant/Cargo.lock + mode change 120000 => 100644 zvariant/LICENSE + +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock +new file mode 100644 +index 00000000..02a83d42 +--- /dev/null ++++ b/zvariant/Cargo.lock +@@ -0,0 +1,1198 @@ ++# This file is automatically @generated by Cargo. ++# It is not intended for manual editing. ++version = 3 ++ ++[[package]] ++name = "anes" ++version = "0.1.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" ++ ++[[package]] ++name = "anyhow" ++version = "1.0.70" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" ++ ++[[package]] ++name = "arrayvec" ++version = "0.7.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" ++dependencies = [ ++ "serde", ++] ++ ++[[package]] ++name = "atty" ++version = "0.2.14" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" ++dependencies = [ ++ "hermit-abi 0.1.19", ++ "libc", ++ "winapi", ++] ++ ++[[package]] ++name = "autocfg" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" ++ ++[[package]] ++name = "bitflags" ++version = "1.3.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" ++ ++[[package]] ++name = "bumpalo" ++version = "3.12.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" ++ ++[[package]] ++name = "byteorder" ++version = "1.4.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" ++ ++[[package]] ++name = "cast" ++version = "0.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" ++ ++[[package]] ++name = "cfg-if" ++version = "1.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" ++ ++[[package]] ++name = "chrono" ++version = "0.4.24" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" ++dependencies = [ ++ "num-integer", ++ "num-traits", ++ "serde", ++] ++ ++[[package]] ++name = "ciborium" ++version = "0.2.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" ++dependencies = [ ++ "ciborium-io", ++ "ciborium-ll", ++ "serde", ++] ++ ++[[package]] ++name = "ciborium-io" ++version = "0.2.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" ++ ++[[package]] ++name = "ciborium-ll" ++version = "0.2.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" ++dependencies = [ ++ "ciborium-io", ++ "half", ++] ++ ++[[package]] ++name = "clap" ++version = "3.2.23" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" ++dependencies = [ ++ "bitflags", ++ "clap_lex", ++ "indexmap", ++ "textwrap", ++] ++ ++[[package]] ++name = "clap_lex" ++version = "0.2.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" ++dependencies = [ ++ "os_str_bytes", ++] ++ ++[[package]] ++name = "criterion" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" ++dependencies = [ ++ "anes", ++ "atty", ++ "cast", ++ "ciborium", ++ "clap", ++ "criterion-plot", ++ "itertools 0.10.5", ++ "lazy_static", ++ "num-traits", ++ "oorandom", ++ "plotters", ++ "rayon", ++ "regex", ++ "serde", ++ "serde_derive", ++ "serde_json", ++ "tinytemplate", ++ "walkdir", ++] ++ ++[[package]] ++name = "criterion-plot" ++version = "0.5.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" ++dependencies = [ ++ "cast", ++ "itertools 0.10.5", ++] ++ ++[[package]] ++name = "crossbeam-channel" ++version = "0.5.7" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" ++dependencies = [ ++ "cfg-if", ++ "crossbeam-utils", ++] ++ ++[[package]] ++name = "crossbeam-deque" ++version = "0.8.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" ++dependencies = [ ++ "cfg-if", ++ "crossbeam-epoch", ++ "crossbeam-utils", ++] ++ ++[[package]] ++name = "crossbeam-epoch" ++version = "0.9.14" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" ++dependencies = [ ++ "autocfg", ++ "cfg-if", ++ "crossbeam-utils", ++ "memoffset", ++ "scopeguard", ++] ++ ++[[package]] ++name = "crossbeam-utils" ++version = "0.8.15" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" ++dependencies = [ ++ "cfg-if", ++] ++ ++[[package]] ++name = "either" ++version = "1.8.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" ++ ++[[package]] ++name = "enumflags2" ++version = "0.7.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb" ++dependencies = [ ++ "enumflags2_derive", ++ "serde", ++] ++ ++[[package]] ++name = "enumflags2_derive" ++version = "0.7.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++] ++ ++[[package]] ++name = "form_urlencoded" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" ++dependencies = [ ++ "percent-encoding", ++] ++ ++[[package]] ++name = "futures-channel" ++version = "0.3.27" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" ++dependencies = [ ++ "futures-core", ++] ++ ++[[package]] ++name = "futures-core" ++version = "0.3.27" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" ++ ++[[package]] ++name = "futures-executor" ++version = "0.3.27" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" ++dependencies = [ ++ "futures-core", ++ "futures-task", ++ "futures-util", ++] ++ ++[[package]] ++name = "futures-macro" ++version = "0.3.27" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++] ++ ++[[package]] ++name = "futures-task" ++version = "0.3.27" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" ++ ++[[package]] ++name = "futures-util" ++version = "0.3.27" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" ++dependencies = [ ++ "futures-core", ++ "futures-macro", ++ "futures-task", ++ "pin-project-lite", ++ "pin-utils", ++ "slab", ++] ++ ++[[package]] ++name = "getrandom" ++version = "0.2.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" ++dependencies = [ ++ "cfg-if", ++ "libc", ++ "wasi", ++] ++ ++[[package]] ++name = "glib" ++version = "0.10.0" ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93" ++dependencies = [ ++ "bitflags", ++ "futures-channel", ++ "futures-core", ++ "futures-executor", ++ "futures-task", ++ "futures-util", ++ "glib-macros", ++ "glib-sys", ++ "gobject-sys", ++ "libc", ++ "once_cell", ++] ++ ++[[package]] ++name = "glib-macros" ++version = "0.10.0" ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93" ++dependencies = [ ++ "anyhow", ++ "heck", ++ "itertools 0.9.0", ++ "proc-macro-crate 0.1.5", ++ "proc-macro-error", ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++] ++ ++[[package]] ++name = "glib-sys" ++version = "0.10.0" ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" ++dependencies = [ ++ "libc", ++ "system-deps", ++] ++ ++[[package]] ++name = "gobject-sys" ++version = "0.10.0" ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01" ++dependencies = [ ++ "glib-sys", ++ "libc", ++ "system-deps", ++] ++ ++[[package]] ++name = "half" ++version = "1.8.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" ++ ++[[package]] ++name = "hashbrown" ++version = "0.12.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" ++ ++[[package]] ++name = "heck" ++version = "0.3.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" ++dependencies = [ ++ "unicode-segmentation", ++] ++ ++[[package]] ++name = "hermit-abi" ++version = "0.1.19" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "hermit-abi" ++version = "0.2.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "idna" ++version = "0.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" ++dependencies = [ ++ "unicode-bidi", ++ "unicode-normalization", ++] ++ ++[[package]] ++name = "indexmap" ++version = "1.9.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" ++dependencies = [ ++ "autocfg", ++ "hashbrown", ++] ++ ++[[package]] ++name = "itertools" ++version = "0.9.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" ++dependencies = [ ++ "either", ++] ++ ++[[package]] ++name = "itertools" ++version = "0.10.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" ++dependencies = [ ++ "either", ++] ++ ++[[package]] ++name = "itoa" ++version = "1.0.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" ++ ++[[package]] ++name = "js-sys" ++version = "0.3.61" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" ++dependencies = [ ++ "wasm-bindgen", ++] ++ ++[[package]] ++name = "lazy_static" ++version = "1.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" ++ ++[[package]] ++name = "libc" ++version = "0.2.140" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" ++ ++[[package]] ++name = "log" ++version = "0.4.17" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" ++dependencies = [ ++ "cfg-if", ++] ++ ++[[package]] ++name = "memchr" ++version = "2.5.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" ++ ++[[package]] ++name = "memoffset" ++version = "0.8.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" ++dependencies = [ ++ "autocfg", ++] ++ ++[[package]] ++name = "num-integer" ++version = "0.1.45" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" ++dependencies = [ ++ "autocfg", ++ "num-traits", ++] ++ ++[[package]] ++name = "num-traits" ++version = "0.2.15" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" ++dependencies = [ ++ "autocfg", ++] ++ ++[[package]] ++name = "num_cpus" ++version = "1.15.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" ++dependencies = [ ++ "hermit-abi 0.2.6", ++ "libc", ++] ++ ++[[package]] ++name = "once_cell" ++version = "1.17.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" ++ ++[[package]] ++name = "oorandom" ++version = "11.1.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" ++ ++[[package]] ++name = "os_str_bytes" ++version = "6.5.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" ++ ++[[package]] ++name = "percent-encoding" ++version = "2.2.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" ++ ++[[package]] ++name = "pin-project-lite" ++version = "0.2.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" ++ ++[[package]] ++name = "pin-utils" ++version = "0.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" ++ ++[[package]] ++name = "pkg-config" ++version = "0.3.26" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" ++ ++[[package]] ++name = "plotters" ++version = "0.3.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" ++dependencies = [ ++ "num-traits", ++ "plotters-backend", ++ "plotters-svg", ++ "wasm-bindgen", ++ "web-sys", ++] ++ ++[[package]] ++name = "plotters-backend" ++version = "0.3.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" ++ ++[[package]] ++name = "plotters-svg" ++version = "0.3.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" ++dependencies = [ ++ "plotters-backend", ++] ++ ++[[package]] ++name = "ppv-lite86" ++version = "0.2.17" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" ++ ++[[package]] ++name = "proc-macro-crate" ++version = "0.1.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" ++dependencies = [ ++ "toml", ++] ++ ++[[package]] ++name = "proc-macro-crate" ++version = "1.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" ++dependencies = [ ++ "once_cell", ++ "toml_edit", ++] ++ ++[[package]] ++name = "proc-macro-error" ++version = "1.0.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" ++dependencies = [ ++ "proc-macro-error-attr", ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++ "version_check", ++] ++ ++[[package]] ++name = "proc-macro-error-attr" ++version = "1.0.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "version_check", ++] ++ ++[[package]] ++name = "proc-macro2" ++version = "1.0.53" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73" ++dependencies = [ ++ "unicode-ident", ++] ++ ++[[package]] ++name = "quote" ++version = "1.0.26" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" ++dependencies = [ ++ "proc-macro2", ++] ++ ++[[package]] ++name = "rand" ++version = "0.8.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" ++dependencies = [ ++ "libc", ++ "rand_chacha", ++ "rand_core", ++] ++ ++[[package]] ++name = "rand_chacha" ++version = "0.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" ++dependencies = [ ++ "ppv-lite86", ++ "rand_core", ++] ++ ++[[package]] ++name = "rand_core" ++version = "0.6.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" ++dependencies = [ ++ "getrandom", ++] ++ ++[[package]] ++name = "rayon" ++version = "1.7.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" ++dependencies = [ ++ "either", ++ "rayon-core", ++] ++ ++[[package]] ++name = "rayon-core" ++version = "1.11.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" ++dependencies = [ ++ "crossbeam-channel", ++ "crossbeam-deque", ++ "crossbeam-utils", ++ "num_cpus", ++] ++ ++[[package]] ++name = "regex" ++version = "1.7.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c" ++dependencies = [ ++ "regex-syntax", ++] ++ ++[[package]] ++name = "regex-syntax" ++version = "0.6.29" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" ++ ++[[package]] ++name = "ryu" ++version = "1.0.13" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" ++ ++[[package]] ++name = "same-file" ++version = "1.0.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" ++dependencies = [ ++ "winapi-util", ++] ++ ++[[package]] ++name = "scopeguard" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" ++ ++[[package]] ++name = "serde" ++version = "1.0.158" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" ++dependencies = [ ++ "serde_derive", ++] ++ ++[[package]] ++name = "serde_bytes" ++version = "0.11.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" ++dependencies = [ ++ "serde", ++] ++ ++[[package]] ++name = "serde_derive" ++version = "1.0.158" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.8", ++] ++ ++[[package]] ++name = "serde_json" ++version = "1.0.94" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" ++dependencies = [ ++ "itoa", ++ "ryu", ++ "serde", ++] ++ ++[[package]] ++name = "serde_repr" ++version = "0.1.12" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.8", ++] ++ ++[[package]] ++name = "slab" ++version = "0.4.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" ++dependencies = [ ++ "autocfg", ++] ++ ++[[package]] ++name = "static_assertions" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" ++ ++[[package]] ++name = "strum" ++version = "0.18.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" ++ ++[[package]] ++name = "strum_macros" ++version = "0.18.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" ++dependencies = [ ++ "heck", ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++] ++ ++[[package]] ++name = "syn" ++version = "1.0.109" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "unicode-ident", ++] ++ ++[[package]] ++name = "syn" ++version = "2.0.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "unicode-ident", ++] ++ ++[[package]] ++name = "system-deps" ++version = "1.3.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b" ++dependencies = [ ++ "heck", ++ "pkg-config", ++ "strum", ++ "strum_macros", ++ "thiserror", ++ "toml", ++ "version-compare", ++] ++ ++[[package]] ++name = "textwrap" ++version = "0.16.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" ++ ++[[package]] ++name = "thiserror" ++version = "1.0.40" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" ++dependencies = [ ++ "thiserror-impl", ++] ++ ++[[package]] ++name = "thiserror-impl" ++version = "1.0.40" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.8", ++] ++ ++[[package]] ++name = "time" ++version = "0.3.20" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" ++dependencies = [ ++ "serde", ++ "time-core", ++ "time-macros", ++] ++ ++[[package]] ++name = "time-core" ++version = "0.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" ++ ++[[package]] ++name = "time-macros" ++version = "0.2.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" ++dependencies = [ ++ "time-core", ++] ++ ++[[package]] ++name = "tinytemplate" ++version = "1.2.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" ++dependencies = [ ++ "serde", ++ "serde_json", ++] ++ ++[[package]] ++name = "tinyvec" ++version = "1.6.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" ++dependencies = [ ++ "tinyvec_macros", ++] ++ ++[[package]] ++name = "tinyvec_macros" ++version = "0.1.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" ++ ++[[package]] ++name = "toml" ++version = "0.5.11" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" ++dependencies = [ ++ "serde", ++] ++ ++[[package]] ++name = "toml_datetime" ++version = "0.6.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" ++ ++[[package]] ++name = "toml_edit" ++version = "0.19.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" ++dependencies = [ ++ "indexmap", ++ "toml_datetime", ++ "winnow", ++] ++ ++[[package]] ++name = "unicode-bidi" ++version = "0.3.13" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" ++ ++[[package]] ++name = "unicode-ident" ++version = "1.0.8" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" ++ ++[[package]] ++name = "unicode-normalization" ++version = "0.1.22" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" ++dependencies = [ ++ "tinyvec", ++] ++ ++[[package]] ++name = "unicode-segmentation" ++version = "1.10.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" ++ ++[[package]] ++name = "url" ++version = "2.3.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" ++dependencies = [ ++ "form_urlencoded", ++ "idna", ++ "percent-encoding", ++ "serde", ++] ++ ++[[package]] ++name = "uuid" ++version = "1.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" ++dependencies = [ ++ "serde", ++] ++ ++[[package]] ++name = "version-compare" ++version = "0.0.10" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" ++ ++[[package]] ++name = "version_check" ++version = "0.9.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" ++ ++[[package]] ++name = "walkdir" ++version = "2.3.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" ++dependencies = [ ++ "same-file", ++ "winapi-util", ++] ++ ++[[package]] ++name = "wasi" ++version = "0.11.0+wasi-snapshot-preview1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" ++ ++[[package]] ++name = "wasm-bindgen" ++version = "0.2.84" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" ++dependencies = [ ++ "cfg-if", ++ "wasm-bindgen-macro", ++] ++ ++[[package]] ++name = "wasm-bindgen-backend" ++version = "0.2.84" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" ++dependencies = [ ++ "bumpalo", ++ "log", ++ "once_cell", ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++ "wasm-bindgen-shared", ++] ++ ++[[package]] ++name = "wasm-bindgen-macro" ++version = "0.2.84" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" ++dependencies = [ ++ "quote", ++ "wasm-bindgen-macro-support", ++] ++ ++[[package]] ++name = "wasm-bindgen-macro-support" ++version = "0.2.84" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++ "wasm-bindgen-backend", ++ "wasm-bindgen-shared", ++] ++ ++[[package]] ++name = "wasm-bindgen-shared" ++version = "0.2.84" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" ++ ++[[package]] ++name = "web-sys" ++version = "0.3.61" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" ++dependencies = [ ++ "js-sys", ++ "wasm-bindgen", ++] ++ ++[[package]] ++name = "winapi" ++version = "0.3.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" ++dependencies = [ ++ "winapi-i686-pc-windows-gnu", ++ "winapi-x86_64-pc-windows-gnu", ++] ++ ++[[package]] ++name = "winapi-i686-pc-windows-gnu" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" ++ ++[[package]] ++name = "winapi-util" ++version = "0.1.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" ++dependencies = [ ++ "winapi", ++] ++ ++[[package]] ++name = "winapi-x86_64-pc-windows-gnu" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" ++ ++[[package]] ++name = "winnow" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1" ++dependencies = [ ++ "memchr", ++] ++ ++[[package]] ++name = "zvariant" ++version = "3.12.0" ++dependencies = [ ++ "arrayvec", ++ "byteorder", ++ "chrono", ++ "criterion", ++ "enumflags2", ++ "glib", ++ "libc", ++ "rand", ++ "serde", ++ "serde_bytes", ++ "serde_json", ++ "serde_repr", ++ "static_assertions", ++ "time", ++ "url", ++ "uuid", ++ "zvariant_derive", ++] ++ ++[[package]] ++name = "zvariant_derive" ++version = "3.12.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a" ++dependencies = [ ++ "proc-macro-crate 1.3.1", ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++ "zvariant_utils", ++] ++ ++[[package]] ++name = "zvariant_utils" ++version = "1.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 1.0.109", ++] +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml +index 45367729..6981862a 100644 +--- a/zvariant/Cargo.toml ++++ b/zvariant/Cargo.toml +@@ -27,7 +27,7 @@ byteorder = "1.4.3" + serde = { version = "1.0", features = ["derive"] } + arrayvec = { version = "0.7.2", features = ["serde"], optional = true } + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true } +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" } ++zvariant_derive = "3.12.0" + serde_bytes = { version = "0.11", optional = true } + static_assertions = "1.1.0" + libc = "0.2.137" +diff --git a/zvariant/LICENSE b/zvariant/LICENSE +deleted file mode 120000 +index ea5b6064..00000000 +--- a/zvariant/LICENSE ++++ /dev/null +@@ -1 +0,0 @@ +-../LICENSE +\ No newline at end of file +diff --git a/zvariant/LICENSE b/zvariant/LICENSE +new file mode 100644 +index 00000000..31aa7938 +--- /dev/null ++++ b/zvariant/LICENSE +@@ -0,0 +1,23 @@ ++Permission is hereby granted, free of charge, to any ++person obtaining a copy of this software and associated ++documentation files (the "Software"), to deal in the ++Software without restriction, including without ++limitation the rights to use, copy, modify, merge, ++publish, distribute, sublicense, and/or sell copies of ++the Software, and to permit persons to whom the Software ++is furnished to do so, subject to the following ++conditions: ++ ++The above copyright notice and this permission notice ++shall be included in all copies or substantial portions ++of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ++ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED ++TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A ++PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT ++SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ++CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR ++IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++DEALINGS IN THE SOFTWARE. +-- +2.34.1 + diff --git a/meta-selftest/recipes-extended/zvariant/zvariant_3.12.0.bb b/meta-selftest/recipes-extended/zvariant/zvariant_3.12.0.bb new file mode 100644 index 0000000000..4fe327ae07 --- /dev/null +++ b/meta-selftest/recipes-extended/zvariant/zvariant_3.12.0.bb @@ -0,0 +1,26 @@ +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format" +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\ +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\ +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \ +data and is also supported by this crate." +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d" + +SRC_URI = " \ + git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \ + file://0001-Tweak-zvariant-crate-config.patch;striplevel=2 \ +" + +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6" +S = "${WORKDIR}/zvariant" + +python do_clean_lic_file_symlink() { + bb.utils.remove("LICENCE") +} + +addtask clean_lic_file_symlink after do_unpack before do_patch + +inherit cargo cargo-update-recipe-crates + +require ${BPN}-crates.inc diff --git a/meta/lib/oeqa/selftest/cases/devtool.py b/meta/lib/oeqa/selftest/cases/devtool.py index 81d02017c1..94873fd19f 100644 --- a/meta/lib/oeqa/selftest/cases/devtool.py +++ b/meta/lib/oeqa/selftest/cases/devtool.py @@ -848,6 +848,99 @@ class DevtoolModifyTests(DevtoolBase): # Try building bitbake(testrecipe) + def test_devtool_modify_git_crates_subpath(self): + # This tests two things in devtool context: + # - that we support local git dependencies for cargo based recipe + # - that we support patches in SRC_URI when git url contains subpath parameter + + # Check preconditions: + # recipe inherits cargo + # git:// uri with a subpath as the main package + # some crate:// in SRC_URI + # others git:// in SRC_URI + # cointains a patch + testrecipe = 'zvariant' + bb_vars = get_bb_vars(['SRC_URI', 'FILE', 'WORKDIR', 'CARGO_HOME'], testrecipe) + recipefile = bb_vars['FILE'] + workdir = bb_vars['WORKDIR'] + cargo_home = bb_vars['CARGO_HOME'] + src_uri = bb_vars['SRC_URI'].split() + self.assertTrue(src_uri[0].startswith('git://'), + 'This test expects the %s recipe to have a git repo has its main uri' % testrecipe) + self.assertIn(';subpath=', src_uri[0], + 'This test expects the %s recipe to have a git uri with subpath' % testrecipe) + self.assertTrue(any([uri.startswith('crate://') for uri in src_uri]), + 'This test expects the %s recipe to have some crates in its src uris' % testrecipe) + self.assertGreater(sum(map(lambda x:x.startswith('git://'), src_uri)), 2, + 'This test expects the %s recipe to have several git:// uris' % testrecipe) + self.assertTrue(any([uri.startswith('file://') and '.patch' in uri for uri in src_uri]), + 'This test expects the %s recipe to have a patch in its src uris' % testrecipe) + + self._test_recipe_contents(recipefile, {}, ['cargo']) + + # Clean up anything in the workdir/sysroot/sstate cache + bitbake('%s -c cleansstate' % testrecipe) + # Try modifying a recipe + tempdir = tempfile.mkdtemp(prefix='devtoolqa') + self.track_for_cleanup(tempdir) + self.track_for_cleanup(self.workspacedir) + self.add_command_to_tearDown('bitbake -c clean %s' % testrecipe) + self.add_command_to_tearDown('bitbake-layers remove-layer */workspace') + result = runCmd('devtool modify %s -x %s' % (testrecipe, tempdir)) + self.assertExists(os.path.join(tempdir, 'Cargo.toml'), 'Extracted source could not be found') + self.assertExists(os.path.join(self.workspacedir, 'conf', 'layer.conf'), 'Workspace directory not created. devtool output: %s' % result.output) + matches = glob.glob(os.path.join(self.workspacedir, 'appends', 'zvariant_*.bbappend')) + self.assertTrue(matches, 'bbappend not created') + # Test devtool status + result = runCmd('devtool status') + self.assertIn(testrecipe, result.output) + self.assertIn(tempdir, result.output) + # Check git repo + self._check_src_repo(tempdir) + # Check that the patch is correctly applied + # last commit message in the tree must contain + # %% original patch: + # .. + patchname = None + for uri in src_uri: + if uri.startswith('file://') and '.patch' in uri: + patchname = uri.replace("file://", "").partition('.patch')[0] + '.patch' + self.assertIsNotNone(patchname) + result = runCmd('git -C %s log -1' % tempdir) + self.assertIn("%%%% original patch: %s" % patchname, result.output) + + # Configure the recipe to check that the git dependencies are correctly patched in cargo config + bitbake('-c configure %s' % testrecipe) + + cargo_config_path = os.path.join(cargo_home, 'config') + with open(cargo_config_path, "r") as f: + cargo_config_contents = [line.strip('\n') for line in f.readlines()] + + # Get back git dependencies of the recipe (ignoring the main one) + # and check that they are all correctly patched to be fetched locally + git_deps = [uri for uri in src_uri if uri.startswith("git://")][1:] + for git_dep in git_deps: + raw_url, _, raw_parms = git_dep.partition(";") + parms = {} + for parm in raw_parms.split(";"): + name_parm, _, value_parm = parm.partition('=') + parms[name_parm]=value_parm + self.assertIn('protocol', parms, 'git dependencies uri should contain the "protocol" parameter') + self.assertIn('name', parms, 'git dependencies uri should contain the "name" parameter') + self.assertIn('destsuffix', parms, 'git dependencies uri should contain the "destsuffix" parameter') + self.assertIn('type', parms, 'git dependencies uri should contain the "type" parameter') + self.assertEqual(parms['type'], 'git-dependency', 'git dependencies uri should have "type=git-dependency"') + raw_url = raw_url.replace("git://", '%s://' % parms['protocol']) + patch_line = '[patch."%s"]' % raw_url + path_patched = os.path.join(workdir, parms['destsuffix']) + path_override_line = '%s = { path = "%s" }' % (parms['name'], path_patched) + # Would have been better to use tomllib to read this file :/ + self.assertIn(patch_line, cargo_config_contents) + self.assertIn(path_override_line, cargo_config_contents) + + # Try to package the recipe + bitbake('-c package_qa %s' % testrecipe) + def test_devtool_modify_localfiles(self): # Check preconditions testrecipe = 'lighttpd'