From patchwork Mon Apr 7 20:07:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Morgan Smith X-Patchwork-Id: 41418 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 1FC6227BC4B; Mon, 7 Apr 2025 21:09:38 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id CD63127BC49 for ; Mon, 7 Apr 2025 21:09:35 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u1smI-0006Ir-Gv; Mon, 07 Apr 2025 16:09:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u1smH-0006I6-JO for guix-patches@gnu.org; Mon, 07 Apr 2025 16:09:05 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u1smH-0007uj-9r for guix-patches@gnu.org; Mon, 07 Apr 2025 16:09:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=yRQ5rqLjnWkuwjPHMnU6xAZP9aa5pMgZU4ftDWCBHyY=; b=KJ3wR6J++QR96XixG86IeYnfVbN8MRqkaHK+kT7JxHrl6n0IlMDU9P7CgRv3GAql8YARL4hDkgFHIqhfFMwr9mxpwXpBowkirGRkz7R7Uow1bsYjkIh/iBwP8pbH3Roa7NLVfPaJUGHR6uGsvF6qFzPnztE5ZhVDW9W2NwFdpZ7Zv0Vrn9egEJ7KBc2YRThTYPlRl7DQvQsktqrgyaUeaRJB166FjD7NDGPBAzUUPtAobv0Qs5X07szu4rf0GP/+KF/PawRIBEwm567ew6/4s92u4w0MHWDYiZZ2B9QFWQmc2AVGLPTdPMydjhKGh79xgDFA9WjBFS1DXutVSAUlXw==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1u1smF-00043y-Ut; Mon, 07 Apr 2025 16:09:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77616] [PATCH 5/6] gnu: Remove unneeded rust bootstrapping versions. Resent-From: Morgan Smith Original-Sender: "Debbugs-submit" Resent-CC: divya@subvertising.org, efraim@flashner.co.il, steve@futurile.net, guix-patches@gnu.org Resent-Date: Mon, 07 Apr 2025 20:09:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77616 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77616@debbugs.gnu.org Cc: Morgan Smith , Divya Ranjan Pattanaik , Efraim Flashner , Steve George X-Debbugs-Original-Xcc: Divya Ranjan Pattanaik , Efraim Flashner , Steve George Received: via spool by 77616-submit@debbugs.gnu.org id=B77616.174405652215498 (code B ref 77616); Mon, 07 Apr 2025 20:09:03 +0000 Received: (at 77616) by debbugs.gnu.org; 7 Apr 2025 20:08:42 +0000 Received: from localhost ([127.0.0.1]:57047 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u1sll-00041H-4Y for submit@debbugs.gnu.org; Mon, 07 Apr 2025 16:08:42 -0400 Received: from mail-dm6nam12olkn20818.outbound.protection.outlook.com ([2a01:111:f403:2c17::818]:26465 helo=NAM12-DM6-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1u1slf-00040H-JE for 77616@debbugs.gnu.org; Mon, 07 Apr 2025 16:08:31 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rBZQDKk9gSLm4munzOZFLgTu0+tU3GniHR6jSye6eq4rOmmbK3oUiN22E3SLWDcUhoX12xKOzQqMjpOEUBeaZ1LGFLySg5C6T0almsutlKnc2s4n4ayI/lrL38wF/7K6WtIy/61ww7ZG/LfiO1CBItuPMjZpHvKSrMRSExcv5EtJW6AyHU8lGtwb0fVL/vN+U1srp4JwEpRMLG86Oavnw7NDhMD+YjkgUdglSE2Ro32TdCO1CrX4trlk6J7oa8Ll0iJ//51YAVrTqjjlFoRFISpvLlsLobozMjiOT0eoJwoa6r+KFTgiKdOlj4jKDpwvKnV31Gd15DYTVMwLlNUc/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=yRQ5rqLjnWkuwjPHMnU6xAZP9aa5pMgZU4ftDWCBHyY=; b=syV9B4eOEO4BABbvmC6IYL7VYY5yLARifo1eaWcrhoHmBydfCFJ8JINrErO5A70bb0iB4usDp2ezZDsVIsOuZUjdy05aBnlcGNruq3YozxriSBoyF0j/fTacKY4+Y9+ZHuCvS/89brUCKwnAlPDOF7T4N00lY4k1QBohiJqZTArex3RySF2Fj3UxPI/28cfc1dUCqWbNjYtM6YbfyIFkiHrwZb9t+Kh9DPaJCqx3n83Afb9NDmdm1r/iH2hg+YRUEFou0VV/qgyOryd+7f2tEMVONxZ+/or2VNWWqCOgXXsIzNz8itFOoPPffzIVIkgkBFJ5d2IP1mFYAijJnNNvbg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yRQ5rqLjnWkuwjPHMnU6xAZP9aa5pMgZU4ftDWCBHyY=; b=d+FnTnEjmdz5xwBIwGNs1gNYpp5UG6zXadsp1eyHvbd5FBN5DV7RPJifNU8Q7L+G0ip0P4fQPgM9+6eLHOIZIkpsJN5SHOHbeCsnREpKm0yrGptJmNtX83OiYRWWGjWR5sq9a18xsnyMk7MpIiHKCVmQy6Yw/scclHGhaTUSAKdoHFULq2yCJdqNHdyr/QX6nUfbwPNQsuRTd4l/Vzvmh/Be3Yq8QjH/7ViXyoFiXjHHME3gmmCUifl3qf6CPP99wThSM64/aoWIMtLREMEOIBBtmSC06DHLTpLXHVm+e2UWD/RRVHVjm0T61su2rIQ6UjIDf3illTp6mKIUueRbGA== Received: from CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1c4::17) by DS0PR84MB3589.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:8:1b8::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Mon, 7 Apr 2025 20:08:21 +0000 Received: from CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM ([fe80::5c77:7a58:48ed:9aef]) by CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM ([fe80::5c77:7a58:48ed:9aef%5]) with mapi id 15.20.8606.033; Mon, 7 Apr 2025 20:08:21 +0000 From: Morgan Smith Date: Mon, 7 Apr 2025 16:07:49 -0400 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: <2141283854b61187d507f0dfaf768e3416e09845.1744056453.git.Morgan.J.Smith@outlook.com> References: <2141283854b61187d507f0dfaf768e3416e09845.1744056453.git.Morgan.J.Smith@outlook.com> X-ClientProxiedBy: YT4PR01CA0037.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:fe::10) To CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1c4::17) X-Microsoft-Original-Message-ID: <84599b0ae085f18015a7b30511d10cb4625cabcc.1744056453.git.Morgan.J.Smith@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PR84MB3424:EE_|DS0PR84MB3589:EE_ X-MS-Office365-Filtering-Correlation-Id: e9d294bb-b1ee-4689-d0ce-08dd760ff1a5 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199028|8060799006|15080799006|7092599003|19110799003|5072599009|41001999003|10035399004|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: 3QlR4Ilr9enig4K/ysnb2W068zHtlhGOVEjoxWTwjAAKja4yxDorHKuZuYuYH8mAd/kqMLEtTybNBp9HfUKv99xootLFGa5XVFNTf+6XjXojlEwhGyGDHEao4l29WBIc+Iboo741jrdgRh13xEX9Dx0xptPxUin0WD1LU2h+0GMZjpW/WRSJQ5stdQQtoKr9/3DTkuU0yN9MvftzZetcP/H1yiOXlUR96KKVQ7a+imm35XDkC+KeiFZy0fvkuRBqz+uTGE0XsnTg0gK7Ao8/BdAW01yJ3Gm8m/38jfyAoLzZYydZzurU2H1Lqzy+Cw+WEOX2hdP1kSdHxxTb3HgnyU/bxDt4q4aIrZ9b76n1KNGPo0QocD60lLe3d/nA56n5z5ncNi0pRMBwPiC2fPhoKDOPcSLGjuQ/WvBLSVkSnkaBNiSPp4yrJIHV7VVl32xFSdEV2daJVtBMXMls7UbmQrBDKTno7RlELIu9pDSRdGFdVgh3wpl1UyV8opjXpiwxb1ymS03xuIYU0fEtBAKynQTUSHTMV/QsJDRVIfos1kKvd/dxeFYP6VKqiiLpF2wqtQ4S7c34rbh2F4MabIV9fRoHiezBuRWEZYJ7iV8HtcKQKABJi2zvyHS96TqK2j0dmRBpZPfw2qGSJeXVWGyBJZ3JG0QFzuXmBPcRdKwNaiMtT911q2PKIHYjlZn3pbDTblQuXvCKnc1wz+vbdWnRoh2vpAm0HiKTtB3hLL3XOj1tDx6FEUzE13tYtKlsnMxmf8sI+5g2ItPST1Midmr15pfu0tjmVUGE4lomzWhLkE65rP2QLNbXtKZtXZ3BMDA/sdszzXcB+GxCOOP0CWQSGT7fFEu3Yu5jOq2JcOT1vNx+PKHyFKpRb66GAiuMfOdyNcZEicKjf1ARxop8+p35eEdRDh+ZHoTs640S3ggLYkry2/2/J7QQ98BnkaZ/PSFcNoahy8RKfSebhf0LvCL4/yo/Slm7ZfMSOLjXNpJAnYX23jxGEzi2V+TnJByj1R8sFUhsG2ZXV6PKNi0pit4/W4vbhr+NLYsU0IWWX44+kYPGcQjMr15Ub1awy7uYpWh7B7tWxFACIAs6aJogmqkZXHr2Uu/U5nlIyWTs+ldahS5Hj+GCkariEXOySqlKZIHLgPCQUPCx3q4NwGQq8pGUIF6fkDaDYvJXBz/+A0HFHQbFe/z5yqe2KSeZ+4xN1A7H3dxlPXuisIsN30xD8L6TPv07oAf9+PdUOzURmrk0KRo= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TiYAWhPhQjmJSoXU6oxT+1kZLP3TGC8ZdTFAJ4QEM0OasXlk65t//kfvNkwNsZctceXOYUwczDoqJzNt/85KO886PgolLDamV3oEBq2IHJ0lc0VdmJaLbW5f6C9N9kcrkZjg7DE7f5eqxaO9m67d2mmw8V6PIxLD/E+cpK3sKhd7w3DXhn/5wEUpe90B4YTf9qwjNfdvHj6xKvcA9Eb0ZV3PUITa0KfudxqzTOXv/ZZEQL3Ex+DFDcY9bnIoJsOmCYuv5FL4ARL2CmbsyCLCF5RrccQQZ2Agys33XSNICZb3VSVuQiKoj0vTtA1cZaVOi6r9UW+WKUTkrhzcyCaMJTLfXF7jDpDfJ56jk7l3jC0zMv02HXHBLChXG7MjsP+O+F6XR10lfFwBP/bNAaTNBPBk+fwz3IjQ+zE75YQC5mARSjaT1sGMkGgRIX2/UJxk74k68vYEKx21LUjTUAJklffyQM6wiTokirznRW8/+r394kOFcPw2F29JjoQrPrgzCMkOZW6sgznHOr6WmFHJ/VLwb/OEVElmWUJYSOsEdWWJNC0+y+SFvk+yuegmzhD9QsjRBXYbdFMM6Am6D5MtuhrbY5KFWsI4K2l97riCv6ggYbGUH0G1dfiYfOsFnCbyqF2BENo5sOYblTYrmyQROo9QJRyoKtmfkxLTgd/4/4HhGwxUUTUflLXb1AibHHzNSLvqlFOnBpxh6eozI8kpUg5Y5YFth6zKuGEiNUMZlhcPMvF4D0GFc5mjAUtnrnS+lMfrDho89Gn81M8yzLqsg1qXimipWwn5WABOO8WKWXTBEsDFKu4gKyJNgJ6+cz0Jew4JHoRMqAzGScFadTDJex2WuOCNXQYoqr83dlTwTPQC3eQWHs2ESE8M8JvwPHAnu9Jbl6rmm7gpfu5BOVqTFUj28d4lu2XbVbyoUs3259X/kA2kSDaERE75m2sAdGNa739XJqZDOEZ5+DSJc2NtVz7Bur4jx4afqV3xQA29Mi3aggEHT/aXxXgln4II98k7ivmo5fRwQ0nMrdr5TcjOBkAddeld0IJaqPG9cSfYFPFXb9twZP13fbZOhR6N3VM4Zxo/sOiDakjISLtxnmqXpNFGvTOTTwWjOhalXmhbfQdOsxb9Kp/I2V4ObPuUgIDnC2HT5MbB1gQa7FPLHFntxUWZ3IoNepaMLqGDouLN7M9jc8EbyXQ2e8thaTGTuksfroecfTzu3VwEJVP6ql7bBl9HJWspxlPM83jUNZhxhSua/qoQmACb8KgIIYQM/FDN X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9d294bb-b1ee-4689-d0ce-08dd760ff1a5 X-MS-Exchange-CrossTenant-AuthSource: CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2025 20:08:21.0501 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR84MB3589 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/rust.scm (rust-1.56, rust-1.57, rust-1.58, rust-1.59, rust-1.60, rust-1.61, rust-1.62, rust-1.63, rust-1.64, rust-1.65, rust-1.66, rust-1.67, rust-1.68, rust-1.69, rust-1.70, rust-1.71, rust-1.73, rust-1.74, rust-1.75): Delete variable. * gnu/local.mk: Remove rust-1.64-fix-riscv64-bootstrap.patch. * gnu/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch: Delete. Change-Id: Iee5c46c8e4b1d899cc5acbceb5cef04c25aa2801 --- gnu/local.mk | 1 - .../rust-1.64-fix-riscv64-bootstrap.patch | 565 ------------------ gnu/packages/rust.scm | 397 ------------ 3 files changed, 963 deletions(-) delete mode 100644 gnu/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch diff --git a/gnu/local.mk b/gnu/local.mk index 72a6310e4c..f48e45bb47 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2202,7 +2202,6 @@ dist_patch_DATA = \ %D%/packages/patches/ruby-mustache-1.1.1-fix-race-condition-tests.patch \ %D%/packages/patches/ruby-nokogiri.patch \ %D%/packages/patches/ruby-x25519-automatic-fallback-non-x86_64.patch \ - %D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch \ %D%/packages/patches/rust-1.70-fix-rustix-build.patch \ %D%/packages/patches/rust-1.78-unwinding-fix.patch \ %D%/packages/patches/rust-1.81-fix-riscv64-bootstrap.patch \ diff --git a/gnu/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch b/gnu/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch deleted file mode 100644 index 4567f81224..0000000000 --- a/gnu/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch +++ /dev/null @@ -1,565 +0,0 @@ -https://github.com/rust-lang/rust/commit/263edd43c5255084292329423c61a9d69715ebfa.patch -https://github.com/rust-lang/rust/issues/102155 -Issue seen on native builds on riscv64 across multiple Linux -Distributions. An alternative workaround appears to be building stage 1 -with debug enabled. - -From 27412d1e3e128349bc515c16ce882860e20f037d Mon Sep 17 00:00:00 2001 -From: 5225225 <5225225@mailbox.org> -Date: Thu, 14 Jul 2022 22:42:47 +0100 -Subject: [PATCH] Use constant eval to do strict validity checks - ---- - Cargo.lock | 1 + - .../src/intrinsics/mod.rs | 15 +---- - compiler/rustc_codegen_ssa/Cargo.toml | 1 + - compiler/rustc_codegen_ssa/src/mir/block.rs | 9 ++- - .../src/const_eval/machine.rs | 2 +- - .../src/interpret/intrinsics.rs | 56 ++++++++-------- - compiler/rustc_const_eval/src/lib.rs | 6 ++ - .../src/might_permit_raw_init.rs | 40 +++++++++++ - compiler/rustc_middle/src/query/mod.rs | 8 +++ - compiler/rustc_middle/src/ty/query.rs | 1 + - compiler/rustc_query_impl/src/keys.rs | 12 +++- - compiler/rustc_target/src/abi/mod.rs | 38 +++++------ - .../intrinsics/panic-uninitialized-zeroed.rs | 66 ++++++++++++------- - 13 files changed, 161 insertions(+), 94 deletions(-) - create mode 100644 compiler/rustc_const_eval/src/might_permit_raw_init.rs - -diff --git a/Cargo.lock b/Cargo.lock -index 147d47044078a..dd6f0345affd0 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -3664,6 +3664,7 @@ dependencies = [ - "rustc_arena", - "rustc_ast", - "rustc_attr", -+ "rustc_const_eval", - "rustc_data_structures", - "rustc_errors", - "rustc_fs_util", -diff --git a/compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs b/compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs -index eafae1cdc8af0..4b2207f375879 100644 ---- a/compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs -+++ b/compiler/rustc_codegen_cranelift/src/intrinsics/mod.rs -@@ -58,7 +58,6 @@ pub(crate) use llvm::codegen_llvm_intrinsic_call; - use rustc_middle::ty::print::with_no_trimmed_paths; - use rustc_middle::ty::subst::SubstsRef; - use rustc_span::symbol::{kw, sym, Symbol}; --use rustc_target::abi::InitKind; - - use crate::prelude::*; - use cranelift_codegen::ir::AtomicRmwOp; -@@ -672,12 +671,7 @@ fn codegen_regular_intrinsic_call<'tcx>( - return; - } - -- if intrinsic == sym::assert_zero_valid -- && !layout.might_permit_raw_init( -- fx, -- InitKind::Zero, -- fx.tcx.sess.opts.unstable_opts.strict_init_checks) { -- -+ if intrinsic == sym::assert_zero_valid && !fx.tcx.permits_zero_init(layout) { - with_no_trimmed_paths!({ - crate::base::codegen_panic( - fx, -@@ -688,12 +682,7 @@ fn codegen_regular_intrinsic_call<'tcx>( - return; - } - -- if intrinsic == sym::assert_uninit_valid -- && !layout.might_permit_raw_init( -- fx, -- InitKind::Uninit, -- fx.tcx.sess.opts.unstable_opts.strict_init_checks) { -- -+ if intrinsic == sym::assert_uninit_valid && !fx.tcx.permits_uninit_init(layout) { - with_no_trimmed_paths!({ - crate::base::codegen_panic( - fx, -diff --git a/compiler/rustc_codegen_ssa/Cargo.toml b/compiler/rustc_codegen_ssa/Cargo.toml -index faabea92f5a6c..81c8b9ceb136e 100644 ---- a/compiler/rustc_codegen_ssa/Cargo.toml -+++ b/compiler/rustc_codegen_ssa/Cargo.toml -@@ -40,6 +40,7 @@ rustc_metadata = { path = "../rustc_metadata" } - rustc_query_system = { path = "../rustc_query_system" } - rustc_target = { path = "../rustc_target" } - rustc_session = { path = "../rustc_session" } -+rustc_const_eval = { path = "../rustc_const_eval" } - - [dependencies.object] - version = "0.29.0" -diff --git a/compiler/rustc_codegen_ssa/src/mir/block.rs b/compiler/rustc_codegen_ssa/src/mir/block.rs -index 745da821c9d76..773c55cf551d5 100644 ---- a/compiler/rustc_codegen_ssa/src/mir/block.rs -+++ b/compiler/rustc_codegen_ssa/src/mir/block.rs -@@ -22,7 +22,7 @@ use rustc_span::source_map::Span; - use rustc_span::{sym, Symbol}; - use rustc_symbol_mangling::typeid_for_fnabi; - use rustc_target::abi::call::{ArgAbi, FnAbi, PassMode}; --use rustc_target::abi::{self, HasDataLayout, InitKind, WrappingRange}; -+use rustc_target::abi::{self, HasDataLayout, WrappingRange}; - use rustc_target::spec::abi::Abi; - - /// Used by `FunctionCx::codegen_terminator` for emitting common patterns -@@ -528,7 +528,6 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { - source_info: mir::SourceInfo, - target: Option, - cleanup: Option, -- strict_validity: bool, - ) -> bool { - // Emit a panic or a no-op for `assert_*` intrinsics. - // These are intrinsics that compile to panics so that we can get a message -@@ -547,12 +546,13 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { - }); - if let Some(intrinsic) = panic_intrinsic { - use AssertIntrinsic::*; -+ - let ty = instance.unwrap().substs.type_at(0); - let layout = bx.layout_of(ty); - let do_panic = match intrinsic { - Inhabited => layout.abi.is_uninhabited(), -- ZeroValid => !layout.might_permit_raw_init(bx, InitKind::Zero, strict_validity), -- UninitValid => !layout.might_permit_raw_init(bx, InitKind::Uninit, strict_validity), -+ ZeroValid => !bx.tcx().permits_zero_init(layout), -+ UninitValid => !bx.tcx().permits_uninit_init(layout), - }; - if do_panic { - let msg_str = with_no_visible_paths!({ -@@ -687,7 +687,6 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { - source_info, - target, - cleanup, -- self.cx.tcx().sess.opts.unstable_opts.strict_init_checks, - ) { - return; - } -diff --git a/compiler/rustc_const_eval/src/const_eval/machine.rs b/compiler/rustc_const_eval/src/const_eval/machine.rs -index 29ab1d187719c..e00e667fb71e2 100644 ---- a/compiler/rustc_const_eval/src/const_eval/machine.rs -+++ b/compiler/rustc_const_eval/src/const_eval/machine.rs -@@ -104,7 +104,7 @@ pub struct CompileTimeInterpreter<'mir, 'tcx> { - } - - impl<'mir, 'tcx> CompileTimeInterpreter<'mir, 'tcx> { -- pub(super) fn new(const_eval_limit: Limit, can_access_statics: bool) -> Self { -+ pub(crate) fn new(const_eval_limit: Limit, can_access_statics: bool) -> Self { - CompileTimeInterpreter { - steps_remaining: const_eval_limit.0, - stack: Vec::new(), -diff --git a/compiler/rustc_const_eval/src/interpret/intrinsics.rs b/compiler/rustc_const_eval/src/interpret/intrinsics.rs -index e2a8a9891f72f..7827fb8395b7f 100644 ---- a/compiler/rustc_const_eval/src/interpret/intrinsics.rs -+++ b/compiler/rustc_const_eval/src/interpret/intrinsics.rs -@@ -15,7 +15,7 @@ use rustc_middle::ty::layout::LayoutOf as _; - use rustc_middle::ty::subst::SubstsRef; - use rustc_middle::ty::{Ty, TyCtxt}; - use rustc_span::symbol::{sym, Symbol}; --use rustc_target::abi::{Abi, Align, InitKind, Primitive, Size}; -+use rustc_target::abi::{Abi, Align, Primitive, Size}; - - use super::{ - util::ensure_monomorphic_enough, CheckInAllocMsg, ImmTy, InterpCx, Machine, OpTy, PlaceTy, -@@ -413,35 +413,33 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { - ), - )?; - } -- if intrinsic_name == sym::assert_zero_valid -- && !layout.might_permit_raw_init( -- self, -- InitKind::Zero, -- self.tcx.sess.opts.unstable_opts.strict_init_checks, -- ) -- { -- M::abort( -- self, -- format!( -- "aborted execution: attempted to zero-initialize type `{}`, which is invalid", -- ty -- ), -- )?; -+ -+ if intrinsic_name == sym::assert_zero_valid { -+ let should_panic = !self.tcx.permits_zero_init(layout); -+ -+ if should_panic { -+ M::abort( -+ self, -+ format!( -+ "aborted execution: attempted to zero-initialize type `{}`, which is invalid", -+ ty -+ ), -+ )?; -+ } - } -- if intrinsic_name == sym::assert_uninit_valid -- && !layout.might_permit_raw_init( -- self, -- InitKind::Uninit, -- self.tcx.sess.opts.unstable_opts.strict_init_checks, -- ) -- { -- M::abort( -- self, -- format!( -- "aborted execution: attempted to leave type `{}` uninitialized, which is invalid", -- ty -- ), -- )?; -+ -+ if intrinsic_name == sym::assert_uninit_valid { -+ let should_panic = !self.tcx.permits_uninit_init(layout); -+ -+ if should_panic { -+ M::abort( -+ self, -+ format!( -+ "aborted execution: attempted to leave type `{}` uninitialized, which is invalid", -+ ty -+ ), -+ )?; -+ } - } - } - sym::simd_insert => { -diff --git a/compiler/rustc_const_eval/src/lib.rs b/compiler/rustc_const_eval/src/lib.rs -index d65d4f7eb720e..72ac6af685dc4 100644 ---- a/compiler/rustc_const_eval/src/lib.rs -+++ b/compiler/rustc_const_eval/src/lib.rs -@@ -33,11 +33,13 @@ extern crate rustc_middle; - pub mod const_eval; - mod errors; - pub mod interpret; -+mod might_permit_raw_init; - pub mod transform; - pub mod util; - - use rustc_middle::ty; - use rustc_middle::ty::query::Providers; -+use rustc_target::abi::InitKind; - - pub fn provide(providers: &mut Providers) { - const_eval::provide(providers); -@@ -59,4 +61,8 @@ pub fn provide(providers: &mut Providers) { - let (param_env, value) = param_env_and_value.into_parts(); - const_eval::deref_mir_constant(tcx, param_env, value) - }; -+ providers.permits_uninit_init = -+ |tcx, ty| might_permit_raw_init::might_permit_raw_init(tcx, ty, InitKind::Uninit); -+ providers.permits_zero_init = -+ |tcx, ty| might_permit_raw_init::might_permit_raw_init(tcx, ty, InitKind::Zero); - } -diff --git a/compiler/rustc_const_eval/src/might_permit_raw_init.rs b/compiler/rustc_const_eval/src/might_permit_raw_init.rs -new file mode 100644 -index 0000000000000..f971c2238c7bb ---- /dev/null -+++ b/compiler/rustc_const_eval/src/might_permit_raw_init.rs -@@ -0,0 +1,40 @@ -+use crate::const_eval::CompileTimeInterpreter; -+use crate::interpret::{InterpCx, MemoryKind, OpTy}; -+use rustc_middle::ty::layout::LayoutCx; -+use rustc_middle::ty::{layout::TyAndLayout, ParamEnv, TyCtxt}; -+use rustc_session::Limit; -+use rustc_target::abi::InitKind; -+ -+pub fn might_permit_raw_init<'tcx>( -+ tcx: TyCtxt<'tcx>, -+ ty: TyAndLayout<'tcx>, -+ kind: InitKind, -+) -> bool { -+ let strict = tcx.sess.opts.unstable_opts.strict_init_checks; -+ -+ if strict { -+ let machine = CompileTimeInterpreter::new(Limit::new(0), false); -+ -+ let mut cx = InterpCx::new(tcx, rustc_span::DUMMY_SP, ParamEnv::reveal_all(), machine); -+ -+ let allocated = cx -+ .allocate(ty, MemoryKind::Machine(crate::const_eval::MemoryKind::Heap)) -+ .expect("OOM: failed to allocate for uninit check"); -+ -+ if kind == InitKind::Zero { -+ cx.write_bytes_ptr( -+ allocated.ptr, -+ std::iter::repeat(0_u8).take(ty.layout.size().bytes_usize()), -+ ) -+ .expect("failed to write bytes for zero valid check"); -+ } -+ -+ let ot: OpTy<'_, _> = allocated.into(); -+ -+ // Assume that if it failed, it's a validation failure. -+ cx.validate_operand(&ot).is_ok() -+ } else { -+ let layout_cx = LayoutCx { tcx, param_env: ParamEnv::reveal_all() }; -+ ty.might_permit_raw_init(&layout_cx, kind) -+ } -+} -diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs -index bdae7e5fcd6b1..0581ef41f66c2 100644 ---- a/compiler/rustc_middle/src/query/mod.rs -+++ b/compiler/rustc_middle/src/query/mod.rs -@@ -2053,4 +2053,12 @@ rustc_queries! { - desc { |tcx| "looking up generator diagnostic data of `{}`", tcx.def_path_str(key) } - separate_provide_extern - } -+ -+ query permits_uninit_init(key: TyAndLayout<'tcx>) -> bool { -+ desc { "checking to see if {:?} permits being left uninit", key.ty } -+ } -+ -+ query permits_zero_init(key: TyAndLayout<'tcx>) -> bool { -+ desc { "checking to see if {:?} permits being left zeroed", key.ty } -+ } - } -diff --git a/compiler/rustc_middle/src/ty/query.rs b/compiler/rustc_middle/src/ty/query.rs -index 3d662ed5de4ba..2452bcf6a61b8 100644 ---- a/compiler/rustc_middle/src/ty/query.rs -+++ b/compiler/rustc_middle/src/ty/query.rs -@@ -28,6 +28,7 @@ use crate::traits::query::{ - use crate::traits::specialization_graph; - use crate::traits::{self, ImplSource}; - use crate::ty::fast_reject::SimplifiedType; -+use crate::ty::layout::TyAndLayout; - use crate::ty::subst::{GenericArg, SubstsRef}; - use crate::ty::util::AlwaysRequiresDrop; - use crate::ty::GeneratorDiagnosticData; -diff --git a/compiler/rustc_query_impl/src/keys.rs b/compiler/rustc_query_impl/src/keys.rs -index 6fbafeb1d32b3..5477431431374 100644 ---- a/compiler/rustc_query_impl/src/keys.rs -+++ b/compiler/rustc_query_impl/src/keys.rs -@@ -6,7 +6,7 @@ use rustc_middle::mir; - use rustc_middle::traits; - use rustc_middle::ty::fast_reject::SimplifiedType; - use rustc_middle::ty::subst::{GenericArg, SubstsRef}; --use rustc_middle::ty::{self, Ty, TyCtxt}; -+use rustc_middle::ty::{self, layout::TyAndLayout, Ty, TyCtxt}; - use rustc_span::symbol::{Ident, Symbol}; - use rustc_span::{Span, DUMMY_SP}; - -@@ -385,6 +385,16 @@ impl<'tcx> Key for Ty<'tcx> { - } - } - -+impl<'tcx> Key for TyAndLayout<'tcx> { -+ #[inline(always)] -+ fn query_crate_is_local(&self) -> bool { -+ true -+ } -+ fn default_span(&self, _: TyCtxt<'_>) -> Span { -+ DUMMY_SP -+ } -+} -+ - impl<'tcx> Key for (Ty<'tcx>, Ty<'tcx>) { - #[inline(always)] - fn query_crate_is_local(&self) -> bool { -diff --git a/compiler/rustc_target/src/abi/mod.rs b/compiler/rustc_target/src/abi/mod.rs -index d1eafd6ac5fb8..6f4d073d70486 100644 ---- a/compiler/rustc_target/src/abi/mod.rs -+++ b/compiler/rustc_target/src/abi/mod.rs -@@ -1372,7 +1372,7 @@ pub struct PointeeInfo { - - /// Used in `might_permit_raw_init` to indicate the kind of initialisation - /// that is checked to be valid --#[derive(Copy, Clone, Debug)] -+#[derive(Copy, Clone, Debug, PartialEq, Eq)] - pub enum InitKind { - Zero, - Uninit, -@@ -1487,14 +1487,18 @@ impl<'a, Ty> TyAndLayout<'a, Ty> { - /// - /// `init_kind` indicates if the memory is zero-initialized or left uninitialized. - /// -- /// `strict` is an opt-in debugging flag added in #97323 that enables more checks. -+ /// This code is intentionally conservative, and will not detect -+ /// * zero init of an enum whose 0 variant does not allow zero initialization -+ /// * making uninitialized types who have a full valid range (ints, floats, raw pointers) -+ /// * Any form of invalid value being made inside an array (unless the value is uninhabited) - /// -- /// This is conservative: in doubt, it will answer `true`. -+ /// A strict form of these checks that uses const evaluation exists in -+ /// `rustc_const_eval::might_permit_raw_init`, and a tracking issue for making these checks -+ /// stricter is . - /// -- /// FIXME: Once we removed all the conservatism, we could alternatively -- /// create an all-0/all-undef constant and run the const value validator to see if -- /// this is a valid value for the given type. -- pub fn might_permit_raw_init(self, cx: &C, init_kind: InitKind, strict: bool) -> bool -+ /// FIXME: Once all the conservatism is removed from here, and the checks are ran by default, -+ /// we can use the const evaluation checks always instead. -+ pub fn might_permit_raw_init(self, cx: &C, init_kind: InitKind) -> bool - where - Self: Copy, - Ty: TyAbiInterface<'a, C>, -@@ -1507,13 +1511,8 @@ impl<'a, Ty> TyAndLayout<'a, Ty> { - s.valid_range(cx).contains(0) - } - InitKind::Uninit => { -- if strict { -- // The type must be allowed to be uninit (which means "is a union"). -- s.is_uninit_valid() -- } else { -- // The range must include all values. -- s.is_always_valid(cx) -- } -+ // The range must include all values. -+ s.is_always_valid(cx) - } - } - }; -@@ -1534,19 +1533,12 @@ impl<'a, Ty> TyAndLayout<'a, Ty> { - // If we have not found an error yet, we need to recursively descend into fields. - match &self.fields { - FieldsShape::Primitive | FieldsShape::Union { .. } => {} -- FieldsShape::Array { count, .. } => { -+ FieldsShape::Array { .. } => { - // FIXME(#66151): For now, we are conservative and do not check arrays by default. -- if strict -- && *count > 0 -- && !self.field(cx, 0).might_permit_raw_init(cx, init_kind, strict) -- { -- // Found non empty array with a type that is unhappy about this kind of initialization -- return false; -- } - } - FieldsShape::Arbitrary { offsets, .. } => { - for idx in 0..offsets.len() { -- if !self.field(cx, idx).might_permit_raw_init(cx, init_kind, strict) { -+ if !self.field(cx, idx).might_permit_raw_init(cx, init_kind) { - // We found a field that is unhappy with this kind of initialization. - return false; - } -diff --git a/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs b/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs -index 3ffd35ecdb8da..255151a96032c 100644 ---- a/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs -+++ b/src/test/ui/intrinsics/panic-uninitialized-zeroed.rs -@@ -57,6 +57,13 @@ enum LR_NonZero { - - struct ZeroSized; - -+#[allow(dead_code)] -+#[repr(i32)] -+enum ZeroIsValid { -+ Zero(u8) = 0, -+ One(NonNull<()>) = 1, -+} -+ - fn test_panic_msg(op: impl (FnOnce() -> T) + panic::UnwindSafe, msg: &str) { - let err = panic::catch_unwind(op).err(); - assert_eq!( -@@ -152,33 +159,12 @@ fn main() { - "attempted to zero-initialize type `*const dyn core::marker::Send`, which is invalid" - ); - -- /* FIXME(#66151) we conservatively do not error here yet. -- test_panic_msg( -- || mem::uninitialized::(), -- "attempted to leave type `LR_NonZero` uninitialized, which is invalid" -- ); -- test_panic_msg( -- || mem::zeroed::(), -- "attempted to zero-initialize type `LR_NonZero`, which is invalid" -- ); -- -- test_panic_msg( -- || mem::uninitialized::>(), -- "attempted to leave type `std::mem::ManuallyDrop` uninitialized, \ -- which is invalid" -- ); -- test_panic_msg( -- || mem::zeroed::>(), -- "attempted to zero-initialize type `std::mem::ManuallyDrop`, \ -- which is invalid" -- ); -- */ -- - test_panic_msg( - || mem::uninitialized::<(NonNull, u32, u32)>(), - "attempted to leave type `(core::ptr::non_null::NonNull, u32, u32)` uninitialized, \ - which is invalid" - ); -+ - test_panic_msg( - || mem::zeroed::<(NonNull, u32, u32)>(), - "attempted to zero-initialize type `(core::ptr::non_null::NonNull, u32, u32)`, \ -@@ -196,11 +182,23 @@ fn main() { - which is invalid" - ); - -+ test_panic_msg( -+ || mem::uninitialized::(), -+ "attempted to leave type `LR_NonZero` uninitialized, which is invalid" -+ ); -+ -+ test_panic_msg( -+ || mem::uninitialized::>(), -+ "attempted to leave type `core::mem::manually_drop::ManuallyDrop` uninitialized, \ -+ which is invalid" -+ ); -+ - test_panic_msg( - || mem::uninitialized::(), - "attempted to leave type `NoNullVariant` uninitialized, \ - which is invalid" - ); -+ - test_panic_msg( - || mem::zeroed::(), - "attempted to zero-initialize type `NoNullVariant`, \ -@@ -212,10 +210,12 @@ fn main() { - || mem::uninitialized::(), - "attempted to leave type `bool` uninitialized, which is invalid" - ); -+ - test_panic_msg( - || mem::uninitialized::(), - "attempted to leave type `LR` uninitialized, which is invalid" - ); -+ - test_panic_msg( - || mem::uninitialized::>(), - "attempted to leave type `core::mem::manually_drop::ManuallyDrop` uninitialized, which is invalid" -@@ -229,6 +229,7 @@ fn main() { - let _val = mem::zeroed::>(); - let _val = mem::zeroed::>>(); - let _val = mem::zeroed::<[!; 0]>(); -+ let _val = mem::zeroed::(); - let _val = mem::uninitialized::>(); - let _val = mem::uninitialized::<[!; 0]>(); - let _val = mem::uninitialized::<()>(); -@@ -259,12 +260,33 @@ fn main() { - || mem::zeroed::<[NonNull<()>; 1]>(), - "attempted to zero-initialize type `[core::ptr::non_null::NonNull<()>; 1]`, which is invalid" - ); -+ -+ // FIXME(#66151) we conservatively do not error here yet (by default). -+ test_panic_msg( -+ || mem::zeroed::(), -+ "attempted to zero-initialize type `LR_NonZero`, which is invalid" -+ ); -+ -+ test_panic_msg( -+ || mem::zeroed::>(), -+ "attempted to zero-initialize type `core::mem::manually_drop::ManuallyDrop`, \ -+ which is invalid" -+ ); - } else { - // These are UB because they have not been officially blessed, but we await the resolution - // of before doing - // anything about that. - let _val = mem::uninitialized::(); - let _val = mem::uninitialized::<*const ()>(); -+ -+ // These are UB, but best to test them to ensure we don't become unintentionally -+ // stricter. -+ -+ // It's currently unchecked to create invalid enums and values inside arrays. -+ let _val = mem::zeroed::(); -+ let _val = mem::zeroed::<[LR_NonZero; 1]>(); -+ let _val = mem::zeroed::<[NonNull<()>; 1]>(); -+ let _val = mem::uninitialized::<[NonNull<()>; 1]>(); - } - } - } diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 98be6d95ce..4b0e9a3666 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -503,403 +503,6 @@ (define-public rust-1.75 ;; Dual licensed. (license (list license:asl2.0 license:expat)))) -(define-public rust-1.56 - (let ((base-rust (rust-bootstrapped-package - rust-1.55 "1.56.1" - "04cmqx7nn63hzz7z27b2b0dj2qx18rck9ifvip43s6dampx8v2f3"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments - (strip-keyword-arguments '(#:validate-runpath?) - (package-arguments base-rust)) - ((#:phases phases) - `(modify-phases ,phases - (delete 'add-cc-shim-to-path) - (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums - (lambda _ - (substitute* "Cargo.lock" - (("(checksum = )\".*\"" all name) - (string-append name "\"" ,%cargo-reference-hash "\""))) - (generate-all-checksums "vendor")))))))))) - -(define-public rust-1.57 - (rust-bootstrapped-package - ;; Verified that it *doesn't* build with 1.55. e.g.: - ;; * feature `edition2021` is required - rust-1.56 "1.57.0" "06jw8ka2p3kls8p0gd4p0chhhb1ia1mlvj96zn78n7qvp71zjiim")) - -(define-public rust-1.58 - (rust-bootstrapped-package - ;; Verified that it *doesn't* build with 1.56. e.g.: - ;; * error: attributes starting with `rustc` are reserved for use by the - ;; `rustc` compiler - ;; * error: cannot find attribute `rustc_do_not_const_check` in this scope - ;; * error[E0522]: definition of an unknown language item: - ;; `const_eval_select_ct` - rust-1.57 "1.58.1" "1iq7kj16qfpkx8gvw50d8rf7glbm6s0pj2y1qkrz7mi56vfsyfd8")) - -(define-public rust-1.59 - (let ((base-rust - (rust-bootstrapped-package - ;; Verified that it *doesn't* build with 1.57. e.g.: - ;; * error: `doc(primitive)` should never have been stable - ;; * error[E0522]: definition of an unknown language item: - ;; `generator_return` - ;; * error[E0206]: the trait `Copy` may not be implemented for this type - rust-1.58 "1.59.0" "1yc5bwcbmbwyvpfq7zvra78l0r8y3lbv60kbr62fzz2vx2pfxj57"))) - (package - (inherit base-rust) - (arguments - (if (target-riscv64?) - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'revert-riscv-pause-instruction - (lambda _ - ;; This fails with: - ;; error: unknown directive, referring to '.insn'. - ;; This is due to building with llvm < 14. - ;; https://github.com/rust-lang/stdarch/issues/1291 - ;; Partial roll-back from this commit: - ;; https://github.com/rust-lang/stdarch/pull/1271 - (substitute* - "library/stdarch/crates/core_arch/src/riscv_shared/mod.rs" - (("\\.insn i 0x0F, 0, x0, x0, 0x010") ".word 0x0100000F"))))))) - (package-arguments base-rust)))))) - -(define-public rust-1.60 - (rust-bootstrapped-package - ;; Verified that it *doesn't* build with 1.58. e.g.: - ;; * error: unknown codegen option: `symbol-mangling-version` - rust-1.59 "1.60.0" "1drqr0a26x1rb2w3kj0i6abhgbs3jx5qqkrcwbwdlx7n3inq5ji0")) - -(define-public rust-1.61 - (let ((base-rust - (rust-bootstrapped-package - rust-1.60 "1.61.0" "1vfs05hkf9ilk19b2vahqn8l6k17pl9nc1ky9kgspaascx8l62xd"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; Remove vendored dynamically linked libraries. - ;; find . -not -type d -executable -exec file {} \+ | grep ELF - (delete-file "vendor/vte/vim10m_match") - (delete-file "vendor/vte/vim10m_table") - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$"))))))))) - -(define-public rust-1.62 - (rust-bootstrapped-package - rust-1.61 "1.62.1" "0gqkg34ic77dcvsz69qbdng6g3zfhl6hnhx7ha1mjkyrzipvxb3j")) - -(define-public rust-1.63 - (rust-bootstrapped-package - rust-1.62 "1.63.0" "1l4rrbzhxv88pnfq94nbyb9m6lfnjwixma3mwjkmvvs2aqlq158z")) - -(define-public rust-1.64 - (let ((base-rust - (rust-bootstrapped-package - rust-1.63 "1.64.0" "018j720b2n12slp4xk64jc6shkncd46d621qdyzh2a8s3r49zkdk"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; ERROR: could not find native static library - ;; `rustix_outline_powerpc64`, perhaps an -L flag is missing? - ;; Adjust rustix to always build with cc. - (substitute* "src/bootstrap/Cargo.lock" - (("\"errno\",") "\"cc\",\n \"errno\",")) - ;; Add a dependency on the the 'cc' feature of rustix. - (substitute* "vendor/fd-lock/Cargo.toml" - (("\"fs\"") "\"fs\", \"cc\"")) - ;; Remove vendored dynamically linked libraries. - ;; find . -not -type d -executable -exec file {} \+ | grep ELF - (delete-file "vendor/vte/vim10m_match") - (delete-file "vendor/vte/vim10m_table") - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$")))) - (patches (search-patches "rust-1.64-fix-riscv64-bootstrap.patch")) - (patch-flags '("-p1" "--reverse")))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (replace 'patch-cargo-checksums - (lambda _ - (substitute* '("Cargo.lock" - "src/bootstrap/Cargo.lock" - "src/tools/rust-analyzer/Cargo.lock") - (("(checksum = )\".*\"" all name) - (string-append name "\"" ,%cargo-reference-hash "\""))) - (generate-all-checksums "vendor")))))))))) - -(define-public rust-1.65 - (let ((base-rust - (rust-bootstrapped-package - rust-1.64 "1.65.0" "0f005kc0vl7qyy298f443i78ibz71hmmh820726bzskpyrkvna2q"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches '()) - (patch-flags '("-p1"))))))) - -(define-public rust-1.66 - (rust-bootstrapped-package - rust-1.65 "1.66.1" "1fjr94gsicsxd2ypz4zm8aad1zdbiccr7qjfbmq8f8f7jhx96g2v")) - -(define-public rust-1.67 - (let ((base-rust - (rust-bootstrapped-package - rust-1.66 "1.67.1" "0vpzv6rm3w1wbni17ryvcw83k5klhghklylfdza3nnp8blz3sj26"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; Adjust rustix to always build with cc. - (substitute* '("Cargo.lock" - "src/bootstrap/Cargo.lock") - (("\"errno\",") "\"cc\",\n \"errno\",")) - ;; Add a dependency on the the 'cc' feature of rustix. - (substitute* "vendor/fd-lock/Cargo.toml" - (("\"fs\"") "\"fs\", \"cc\"")) - (substitute* "vendor/is-terminal/Cargo.toml" - (("\"termios\"") "\"termios\", \"cc\"")) - ;; Remove vendored dynamically linked libraries. - ;; find . -not -type d -executable -exec file {} \+ | grep ELF - (delete-file "vendor/vte/vim10m_match") - (delete-file "vendor/vte/vim10m_table") - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$")))))) - (inputs (modify-inputs (package-inputs base-rust) - (replace "llvm" llvm-15)))))) - -(define-public rust-1.68 - (rust-bootstrapped-package - rust-1.67 "1.68.2" "15ifyd5jj8rd979dkakp887hgmhndr68pqaqvd2hqkfdywirqcwk")) - -(define-public rust-1.69 - (let ((base-rust - (rust-bootstrapped-package - rust-1.68 "1.69.0" - "03zn7kx5bi5mdfsqfccj4h8gd6abm7spj0kjsfxwlv5dcwc9f1gv"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; Adjust rustix to always build with cc. - (substitute* '("Cargo.lock" - "src/bootstrap/Cargo.lock") - (("\"errno\",") "\"cc\",\n \"errno\",")) - ;; Add a dependency on the the 'cc' feature of rustix. - (substitute* "vendor/fd-lock/Cargo.toml" - (("\"fs\"") "\"fs\", \"cc\"")) - (substitute* "vendor/is-terminal/Cargo.toml" - (("\"termios\"") "\"termios\", \"cc\"")) - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$"))))))))) - -(define-public rust-1.70 - (let ((base-rust - (rust-bootstrapped-package - rust-1.69 "1.70.0" - "0z6j7d0ni0rmfznv0w3mrf882m11kyh51g2bxkj40l3s1c0axgxj"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; Adjust rustix to always build with cc. - (substitute* "Cargo.lock" - (("\"errno\",") "\"cc\",\n \"errno\",")) - ;; Add a dependency on the the 'cc' feature of rustix. - (substitute* '("vendor/is-terminal/Cargo.toml" - "vendor/is-terminal-0.4.4/Cargo.toml") - (("\"termios\"") "\"termios\", \"cc\"")) - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$")))) - ;; Rust 1.70 adds the rustix library which depends on the vendored - ;; fd-lock crate. The fd-lock crate uses Outline assembly which expects - ;; a precompiled static library. Enabling the "cc" feature tells the - ;; build.rs script to compile the assembly files instead of searching - ;; for a precompiled library. - (patches (search-patches "rust-1.70-fix-rustix-build.patch"))))))) - -(define-public rust-1.71 - (let ((base-rust - (rust-bootstrapped-package - rust-1.70 "1.71.1" "0bj79syjap1kgpg9pc0r4jxc0zkxwm6phjf3digsfafms580vabg"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; Adjust rustix to always build with cc. - (substitute* '("Cargo.lock" - "src/tools/cargo/Cargo.lock") - (("\"errno\",") "\"cc\",\n \"errno\",")) - ;; Add a dependency on the the 'cc' feature of rustix. - (substitute* '("vendor/is-terminal/Cargo.toml" - "vendor/is-terminal-0.4.6/Cargo.toml") - (("\"termios\"") "\"termios\", \"cc\"")) - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$")))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (replace 'patch-cargo-checksums - (lambda _ - (substitute* (cons* "Cargo.lock" - "src/bootstrap/Cargo.lock" - (find-files "src/tools" "Cargo.lock")) - (("(checksum = )\".*\"" all name) - (string-append name "\"" ,%cargo-reference-hash "\""))) - (generate-all-checksums "vendor")))))))))) - -(define-public rust-1.72 - (let ((base-rust - (rust-bootstrapped-package - rust-1.71 "1.72.1" "15gqd1jzhnc16a7gjmav4x1v83jjbzyjh1gvcdfvpkajd9gq8j3z"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; Remove vendored dynamically linked libraries. - ;; find . -not -type d -executable -exec file {} \+ | grep ELF - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$")) - ;; Adjust some crates to explicitly use rustix with the libc backend. - (substitute* '("vendor/is-terminal/Cargo.toml" - "vendor/is-terminal-0.4.7/Cargo.toml") - (("\"termios\"") "\"termios\", \"use-libc\"")) - (substitute* "compiler/rustc_driver/Cargo.toml" - (("rustix = \"=0.37.11\"") - (string-append "rustix = { version = \"=0.37.11\"," - " features = [\"use-libc\"] }")))))))))) - -(define-public rust-1.73 - (let ((base-rust (rust-bootstrapped-package rust-1.72 "1.73.0" - "0fmvn7vg3qg9xprgfwv10g3ygy8i4j4bkcxcr1xdy89d3xnjxmln"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; Remove vendored dynamically linked libraries. - ;; find . -not -type d -executable -exec file {} \+ | grep ELF - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$")) - ;; Adjust vendored dependency to explicitly use rustix with libc backend. - (substitute* "vendor/tempfile-3.6.0/Cargo.toml" - (("features = \\[\"fs\"" all) - (string-append all ", \"use-libc\"")))))))))) - -(define-public rust-1.74 - (let ((base-rust (rust-bootstrapped-package rust-1.73 "1.74.1" - "07930r17dkj3dnsrmilywb6p9i2g2jx56ndfpa2wh8crzhi3xnv7"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet - '(begin - (for-each delete-file-recursively - '("src/llvm-project" - "vendor/openssl-src/openssl" - "vendor/tikv-jemalloc-sys/jemalloc")) - ;; Remove vendored dynamically linked libraries. - ;; find . -not -type d -executable -exec file {} \+ | grep ELF - ;; Also remove the bundled (mostly Windows) libraries. - (for-each delete-file - (find-files "vendor" "\\.(a|dll|exe|lib)$")) - ;; Adjust vendored dependency to explicitly use rustix with libc backend. - (substitute* "vendor/tempfile/Cargo.toml" - (("features = \\[\"fs\"" all) - (string-append all ", \"use-libc\""))))))) - (arguments - (if (target-riscv64?) - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - ;; This phase is no longer needed. - (delete 'revert-riscv-pause-instruction)))) - (package-arguments base-rust)))))) - -(define-public rust-1.75 - (let ((base-rust (rust-bootstrapped-package rust-1.74 "1.75.0" - "1260mf3066ki6y55pvr35lnf54am6z96a3ap3hniwd4xpi2rywsv"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches '())))))) - (define-public rust-1.76 (let ((base-rust (rust-bootstrapped-package rust-1.75 "1.76.0" "08f06shp6l72qrv5fwg1is7yzr6kwj8av0l9h5k243bz781zyp4y")))