From patchwork Fri Aug 4 17:15:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Rodriguez Reboredo X-Patchwork-Id: 131281 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6358:1a9a:b0:139:fa0d:b2d with SMTP id gm26csp103474rwb; Fri, 4 Aug 2023 10:54:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IExht7NJXqLgiTbuzgtHobLqnIF1QpZSmTYcN1sP5DmMFAAMuj22p3PF+/KpJ5YIZcOvfxu X-Received: by 2002:a17:902:da82:b0:1bb:f653:9f9e with SMTP id j2-20020a170902da8200b001bbf6539f9emr2310432plx.25.1691171641114; Fri, 04 Aug 2023 10:54:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691171641; cv=none; d=google.com; s=arc-20160816; b=NawYaw6qCbsqkSO69OTnLS+6ucaOCmBPDv0xrlaEhzFuo/nOiGXv5hFZp7YSiX3TXo 8r3QmeXKWJeP92/jr394dmz93tL+grKK7mAAdme5H4cu1r4zPRdkJYCO1jI37joRDEqe bR1Fqfy+ZpQoZjfiGG16XsbQwcPtut5aDGdD0v2TpHM/x6UaSuUU49lhewGu3vtrib/m xrWtxNCFlvifo0pZO893kb2BZHI+zobvu2jf9g0PcALVNA3ngoRFe7DDR5kJLYgt5IvI 8FvRzlZINM8KtjJk9R7hAJ0KBeqFLwnYam7HrczrBKt9OC/IuloOcsHEEhUgLmVmF8jF bsVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:content-transfer-encoding:mime-version :message-id:date:subject:cc:from:dkim-signature; bh=x14eTXjE9ESJ3W86KNB02DEBmvHBG2F1228ijKBbEgI=; fh=INOfNr25zBhSsY+bLjCwIUeIHY+MZK4iCpx2+sXsEMU=; b=zqox9VgLJedN6zYHeeFz2BtPXb/DKAdpC5Txr5ccEVFXLdSzxqR5C0WNo16va4UGYy 59Tl6ohAXJsTJYjZcIwF7VP1jyaS8uU/hjHvh0LcPf85OJ4Op7Wne08N6IyN75d3TlBd DFL39MvBW4vIi1huRKRTVdk/SlKunotAjR20k6cr48PLEh+m0ZyB191vgHNSd8VyQ3R3 0mhUUrzvnUSu9BLJxr3VYV7CIp62rSLaKyduF6OKD9xvtzQiay0a9lFdCODaHZK+7IBF 6nUoQhdIh/rBHBuf0iGM0eWoGJ2HQG8lu0Z3AjTR5A39Uyn3/nLKzaDZYrRAANIpXw/R gU6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20221208 header.b=AmAAVvzJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r4-20020a170902be0400b001b87ecb0e5csi1927072pls.126.2023.08.04.10.53.46; Fri, 04 Aug 2023 10:54:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20221208 header.b=AmAAVvzJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231544AbjHDRP0 (ORCPT + 99 others); Fri, 4 Aug 2023 13:15:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48026 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231738AbjHDRPX (ORCPT ); Fri, 4 Aug 2023 13:15:23 -0400 Received: from mail-oi1-x236.google.com (mail-oi1-x236.google.com [IPv6:2607:f8b0:4864:20::236]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FD87469C; Fri, 4 Aug 2023 10:15:21 -0700 (PDT) Received: by mail-oi1-x236.google.com with SMTP id 5614622812f47-3a1ebb85f99so1862285b6e.2; Fri, 04 Aug 2023 10:15:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691169320; x=1691774120; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=x14eTXjE9ESJ3W86KNB02DEBmvHBG2F1228ijKBbEgI=; b=AmAAVvzJY2ryyLXEcu8EfJbuSoJj312gZuM0yrAAjJYgH4BGEvTkqPw9/2ZL+7xOWU zYn4EQegMx1mopLXNah/jU/uKsK5oc3u43c/s2bXL1rSo4tCbjLfJ1rSgkeQaAFvZgOX 0SXmWL13MoKmH65W9GVkzZVbkiZk8L0q8iCZM3icmGk2k9Qfk2OU/BaYWJ+Rug20IQ+h fgGCwJnbtvr8P8Q49impoq1KOCkOPTmvW+dE2SWnArBCj/Xxq8Zu3SPeREsjETwqzCUW Kf5+omXqQLpoIszdhbm85vXZGhZYrEVShirRC8b7oKDD86t6MubUZFhes9W3KPXc8olM Ay/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691169320; x=1691774120; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=x14eTXjE9ESJ3W86KNB02DEBmvHBG2F1228ijKBbEgI=; b=ZjhfSNltzFCyR63AJJsJKLTOd/PbXxjXgeomIpHY2D5YkxsGmr+EUgB6+sK+J7EgTo LoUe/OX7hcfUgXbCkMSIjdBLzu98AJXN3rCoy5q0PT3bLT+uxBT+vQ9GOwf8XXCGmNsp N1aibKEGhULd/qnMd+CyrZce5V1VZOIu54o3F3WNhHi3SXxkJ1LprTZYgTCsbsS2Q9GT 61wA3dMOcv3BH4RJWJ/gUUnZgZOF/OG/ok3zuzvJEQ+v58xzefvES1jnrq5NCdj//pG8 l1yClYWa9xlswoNMLAfnC3XxUYAP5HmllMYbqDMsMIJUIR3GNz1p6BWtPUVqlAtn5w+N tXng== X-Gm-Message-State: AOJu0Yw6R1i4ztuELxR23NWt1kxX3GmCdDAKiVFd9Kc/vCw4WlBkBuRA wO7n0ox/jS0+bnVTrMppr9w= X-Received: by 2002:a05:6808:248:b0:3a3:6244:2b0a with SMTP id m8-20020a056808024800b003a362442b0amr2944200oie.23.1691169320236; Fri, 04 Aug 2023 10:15:20 -0700 (PDT) Received: from tx3000mach.io (static.220.238.itcsa.net. [190.15.220.238]) by smtp.gmail.com with ESMTPSA id u37-20020a056808152500b003a77b3979b2sm856539oiw.26.2023.08.04.10.15.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 10:15:19 -0700 (PDT) From: Martin Rodriguez Reboredo Cc: Miguel Ojeda , Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3] scripts: generate_rust_analyzer: provide `cfg`s for `core` and `alloc` Date: Fri, 4 Aug 2023 14:15:08 -0300 Message-ID: <20230804171515.55052-1-yakoyoku@gmail.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773321994697010649 X-GMAIL-MSGID: 1773321994697010649 Both `core` and `alloc` have their `cfgs` (such as `no_rc`) missing in `rust-project.json`. To remedy this, pass the flags to `generate_rust_analyzer.py` for them to be added to a dictionary where each key corresponds to a crate and each value to a list of `cfg`s. The dictionary is then used to pass the `cfg`s to each crate in the generated file (for `core` and `alloc` only). Suggested-by: Miguel Ojeda Signed-off-by: Martin Rodriguez Reboredo --- rust/Makefile | 1 + scripts/generate_rust_analyzer.py | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/rust/Makefile b/rust/Makefile index f7c9a6e54c85..e5173da3b682 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -374,6 +374,7 @@ quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L rust-analyzer: $(Q)$(srctree)/scripts/generate_rust_analyzer.py \ + --cfgs='core=$(core-cfgs)' --cfgs='alloc=$(alloc-cfgs)' \ $(abs_srctree) $(abs_objtree) \ $(RUST_LIB_SRC) $(KBUILD_EXTMOD) > \ $(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/rust-project.json diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py index 848fa1ad92ba..fc52bc41d3e7 100755 --- a/scripts/generate_rust_analyzer.py +++ b/scripts/generate_rust_analyzer.py @@ -10,7 +10,15 @@ import os import pathlib import sys -def generate_crates(srctree, objtree, sysroot_src, external_src): +def args_crates_cfgs(cfgs): + crates_cfgs = {} + for cfg in cfgs: + crate, vals = cfg.split("=", 1) + crates_cfgs[crate] = vals.replace("--cfg", "").split() + + return crates_cfgs + +def generate_crates(srctree, objtree, sysroot_src, external_src, cfgs): # Generate the configuration list. cfg = [] with open(objtree / "include" / "generated" / "rustc_cfg") as fd: @@ -24,6 +32,7 @@ def generate_crates(srctree, objtree, sysroot_src, external_src): # Avoid O(n^2) iterations by keeping a map of indexes. crates = [] crates_indexes = {} + crates_cfgs = args_crates_cfgs(cfgs) def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=True, is_proc_macro=False): crates_indexes[display_name] = len(crates) @@ -45,6 +54,7 @@ def generate_crates(srctree, objtree, sysroot_src, external_src): "core", sysroot_src / "core" / "src" / "lib.rs", [], + cfg=crates_cfgs.get("core", []), is_workspace_member=False, ) @@ -58,6 +68,7 @@ def generate_crates(srctree, objtree, sysroot_src, external_src): "alloc", srctree / "rust" / "alloc" / "lib.rs", ["core", "compiler_builtins"], + cfg=crates_cfgs.get("alloc", []), ) append_crate( @@ -131,6 +142,7 @@ def generate_crates(srctree, objtree, sysroot_src, external_src): def main(): parser = argparse.ArgumentParser() parser.add_argument('--verbose', '-v', action='store_true') + parser.add_argument('--cfgs', action='append', default=[]) parser.add_argument("srctree", type=pathlib.Path) parser.add_argument("objtree", type=pathlib.Path) parser.add_argument("sysroot_src", type=pathlib.Path) @@ -143,7 +155,7 @@ def main(): ) rust_project = { - "crates": generate_crates(args.srctree, args.objtree, args.sysroot_src, args.exttree), + "crates": generate_crates(args.srctree, args.objtree, args.sysroot_src, args.exttree, args.cfgs), "sysroot_src": str(args.sysroot_src), }