From patchwork Fri Mar 20 16:11:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marius Bakke X-Patchwork-Id: 20793 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 8EBF827BBEA; Fri, 20 Mar 2020 16:13:15 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, FREEMAIL_FROM,MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id BC47627BBE4 for ; Fri, 20 Mar 2020 16:13:14 +0000 (GMT) Received: from localhost ([::1]:55512 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jFKGo-0001FT-6y for patchwork@mira.cbaines.net; Fri, 20 Mar 2020 12:13:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42426) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jFKGf-0001Ds-4c for guix-patches@gnu.org; Fri, 20 Mar 2020 12:13:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jFKGc-0004sq-Ac for guix-patches@gnu.org; Fri, 20 Mar 2020 12:13:05 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:39440) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jFKGc-0004sS-1O for guix-patches@gnu.org; Fri, 20 Mar 2020 12:13:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jFKGb-0006GC-RU for guix-patches@gnu.org; Fri, 20 Mar 2020 12:13:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#38110] [PATCH core-updates v3] gnu: rust: Bootstrap rust@1.29.0 by mrustc@0.9. Resent-From: Marius Bakke Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 20 Mar 2020 16:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38110 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Danny Milosavljevic , 38110@debbugs.gnu.org Cc: Danny Milosavljevic Received: via spool by 38110-submit@debbugs.gnu.org id=B38110.158472073323998 (code B ref 38110); Fri, 20 Mar 2020 16:13:01 +0000 Received: (at 38110) by debbugs.gnu.org; 20 Mar 2020 16:12:13 +0000 Received: from localhost ([127.0.0.1]:45413 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFKFl-0006Ew-Fw for submit@debbugs.gnu.org; Fri, 20 Mar 2020 12:12:12 -0400 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:59087) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jFKFf-0006EM-OK for 38110@debbugs.gnu.org; Fri, 20 Mar 2020 12:12:07 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 53FD35C0111; Fri, 20 Mar 2020 12:11:58 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Fri, 20 Mar 2020 12:11:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm2; bh=KsryX2GrMSk0F6DhojvC3sGBqW Hlg/WoNTHPISXSk4w=; b=CMyZmheeFeN8RrHe92IJ58UmDEFbl119g7kSDohqaM v9hEdbH0XqwYrWqFVVJOFh4IElEpYRWF5xkdx6fCAstqFcT0VHGYANZjzwGrtvbi ukX21xUhBOpzPgyyEGpYp61+XojoFV7kErXgJ/nQqRJX14sTn9n8Yre9iO43s6s7 iswjp0ak0+GQiwS/l89CmXvcZdSM1zIokz/Xx+I43kE7Mspd1L/ytOOzE/BX2iDh jbwgQrItUwHHjC9JoavSL9TeoVo3qrX04cxcZzVsClM0CnHR+2SNY3utLExVRHM1 o/Atumh+uAwtE8tps52uy62m3rFOhDpNS3s+6GyEv3dw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=KsryX2 GrMSk0F6DhojvC3sGBqWHlg/WoNTHPISXSk4w=; b=W7TSVoLy/bOP/USIV+GVPj 7DQgLuremS7fbIkqqTuVeDDSbId3ycXfYm5O2spuya2yF35QqI2MkkbxHtGvW9zg IBvsZ32FRXbYK9c4HUShH4G/NvsYOdFOcdLbIc+YzSGJD6ei6gp9+yKDebUnISc9 WIUhx8o8DHG/+azJMynHKgHiy5A+kv9B+mOQHM6bW18hMG+ge00XxvSbUKI8Jj2S TmBYqO/zvoeA66Gnodl2bB5b0bgCLv+NR/XdnzL7Cr9/oi9sO1EYEdMTm0ty+RjE jYTTkoPHEhSe9WzGLXnNezZ0z9jjEWf38jxcyQj7uAchUWnVJHL7Sg+jPWDtxPKw == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedugedrudeguddgkeehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufgjfhgffffkgggtsehgtderredtredtnecuhfhrohhmpeforghrihhu shcuuegrkhhkvgcuoehmsggrkhhkvgesfhgrshhtmhgrihhlrdgtohhmqeenucfkphepke egrddvtddvrdeikedrjeehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehm rghilhhfrhhomhepmhgsrghkkhgvsehfrghsthhmrghilhdrtghomh X-ME-Proxy: Received: from localhost (ti0006q161-2604.bb.online.no [84.202.68.75]) by mail.messagingengine.com (Postfix) with ESMTPA id 7777D3280063; Fri, 20 Mar 2020 12:11:57 -0400 (EDT) From: Marius Bakke In-Reply-To: <20200315192311.6505-1-dannym@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20200315192311.6505-1-dannym@scratchpost.org> User-Agent: Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu) Date: Fri, 20 Mar 2020 17:11:55 +0100 Message-ID: <877dzf9fas.fsf@devup.no> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 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" X-getmail-retrieved-from-mailbox: Patches Danny Milosavljevic writes: > * gnu/packages/patches/rustc-1.29.0-src.patch: New file. > * gnu/local.mk (dist_patch_DATA): Add it. > * gnu/packages/rust.scm (rust-1.19): Delete variable. > (rust-1.20): Delete variable. > (rust-1.21): Delete variable. > (rust-1.22): Delete variable. > (rust-1.23): Delete variable. > (rust-1.24): Delete variable. > (rust-1.25): Delete variable. > (rust-1.26): Delete variable. > (rust-1.27): Delete variable. > (rust-1.28): Delete variable. > (rust-1.29): Bootstrap from mrustc. > [source]: Add patch. > (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. > (mrustc): Update rustc-version to 1.29.0. Thanks a lot for this work Danny! I was able to get one step further by hacking the mrustc compiler to force "group linking" with --start-group and --end-group, based on a suggestion in #mrustc. It makes the compiler about 10x slower, but I suppose that's okay for a one-time job. Now the build fails when trying to use the built rustc binary, and I'm struggling to figure out how to proceed. I think we are pretty close! I've attached my changes as a diff here. Some of the changes are purely cosmetic, feel free to pick-and-choose what you want/need. Without further ado... 2 files changed, 26 insertions(+), 5 deletions(-) gnu/packages/patches/mrustc-group-link.patch | 22 ++++++++++++++++++++++ gnu/packages/rust.scm | 9 ++++----- new file gnu/packages/patches/mrustc-group-link.patch @@ -0,0 +1,22 @@ +Surround the libraries with --start-group and --end-group to work +around . + +diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp +--- a/src/trans/codegen_c.cpp ++++ b/src/trans/codegen_c.cpp +@@ -960,6 +960,7 @@ namespace { + { + args.push_back("-L"); args.push_back(path); + } ++ args.push_back("-Wl,--start-group"); + for(const auto& lib : m_crate.m_ext_libs) { + ASSERT_BUG(Span(), lib.name != "", ""); + args.push_back("-l"); args.push_back(lib.name.c_str()); +@@ -975,6 +976,7 @@ namespace { + { + args.push_back("-l"); args.push_back(path.c_str()); + } ++ args.push_back("-Wl,--end-group"); + for( const auto& a : Target_GetCurSpec().m_backend_c.m_linker_opts ) + { + args.push_back( a.c_str() ); modified gnu/packages/rust.scm @@ -98,6 +98,7 @@ (url "https://github.com/thepowersgang/mrustc.git") (commit (string-append "v" version)))) (file-name (git-file-name name version)) + (patches (search-patches "mrustc-group-link.patch")) (sha256 (base32 "194ny7vsks5ygiw7d8yxjmp1qwigd71ilchis6xjl6bb2sj97rd2")))) @@ -128,10 +129,8 @@ (add-after 'patch-date 'unpack-target-compiler (lambda* (#:key inputs outputs #:allow-other-keys) (invoke "tar" "xf" (assoc-ref inputs "rustc")) - (chdir ,(string-append "rustc-" rustc-version "-src")) - (invoke "patch" "-p0" ,(string-append "../rustc-" rustc-version + (invoke "patch" "-p1" ,(string-append "rustc-" rustc-version "-src.patch")) - (chdir "..") (setenv "RUSTC_VERSION" ,rustc-version) (setenv "MRUSTC_TARGET_VER" ,(version-major+minor rustc-version)) @@ -274,7 +273,7 @@ safety and thread safety guarantees.") #t)) ;; This phase is overridden by newer versions. (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda _ (setenv "CXX" "g++") (setenv "HOST_CXX" "g++") #t)) @@ -326,7 +325,7 @@ safety and thread safety guarantees.") (write name) (newline) (apply invoke - "output/rustc-build/rustc" + "output/rustc-build/rustc_binary" "-C" (string-append "linker=" (getenv "CC")) ;; Required for libterm. [back]